【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

状态压缩动规。
可以写成记忆化搜索的形式。
f[bit][p]
表示选取的菜的情况为bit(用0..2^(N)-1的二进制形式表示各个菜有没有选
然后上一道菜选的是第p道菜,剩下的菜选够m道的话能够获得的最大满意度.
显然这两个状态能够唯一确定接下来的的最大满意度。
且接下来如果再遇到这个状态,就不用重新算了。直接返回上次的答案就好
(这就是记忆化搜索的思想。
转移的时候,通过上一次的选择和这一次的选择。
把转移时产生的额外满意度加上就好。

【代码】

  1. #include <bits/stdc++.h>
  2. #define ll long long
  3. using namespace std;
  4. const int N = 18;
  5. ll f[(1<<N)+10][N+10];
  6. int n,m,k,a[N+10];
  7. int inc[N+10][N+10];
  8. ll dfs(int bit,int pre,int tot){
  9. ll &cur = f[bit][pre];
  10. if (cur!=-1){
  11. return cur;
  12. }
  13. if (tot==m+1){
  14. return 0;
  15. }
  16. for (int i = 1;i <= n;i++){
  17. if (bit&(1<<(i-1))) continue;
  18. cur = max(cur,dfs(bit|(1<<(i-1)),i,tot+1)+a[i]+inc[pre][i]);
  19. }
  20. return cur;
  21. }
  22. int main()
  23. {
  24. #ifdef LOCAL_DEFINE
  25. freopen("rush.txt","r",stdin);
  26. #endif // LOCAL_DEFINE
  27. ios::sync_with_stdio(0),cin.tie(0);
  28. cin >> n >> m >> k;
  29. for (int i = 1;i <= n;i++) cin >> a[i];
  30. for (int i = 1;i <= k;i++){
  31. int x,y,z;
  32. cin >> x >> y >> z;
  33. inc[x][y] = z;
  34. }
  35. memset(f,255,sizeof f);
  36. cout <<dfs(0,0,1)<<endl;
  37. return 0;
  38. }

【Henu ACM Round#14 D】Kefa and Dishes的更多相关文章

  1. 【Henu ACM Round#14 E】Kefa and Watch

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 在做之前需要了解一个知识点. 就是如果一个字符串s是一个a循环串. (字符串的长度设为n,下标从1开始 那么s[1..n-a]和s[ ...

  2. 【Henu ACM Round#14 F】 President and Roads

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 处理出起点到任意点的最短路以及最短路条数=>dis[0][i],cnt[0][i] 然后 把所有的边反向 处理出在反图上终点到 ...

  3. 【Henu ACM Round#14 C】Duff and Weight Lifting

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 2^y可以由两个2^(y-1)相加得到. 则有一个贪心的策略. 就是2^x尽量都变成2^(x+1) (即能够凑就尽量凑) 如果x还有 ...

  4. 【Henu ACM Round#14 B】Duff in Love

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 让你在n的因子里面找一个最大的数字x 且x的因子全都不是完全平方数(y^2,y>1) O(sqrt(n))找出n的所有因子. ...

  5. 【Henu ACM Round#14 A】Vitaly and Night

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 连续两个如果不全是0就递增cnt [代码] #include <bits/stdc++.h> using namespa ...

  6. 【Henu ACM Round#24 E】Connected Components

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 要求把连续的一段li..ri的边全都删掉. 然后求剩下的图的联通数 如果暴力的话 复杂度显然是O(k*m)级别的. 考虑我们把li. ...

  7. 【Henu ACM Round#24 D】Iterated Linear Function

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 把B提取出来就是一个等比数列了. 求和一下会发现是这种形式. \(B*\frac{(A^n-1)}{A-1}+A^n*x\) 则求一 ...

  8. 【Henu ACM Round#24 C】Quiz

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 肯定是这样 先放k-1个,然后空1个,然后再放k-1个.然后再空1个.. 以此类推. 然后如果(n/k)*(k-1)+n%k> ...

  9. 【Henu ACM Round#24 B】Gargari and Bishops

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 如果写过n皇后问题. 肯定都知道 某个点(i,j)和它在同一条对角线上的点分别是i+j的值和i-j的值相同的点. 然后会发现选择的两 ...

随机推荐

  1. leetcode 刷题之路 66 Path Sum II

    Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...

  2. Android之Http通信——1.初识Http协议

    Android之Http通信--1.初识Http协议 引言: 今天是六一儿童节,先在这里给各位超龄儿童说声节日快乐哈~( ╯□╰ ),小猪也象征性地给群里的小朋友们派了红包-嗯,忙碌的五月最终过去了, ...

  3. 实时监控Cat之旅~配置Cat集群需要注意的问题

    在配置cat集群时,有一些设置是我们应该注意的,从它的部署文档中我们可以看到相关信息,但说的还不够明确和重要,大叔今天总结一下Cat集群配置的注意事项 1 服务端datasources.xml用来设置 ...

  4. java9新特性-6-多版本兼容jar包

    1.官方Feature 238: Multi-Release JAR Files 2.使用说明 当一个新版本的Java出现的时候,你的库用户要花费数年时间才会切换到这个新的版本.这就意味着库得去向后兼 ...

  5. 未能加载文件或程序集“MICROSOFT.REPORTVIEWER.WEBFORMS …

    此类问题说明没有安装 REPORT .请下载  ReportViewer.msi 安装包. 和sqlsysclrtypes.msi 两个都是对应版本的安装包. 这样再次启动就不会报错了.

  6. LeetCode(6)ZigZag Conversion

    题目如下: C++代码: #include <iostream> #include <string> using namespace std; class Solution { ...

  7. Mac or windows eclipse配置tomcat

    1.选择window --> Preferences 首选项 2.选择server --> Runtime Environements --> Add 3.选择对应的tomcat版本 ...

  8. 用SAXReader解析xml文档【转】

    来源:http://blog.csdn.net/seayqrain/article/details/5024068 使用SAXReader需要导入dom4j-full.jar包. dom4j是一个Ja ...

  9. 紫书 例题 10-7 UVa 10820 (欧拉函数)

    这道题要找二元组(x, y) 满足1 <= x, y <= n 且x与y互素 那么我就可以假设x < y, 设这时答案为f(n) 那么答案就为2 * f(n) +1(x与y反过来就乘 ...

  10. 紫书 习题 10-15 UVa 12063(数位dp)

    大佬真的强!!https://blog.csdn.net/u014800748/article/details/45225881 #include<cstdio> #include< ...