Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
34028 liuyile 【S】T3 C++ 通过 100 715 MS 2696 KB 2564 2024-11-01 18:55:25

Tests(20/20):


#include<bits/stdc++.h> using namespace std; #define int long long #define endl "\n" int k; int b[30]; int a[17]; int f[31][10][10][10][10]; signed main(){ ios::sync_with_stdio(0); cin.tie(0),cout.tie(0); // freopen("genshin.in","r",stdin); // freopen("genshin.out","w",stdout); int t; cin>>t; while(t--){ cin>>k; memset(b,0,sizeof(b)); memset(a,0,sizeof(a)); for(int i=1;i<(1<<k);i++)cin>>a[i]; for(int i=0;i<k;i++)cin>>b[i]; memset(f,-0x3f,sizeof(f)); f[30][0][0][0][0]=0; for(int i=29;i>=0;i--){ for(int a0=0;a0<=4;a0++) for(int a1=0;a1<=4;a1++) for(int a2=0;a2<=4;a2++) for(int a3=0;a3<=4;a3++){ int x=f[i][a0<<1|((b[0]>>i)&1)][a1<<1|((b[1]>>i)&1)][a2<<1|((b[2]>>i)&1)][a3<<1|((b[3]>>i)&1)]=max((int)-4e18,f[i+1][a0][a1][a2][a3]<<1); // if(x>=0){ // cout<<i<<endl; // cout<<a0<<" "<<a1<<" "<<a2<<" "<<a3<<endl; // cout<<(a0<<1|((b[0]>>i)&1))<<" "<<(a1<<1|((b[1]>>i)&1))<<" "<<(a2<<1|((b[2]>>i)&1))<<" "<<(a3<<1|((b[3]>>i)&1))<<endl; // cout<<f[i+1][a0][a1][a2][a3]<<endl; // cout<<x<<endl; // cout<<endl; // } } for(int p=1;p<=15;p++){ for(int a0=0;a0<=9;a0++) for(int a1=0;a1<=9;a1++) for(int a2=0;a2<=9;a2++) for(int a3=0;a3<=9;a3++)if(f[i][a0][a1][a2][a3]>=0){ int c0=a0-((p>>0)&1); int c1=a1-((p>>1)&1); int c2=a2-((p>>2)&1); int c3=a3-((p>>3)&1); // cout<<i<<" "<<a0<<" "<<a1<<" "<<a2<<" "<<a3<<" "<<f[i][a0][a1][a2][a3]<<endl; if(c0>=0&&c1>=0&&c2>=0&&c3>=0){ f[i][c0][c1][c2][c3]=max(f[i][c0][c1][c2][c3],f[i][a0][a1][a2][a3]+a[p]); // if(f[i][c0][c1][c2][c3]==1){ // cout<<i<<" "<<f[i][a0][a1][a2][a3]<<endl; // cout<<a0<<" "<<a1<<" "<<a2<<" "<<a3<<endl; // cout<<c0<<" "<<c1<<" "<<c2<<" "<<c3<<endl; // } } } } } cout<<f[0][0][0][0][0]<<endl; } cout.flush(); return 0; }


测评信息: