本文共 669 字,大约阅读时间需要 2 分钟。
做了很久的题 有注释
#include #include #include #include #include using namespace std;int dp[107][107][107];///二维记录上一次 三维记录此次///dp[i][k][j]=max(dp[i][k][j],dp[i-1][t][k])+num[j]; t为枚举数且满足与 k j 的条件///初始化can num数组减少时间///如果不使用can数组来记录 memset都会超时int can[107];int num[107];int n,m;int c[107];char s[107];bool ok(int x){ if(x&(x<<1)) return false; if(x&(x<<2)) return false; return true;}int main(){while(~scanf("%d%d",&n,&m)){ for(int i=0;i 0) { if(x&1)num[w]++; x>>=1; } w++; } } for(int i=0;i
转载于:https://www.cnblogs.com/rayrayrainrain/p/5406604.html