csp预习day2

张开发
2026/4/3 18:52:09 15 分钟阅读
csp预习day2
set#includebits/stdc.h using namespace std; int main(){ // ios::sync_with_stdio(0); // cin.tie(0); // cout.tie(0); int n,m; //值域、询问个数 scanf(%d%d,n,m); int set[n1]; //大小为n的随机序列 for (int i 1; i n; i) { scanf(%d,set[i]); } vectorvectorint s(m); vectorvectorint t(m); for (int i 0; i m; i) //先输入s,数字-1的含义是随机序列的下标 { int temp; //每个集合的大小 scanf(%d,temp); s[i].resize(temp); //必须重新分配空间 for (int j 0; j temp; j) { scanf(%d,s[i][j]); } } for (int i 0; i m; i) //再输入t { int temp; scanf(%d,temp); t[i].resize(temp); for (int j 0; j temp; j) { scanf(%d,t[i][j]); } } for(int i0;im;i) //对比m次询问 { int cr,tr; //标准答案和认为正确的答案 int sls[i].size(), tlt[i].size(); //先判断集合大小再看内部元素 if(s[i] t[i]) { cr1; } else{ cr0; } int fsset[s[i][0]],ftset[t[i][0]]; for(int j1;jsl;j){ fs ^set[s[i][j]]; } for(int j1;jtl;j){ ft ^set[t[i][j]]; } //认为正确的答案 if(fsft) tr1; else tr0; if(crtr) printf(correct\n); else printf(wrong\n); } return 0; }transform#includebits/stdc.h using namespace std; int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n,m; //n是需要求解的输入值个数m是变化的次数 cinnm; vectorint k(m1,0); //每轮变化的参数 vectorint res(n1,0); //输出值 for(int i1;im;i) cink[i]; for(int i1;in;i) cinres[i]; vectorint f(m1,0); //每轮变化的输出值 for(int j1;jn;j) //解密每一个输出值 { f[m]res[j]; int n1,n2,n3; //从低到高三组位数 for(int im;i0;) { n1f[i]%8; f[i] 3; n2f[i]%8; f[i] 3; n3f[i]%8; f[i] 3; int a,b,c; bn3; c n2 ^ k[i] ^ ((b*bk[i]*k[i])%8); a n1 ^ k[i] ^ ((c*ck[i]*k[i])%8); f[--i](a6)(b3) c; if(i0) coutf[0] ; } } return 0; }

更多文章