【CodeForces - 580D】Kefa and Dishes (状压dp)

题干:

kefa进入了一家餐厅,这家餐厅中有n个菜(0<n≤18),kefa对第i个菜的满意度为ai(0≤ai≤10^9),并且对于这n个菜有k个规则,如果kefa在吃完第xi个菜之后吃了第yi个菜(保证xi、yi不相等),那么会额外获得ci(0≤ci≤10^9)的满意度。kefa要吃m道任意的菜(0<m≤n),但是他希望自己吃菜的顺序得到的满意度最大,请你帮帮kefa吧! 
输入第一行是三个数:n,m,k 
第二行是n个数,第i个数表示kefa对第i道菜的满意度为ai 
第三行到第k+2行每行有3个数:xi,yi,ci,表示如果kefa在吃完第xi道菜之后立刻吃了第yi道菜,则会额外获得ci的满意度

Examples

Input

2 2 1
1 1
2 1 1

Output

3

Input

4 3 2
1 2 3 4
2 1 5
3 4 2

Output

12

Note

样例1中,按照2,1的顺序,可以额外获得1点满意度。 
样例2中,按4,2,1或者2,1,4,都可以额外获得5点满意度。

 

解题报告:

   dp[i][j],i代表已经吃过了哪些菜,j代表最后吃的是哪个菜,然后更新判断就好了。

AC代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
ll dp[1<<18][20];
ll a[20],val[20][20];
ll n,m,k;
bool ok(ll x) {int res = 0;for(ll i = 1; i<=(1<<n); i<<=1) {if(i & x) res++;}if(res == m) return 1;else return 0;
}
int main()
{ll u,v;scanf("%lld%lld%lld",&n,&m,&k);for(int i = 1; i<=n; i++) {scanf("%lld",a+i);}for(int i = 1; i<=k; i++) {scanf("%lld%lld",&u,&v);scanf("%lld",&val[u][v]);}memset(dp,-1,sizeof dp);for(int i = 1; i<=n; i++) {dp[(1<<i-1)][i] = a[i];}for(int bit = 0; bit<=(1<<n)-1; bit++) {for(int i = 1; i<=n; i++) {if(dp[bit][i] == -1) continue;for(int j = 1; j<=n; j++) {if(i != j && (bit&(1<<(j-1))) ==0) {dp[bit|(1<<(j-1))][j] = max(dp[bit][i] + a[j] + val[i][j],dp[bit|(1<<(j-1))][j]);}}}}ll maxx = 0;for(int bit = 0; bit<=(1<<n)-1; bit++) {if(ok(bit)) {for(int i = 1; i<=n; i++) {maxx = max(maxx,dp[bit][i]);}}}printf("%lld\n",maxx);return 0 ;
}

总结:还是太菜了、、、、and  这种东西位运算啥的包装成函数最好。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/441637.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用linux内核编译独立系统,编译linux内核以及depmod的使用

转载&#xff1a;http://blog.lmtw.com/b/18215/archives/2010/71074.htmldepmod(depend module)功能说明&#xff1a;分析可载入模块的相依性。语  法&#xff1a;depmod [-b basedir] [-e] [-F System.map] [-n] [-v] [version] [-A]depmod [-e] [-FSystem.map] [-…

【CodeForces - 569C】Primes or Palindromes? (思维,分析范围,暴力枚举判断)

题干&#xff1a; Rikhail Mubinchik believes that the current definition of prime numbers is obsolete as they are too complex and unpredictable. A palindromic number is another matter. It is aesthetically pleasing, and it has a number of remarkable propert…

Linux中软件安装使用的命令是,Linux软件安装命令

1.tartar命令用于把多个文件合并于一个档案文件中,并提供分解的合并后的档案文件的功能.它独立于压缩工具,因此可以选择在合并前是否压缩.tar命令的基本用法为:tar[选项]文件名常用的选项包括-c创建一个新的档案文件-t查看档案文件的内容-x分解档案文件的内容-f指定档案文件的名…

linux data文件如何打开,DATA 文件扩展名: 它是什么以及如何打开它?

DATA 问题的来源常见的 DATA 打开问题Microsoft Excel 消失如果您尝试加载 DATA 文件&#xff0c;则会收到 “无法打开 DATA 文件” 等消息。 通常情况下&#xff0c;这意味着 Microsoft Excel 没有安装在 %%os%% 上。 通过双击打开 DATA 的典型路径将不起作用&#xff0c;因为…

【CodeForces - 574D】Bear and Blocks (dp,思维)

题干&#xff1a; Limak is a little bear who loves to play. Today he is playing by destroying block towers. He built n towers in a row. The i-th tower is made of hi identical blocks. For clarification see picture for the first sample. Limak will repeat th…

linux 编译文件mm,Linux编译C++文件,说没有找到头文件,怎么啊?新手,不太会用...

源程序&#xff1a;#include int main (int argc,char**argv){cout<return 0;}终端命令&#xff1a;zhaoweizhaowei-desktop:~$ g -c hello.cpphello.cpp:1:22: error: iostream.h: No such file or directoryhello.cpp: In function ‘int main(int, char**)’:hello.cpp:4…

【CodeForces - 574B】Bear and Three Musketeers (枚举边,思维,优秀暴力)

