Double Elimination CodeForces - 1314B dp
//f[i,j,f1,f2] //f1 和 f2 都是01数 //1表示剩下的人是喜欢的 //从j开始,长度为2^i个人,胜者组为f1,败者组为f2 #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int maxn = ((1<<17)+1000); int n,k,fans[maxn]; int dp[18][maxn][2][2]; //初始化 void init() { for(int i=0; i<18; i++) { for(int j=0; j<maxn; j++) { for(int k=0; k<2; k++) { for(int z=0; z<2; z++) { dp[i][j][k][z]=-1e9; } } } } } int main() { init(); cin>>n>>k; for(int i=0; i<k; i++) { int x; cin>>x; fans[x-1]=1; } //枚举i for(int i=1; i<=n; i++) { //枚举人 区间长度 for(int j=0; j<(1<<n); j+=(1<<i)) { //等于1,也就是初始化的时候 if(i==1) { /