合并排序再枚举。
题意问五个数组中各抽一个加起来 和是否为 0。
开始想用 200*200*200 和 200*200 比。果然TLE了。
后来知道 得 200*200,200*200 ,200 。
先200*200 的枚举,排序,去重。然后三个元素加起来,微调 两个 200*200 的指针。
这题用 %lld 就WA。得用 %I64d 。贡献N多TLE。N多WA。怒刷存在感。
#include #include #include #include #include #include #include #include #include #include #include #define INF 0x7fffffff #define eps 1e-6 #define LL long long using namespace std; LL num[5][201]; LL sum1[201*201]; LL sum2[201*201]; int main() { // freopen("in.txt","r",stdin); // freopen("2","w",stdout); int t; scanf("%d",&t); while(t--) { int n; scanf("%d",&n); for(int i=0; i<5; i++) for(int j=0; j =0;) { if(sum1[j]+sum2[k]+num[4][i]==0) { flag=1; break; } else if(sum1[j]+sum2[k]+num[4][i]>0) k--; else j++; } } if(flag) puts("Yes"); else puts("No"); } }