题解 P2392 【kkksc03考前临时抱佛脚】
蒟蒻学不来DP所以第一反应是搜索……
看了一下数据范围
20?emmm
于是放心大胆地2^n枚举了
枚举每道题交给哪边的脑子解决,找到两边时间较大值的最小值
于是愉快地解决了……剪枝都不用放
#include<bits/stdc++.h>
using namespace std;
int Left,Right,minn,ans;
int s[5];
int a[21][5];
void search(int x,int y){
if(x>s[y]){
minn=min(minn,max(Left,Right));
return;
}
Left+=a[x][y];
search(x+1,y);
Left-=a[x][y];
Right+=a[x][y];
search(x+1,y);
Right-=a[x][y];//毫无技巧的搜索回溯
}
int main(){
cin>>s[1]>>s[2]>>s[3]>>s[4];
for(int i=1;i<=4;i++){//减少码量
Left=Right=0;
minn=19260817;
for(int j=1;j<=s[i];j++)
cin>>a[j][i];
search(1,i);
ans+=minn;
}
cout<<ans;
return 0;
}