题干&#xff1a; Do you know a story about the three musketeers? Anyway, you will learn about its origins now. Richelimakieu is a cardinal in the city of Bearis. He is tired of dealing with crime by himself. He needs three brave warriors to help him to …

linux下apache配置文件测试,重启 Apache 服务器及测试配置

在 CentOS / RHEL / Fedora Linux 服务器上安装的 Apache 网页服务器程序在系统中的进程名称为 httpd。每次更改 Apache 服务器的配置&#xff0c;不管是 httpd.conf 还是 vhost.conf 或者自己配置的什么 .conf&#xff0c;只要有改动都需要重新加载配置或者重启 httpd 服务才能…

【CodeForces - 574C】Bear and Poker(思维,剪枝,数学)

题干&#xff1a; Limak is an old brown bear. He often plays poker with his friends. Today they went to a casino. There are n players (including Limak himself) and right now all of them have bids on the table. i-th of them has bid with size ai dollars. Ea…

linux变量赋值取值,linuxshell编程对变量的赋值

linux shell编程对变量的赋值shell对变量的赋值&#xff0c;所有的变量都是由字符串组成&#xff0c;不需要对变量名预先声明&#xff0c;而且有很多关键字供编程者使用。下面列举例子详细说明。 在终端下建立文件 #vi s2.sh#!/bin/sh#set a variable aa"hello world"…

*【CodeForces - 574A】Bear and Elections (优先队列,水题模拟)

题干&#xff1a; Limak is a grizzly bear who desires power and adoration. He wants to win in upcoming elections and rule over the Bearland. There are n candidates, including Limak. We know how many citizens are going to vote for each candidate. Now i-th …

stm32linux区别,STM32MPU和OpenSTLinux你了解多少?

早在2019年年初的时候&#xff0c;ST就发布了首款STM32MPU&#xff1a;STM32MP1。 STM32MP1通用微处理器产品系列&#xff0c;系基于混合的 双Arm Cortex-A7核 和 Cortex-M4核架构产品。 一、支持STM32MPU 生态系统熟悉 Cortex-M4 MCU 环境的开发人员能轻松实现他们的目标&…

算法总结 -- 博弈论(PN图)

博弈论&#xff1a;组合博弈 * 必败点(P点) :前一个选手(Previous player)将取胜的位置称为必败点。 * 必胜点(N点) :下一个选手(Next player)将取胜的位置称为必胜点。 * 必败&#xff08;必胜&#xff09;点的属性&#xff1a;* (1) 所有终结点是必败点&#xff08;P点&#…

linux安全模式改文件,嵌入式Linux的安全模式设计 - 嵌入式操作系统 - 电子发烧友网...

本系统的架构如下图&#xff1a;产品所使用的flash总大小为16M。系统包括三大部分&#xff0c;即Bootloader&#xff0c;config, kernel rootfs&#xff1a;另外&#xff0c;/dev/mtdblock/0&#xff0c;在系统中对应整个flash block&#xff0c;即整个16M空间。系统启动时&am…

【POJ - 1661】Help Jimmy(记忆化搜索,dp)

题干&#xff1a; Help Jimmy" 是在下图所示的场景上完成的游戏。 场景中包括多个长度和高度各不相同的平台。地面是最低的平台&#xff0c;高度为零&#xff0c;长度无限。 Jimmy老鼠在时刻0从高于所有平台的某处开始下落&#xff0c;它的下落速度始终为1米/秒。当Jim…

c语言linux消息机制,linux消息机制的过程是什么啊,请赐教

LINUX的安装过程很简单,按照它的提示进行就可以了.重点就是分区那里.通常我们使用双系统,那样我们在LINUX分区的时候不要把WIN分区跟格掉就好,然后要记得分一个SWAP分区,然后根据您的需要进行相应的分区,比如/HOME,/USR,/VAR等等.下面介绍一下具体操作步骤&#xff1a;假定用户…

ACM与Java -- 大整数类的常用函数一览表

BigInteger abs() 此方法返回一个BigInteger&#xff0c;其值是此BigInteger的绝对值。2BigInteger add(BigInteger val) 此方法返回一个BigInteger&#xff0c;其值是(this val).3BigInteger and(BigInteger val) 此方法返回一个BigInteger&#xff0c;其值是 (this & v…

linux虚拟机上安装域名,虚拟机如何安装linux系统

虚拟机如何安装linux系统&#xff1f;安装linux系统首先要在电脑上安装好虚拟机&#xff0c;然后逐步进行linux系统安装。大致介绍下安装的流程。1.首先打开虚拟机软件,点击文件/新建虚拟机&#xff0c;用户可以按照默认选择&#xff0c;然后点击下一步。2.在浏览里&#xff0c…

想打ACM?想刷题?来这些online judge!

原文地址&#xff1a;https://blog.csdn.net/tigerisland45/article/details/52134189

基于arm下的Linux控制,基于ARMuCLinux的网络控制系统设计与实现

引言 随着网络和通信技术的发展&#xff0c;嵌入式系统现已进入高速发展阶段。并在社会各个领域得到了广泛的应用。本文介绍了一种采用ARMuCLinux作为开发平台。实现基于TCP&#xff0f;IP的远程系统监控&#xff0e;从而取代传统单片机来实现数据采集、预处理和通信功能&am…