【DP】 HDU 3229 Jinyuetuan Puzzle

点击打开链接

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

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

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

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

求最大可得分数


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

对于短音标记为1  

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

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

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

#include 
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; j0)
                temp+=1<


你可能感兴趣的:(DP)