点击打开链接

题意: 7个键的劲乐团。给出每个键出现要敲打键盘的时间。

然后再给出K个不能同时按的状态  比如  11110000不能按那么11110100也是不能按的。。

对于单音正确的时间敲到得一分

对于长音开始的时间敲到得一分 ,最后时刻松开再得一分,期间松开的话得不到松开键的分数

求最大可得分数

最主要的是处理长音的松开的那一分。

对于短音标记为1

长音 开始标记为1 期间标记为2  最后标记为-1

如果当前的键是2,且当前按着,上一个状态没有按着 那么 这种状态我们不需要转移。

因为如果上一个状态没按着 当前状态也没有必要按着

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int INF = 1<<12;
const LL p = 99999;
int dp[1234][1<<7],no[1234];
int mp[7][1234],n;
int most[1234];
void input()
{int c;memset(mp,0,sizeof(mp));for(int i=0; i<7; i++) //input{scanf("%d",&c);for(int j=0; j<c; j++){int x,y;char cc;scanf("%d%c",&x,&cc);if(cc!=32&&cc!=10){scanf("%d",&y);mp[i][x]=1;for(int k=x+1; k<y; k++)mp[i][k]=2;mp[i][y]=-1;}else{mp[i][x]=1;}}}most[0]=0;for(int i=1;i<=n;i++){int temp=0;for(int j=0;j<7;j++){if(mp[j][i]>0)temp+=1<<j;}most[i]=temp;//最多需要这样的按键}
}
int main()
{int t,cas=1;scanf("%d",&t);while(t--){scanf("%d",&n);input();memset(no,0,sizeof(no));int q;scanf("%d",&q);while(q--){char s[10];scanf("%s",s);int temp=0;for(int i=0; i<7; i++){if(s[i]=='1')temp+=1<<i;}for(int i=0; i<1<<7; i++){if((temp&i)==temp)no[i]=1;}}memset(dp,0,sizeof(dp));for(int i=1; i<=n; i++){for(int j=0; j<(1<<7); j++)//now{if((j&most[i])!=j) continue;if(no[j]) continue;for(int k=0; k<(1<<7); k++)//last{if((k&most[i-1])!=k) continue;if(no[k]) continue;int ans=0,flag=0;for(int w=0;w<7;w++){if(mp[w][i]==1&&(j&(1<<w)))ans++;else if(mp[w][i]==2&&(j&(1<<w))&&(k&(1<<w))==0)flag=1;else if(mp[w][i]==-1&&(j&(1<<w))==0&&(k&(1<<w)))ans++;}if(!flag){dp[i][j]=max(dp[i][j],dp[i-1][k]+ans);}}}}int out=0;for(int i=0;i<1<<7;i++)out=max(out,dp[n][i]);printf("Case #%d: %d\n",cas++,out);}return 0;
}
/*
*/

【DP】 HDU 3229 Jinyuetuan Puzzle相关推荐

  1. 【DP】HDU 2189 悼念512汶川大地震遇难同胞——来生一起走

    打一个小于150的素数表 为了分成的组的人数不重复用dp[i][j] 表示 i表示i个人 j表示分成的组内的最大素数序号 #include <stdio.h> #include <s ...

  2. 【DP】【期望】$P1850$换教室

    [DP][期望]\(P1850\)换教室 链接 题目描述 有 \(2n\) 节课程安排在$ n$ 个时间段上.在第 \(i\)(\(1 \leq i \leq n\))个时间段上,两节内容相同的课程同 ...

  3. Bailian2760 数字三角形【DP】

    2760:数字三角形 描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 (图1) 图1给出了一个数字三角形.从三角形的顶部到底部有很多条不同的路径.对于每条路径,把路径上面的数加起来可 ...

  4. NUC1131 Triangle【DP】

    Triangle 时间限制: 1000ms 内存限制: 65536KB 通过次数: 1总提交次数: 1 问题描述 图1表示一个数字三角形. 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 ...

  5. LeetCode:完全平方数【279】【DP】

    LeetCode:完全平方数[279][DP] 题目描述 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少. 示 ...

  6. 【DP】序列 题解

    [DP]序列 题解 序列 题目 一个长度为kkk的整数序列bbb 1,bbb 2,-,bkbkbk(1≤bbb 1≤bbb 2≤-≤bkbkbk≤NNN)称为"好序列"当且仅当后一 ...

  7. poj 2411 Mondriaan#39;s Dream 【dp】

    题目:poj 2411 Mondriaan's Dream 题意:给出一个n*m的矩阵,让你用1*2的矩阵铺满,然后问你最多由多少种不同的方案. 分析:这是一个比較经典的题目.网上各种牛B写法一大堆. ...

  8. BestCoder冠军赛 - 1005 Game 【DP】

    [题意] 给出一个set,set中有几个数. 现在给出n个人,环成一圈搞约瑟夫... 开始时从第1号报数,每次从set中随机选出一个数s,等报数到s后,报s的人出圈,其他人继续报数. 最后只剩1人时, ...

  9. 【9.22校内测试】【可持久化并查集(主席树实现)】【DP】【点双联通分量/割点】...

    1 build 1.1 Description 从前有一个王国,里面有n 座城市,一开始两两不连通.现在国王将进行m 次命令,命令可 能有两种,一种是在u 和v 之间修建道路,另一种是询问在第u 次命 ...

最新文章

  1. 2022-2028年中国聚氨酯结构胶行业发展动态分析及投资机会预测报告
  2. str python3_python3 str(字符串)
  3. 用bochs调试自己写的系统引导代码
  4. 比特币交易手续费_投资人跑步进军比特币,OKEx交易手续费最高打6折
  5. android 调试技巧
  6. Java流程控制02 选择结构 if结构 switch结构
  7. python string转int_Python int与string之间的转化
  8. webpack 4.0 中 clean-webpack-plugin 的使用
  9. Linux下用vi 打开文件出现乱码
  10. C#添加二维码带加密带logo
  11. 预定系统 mysql_Jsp+Ssm+Mysql实现的酒店预定管理系统毕设指导思路模板
  12. JAVA课程设计——拼图小游戏
  13. mhdd测试hdd硬盘软件,HDD坏道检测软件比较(DiskGenius/HdTunePro/MHDD等)
  14. linux eqep驱动框架,AM3352 数据表, 产品信息与支持 | TI.com.cn
  15. 查看计算机当前用户的sid,查看SID
  16. python新打包工具,最好用的版本之一,不接受反驳
  17. 算法笔记习题 7-1小节
  18. WEB浏览器视频流播放方案
  19. 小程序正则验证 身份证号、统一社会信用代码
  20. JZOJ3426. 封印一击

热门文章

  1. yii2 advanced rbac 权限管理
  2. 盛大退市背后的故事:华尔街不懂陈天桥
  3. java计算机毕业设计绿叶有限公司工资管理信息系统源码+系统+mysql数据库+lw文档
  4. 中国军工产业发展规划及前景战略研究报告2021-2027年
  5. 5G+智慧灯杆发展生态峰会闭幕,专家精彩观点汇总
  6. SVG 入门指南(初学者入门必备)
  7. 虚拟机命令里面的光标不动了怎么办_Linux 中实用但很小众的 11 个炫酷终端命令...
  8. gerrit 邮箱配置 及 验证问题
  9. 智能型手机中的音频设计(转)
  10. 5G商用大幕拉开 下一个风口:行业新应用、新业务或新商业模式?