csp2020s-HA

警策看取

2020-11-09 21:45:41

Personal

只是正好闲着无聊,又有代码和统计器,搞了下这个活。 作者本人不是ha的,也没考s组,但是有人发了他们的代码,我就顺便看看了,正好警醒自己免得以后犯这种错误。 感谢@囧仙 提供的统计器和@gongjianhi 提供的源代码。 还有我是懒得放截图上传了,太累 不过自己动手是真的好玩 ```cpp #include<iostream> #include<algorithm> #include<stdio.h> #include<cmath> #include<string> #include<cstring> #include<set> using namespace std; int main(){ freopen("call.in","r",stdin); freopen("call.out","w",stdout); int n,sinn[100000],m,t[10000],p[1000],v[1000]; cin>>n; for(int i=0;i<=n;i++) cin>>sinn[i]; if(n==3) printf("6 8 12"); if(n==10) printf("36 282 108 144 180 216 504 288 324 360"); if(n==100000)printf("//接大样例,略 return 0; fclose(stdin); fclose(stdout); } ``` 大 样 例 人 还有五个一个毛病的,略之 ```cpp #include<bits/stdc++.h> using namespace std; int x[100000]={1,27,23,略 int w[100000]={1,9,6,略 int z[100000]={1,4711,略 int main() { freopen("julian.in","r",stdin); freopen("julian.out","w",stdout); int n,q,p,d,m,y,bc; int s;cin>>s; for(int j=1;j<=s;j++) { cin>>n; if(n>1000) { q=n%1000; p=n/1000; d=x[p],m=w[p],y=z[p],bc=1; if(n>1721388)bc=0; } else d=1,m=1,y=4713,bc=1,q=n; for(int i=1;i<=q;i++) { if(y==1582&&m==10&&d==5)d=14; if(y==0){y=1;bc=0;} if(bc==1) { if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) if(d<31)d++; else if(m<12){m++;d=1;} else {y--;m=1;d=1;} else if(m==4||m==6||m==9||m==11) if(d<30)d++; else if(m<12){m++;d=1;} else {y--;m=1;d=1;} else if(m==2) if((y+3)%400==0||((y+3)%4==0)&&(y+3)%100!=0) if(d<29)d++; else if(m<12){m++;d=1;} else {y--;m=1;d=1;} else if(d<28)d++; else if(m<12){m++;d=1;} else {y--;m=1;d=1;} } else { if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) if(d<31)d++; else if(m<12){m++;d=1;} else {y++;m=1;d=1;} if(m==4||m==6||m==9||m==11) if(d<30)d++; else if(m<12){m++;d=1;} else {y++;m=1;d=1;} if(m==2) if((y+3)%400==0||((y+3)%4==0)&&(y+3)%100!=0) if(d<29)d++; else if(m<12){m++;d=1;} else {y++;m=1;d=1;} else if(d<28)d++; else if(m<12){m++;d=1;} else {y++;m=1;d=1;} } } cout<<d<<" "<<m<<" "<<y; if(bc==1)cout<<" BC"<<endl; else cout<<endl; } return 0; } ``` 打 表 不 看 长 度 限 制 人 ```cpp #include <cstdio> #include <algorithm> using namespace std; int main() { return 0; } ``` 我 要 你 这 个 干 啥 ```cpp #include<bits/stdc++.h> using namespace std; long long n, m1, d, m, y = 4713, flag = 0; string cen; void pd() { if (m == 1) if (d > 31) d = 1, m ++; if (m == 2) if (d > 28) d = 1, m ++; if (m == 3) if (d > 31) d = 1, m ++; if (m == 4) if (d > 30) d = 1, m ++; if (m == 5) if (d > 31) d = 1, m ++; if (m == 6) if (d > 30) d = 1, m ++; if (m == 7) if (d > 31) d = 1, m ++; if (m == 8) if (d > 31) d = 1, m ++; if (m == 9) if (d > 30) d = 1, m ++; if (m == 10) if (d > 31) d = 1, m ++; if (m == 11) if (d > 30) d = 1, m ++; if (m == 12) if (d > 31) d = 1, m ++; } void pdr() { if (m == 1) if (d > 31) d = 1, m ++; if (m == 2) if (d > 29) d = 1, m ++; if (m == 3) if (d > 31) d = 1, m ++; if (m == 4) if (d > 30) d = 1, m ++; if (m == 5) if (d > 31) d = 1, m ++; if (m == 6) if (d > 30) d = 1, m ++; if (m == 7) if (d > 31) d = 1, m ++; if (m == 8) if (d > 31) d = 1, m ++; if (m == 9) if (d > 30) d = 1, m ++; if (m == 10) if (d > 31) d = 1, m ++; if (m == 11) if (d > 30) d = 1, m ++; if (m == 12) if (d > 31) d = 1, m ++; } int main() { freopen("julian3.in","r",stdin); freopen("julian.out","w",stdout); cin >> m1; cen = "BC"; while (m1 --) { y = 4713, flag = 0, m = 1, d = 1; cin >> n; while (n--) { if (y == 0) { flag = 1; y = 1; } if (!flag) { d ++; if ((y - 1) % 4 == 0) { pdr(); if (m == 13) { y --; m = 1; } } else { pd(); if (m == 13) { y --; m = 1; } } } else { d ++; if (y % 400 == 0 || (y % 4 == 0 && y % 100 != 0)) { pdr(); if (m == 13) { y ++; m = 1; } } else { pd(); if (m == 13) { y ++; m = 1; } } } } if (!flag) { cout << d << ' ' << m << ' ' << y << ' ' << cen << endl; } else cout << d << ' ' << m << ' ' << y << endl; } return 0; } ``` 弄 完 大 样 例 没 改 回 来 人 ```cpp #include<bits/stdc++.h> using namespace std; int t,m; int main() { freopen("snakes.in","r",stdin); freopen("snakes.out","w",stdout); cin>>t>>m; srand(time(NULL)); for(int i=1;i<=t;i++) { cout<<rand()%(m+1)<<endl; } return 0; } ``` 随 机 数 人 ```cpp //就拿50分吧,太难了...... #include<cmath> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; const int MAXN=100005; long long r[MAXN]; long long year=-4713,moon=1,day=1; int every[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int Q; int main(){ freopen("julian.in","r",stdin); freopen("julian.out","w",stdout); scanf("%d",&Q); for(int i=1;i<=Q;i++){ scanf("%lld",&r[i]); day+=r[i]; long long hou=0; if(r[i]<1721423){ year+=((day)/1461)*4; day%=1461; if(day>366)day-=366,year++; if(day>365)day-=365,year++; if(day>365)day-=365,year++; bool yes=0; if((year+1)%4==0)yes=1,every[2]++; for(int k=1;k<=12;k++){ if(day<=every[k])break; day-=every[k]; moon++; } if(yes)every[2]--; year=-year; printf("%lld %lld %lld BC\n",day,moon,year); day=1;moon=1;year=-4713; } else{ day-=1721423; moon=1;year=1; //577737:1 1 1-4 10 1582 if(day<=577737){ year+=(day/1461)*4; day%=1461; if(day>365)day-=365,year++; if(day>365)day-=365,year++; if(day>365)day-=365,year++; bool yes=0; if((year+1)%4==0)yes=1,every[2]++; for(int k=1;k<=12;k++){ if(day<=every[k])break; day-=every[k]; moon++; } if(yes)every[2]--; printf("%lld %lld %lld\n",day,moon,year); day=1;moon=1;year=-4713; } } } return 0; } //2 1 4713 BC为第一天; //4 10 1582为猪掠历,判断闰年只需是4的倍数; //5 10 1582-14 10 1582(10天)不存在; //15 10 1582为现在的日历; //公元前(4n+1(n属于N))年为闰年; //没有公元0年; //平年365天,闰年366天; //公元前共有4713年; //公元前共有(1178*1461+365)即1721423天; //max(MAXN)为10^5,O(n^2)不可能; //max(r_i)为10^9,数学题...... ``` 写 题 解 人 ```cpp #include<iostream> #include<cstdio> #include<cmath> #include<cstring> #include<algorithm> #define ll long long #define rg register using namespace std; int sread() { int x=0,f=1;char c=getchar(); while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();} while(c<='9'&&c>='0') {x=x*10+c-'0';c=getchar();} return f*x; } int a[100000000]; int turn1[100000000],ord[3000][2000]; int n,m,Q; int aa[10000],bb[10000],cc[100000],dd[100000];int h[1000]; void fx1(int); void fx2(int); void fx3(int); int main() { freopen("call.in","r",stdin); freopen("call.out","w",stdout); n=sread(); for(rg int i=1;i<=n;++i) a[i]=sread(); m=sread();int num; for(rg int i=1;i<=m;++i) { h[i]=sread();num=h[i]; if(num==1) { aa[i]=sread(); bb[i]=sread(); } else if(num==2) { cc[i]=sread(); } else if(num==3) { dd[i]=sread(); for(rg int j=1;j<=dd[i];++j) { ord[i][j]=sread(); } } } Q=sread(); for(rg int i=1;i<=Q;++i) { turn1[i]=sread(); } for(rg int i=1;i<=Q;++i) { if(h[turn1[i]]==1) fx1(turn1[i]); else if(h[turn1[i]]==2) fx2(turn1[i]); else if(h[turn1[i]]==3) fx3(turn1[i]); } if(n==10&&m==8&&Q==3&&turn1[2]==2&&turn1[3]==3) { printf("36 282 108 144 180 216 504 288 324 360\n");return 0; } for(int i=1;i<=n;++i) { printf("%d ",a[i]); } fclose(stdin); fclose(stdout); return 0; } void fx1(int i) { a[aa[i]]+=bb[i]; } void fx2(int i) { for(rg int e=1;e<=n;++e) { a[e]*=cc[i]; } } void fx3(int i) { for(int e=1;e<=dd[i];++e) { if(ord[i][e]==1) fx1(1); else if(ord[i][e]==2) fx2(2); else if(ord[i][e]==3) fx3(3); } } ``` 您 是 想 炸 掉 c c f 评 测 姬 吗 等n个爆空间人 ```cpp #include<bits/stdc++.h> using namespace std; #define inf 100010 #define ll long long struct q{ int g; int h; }t[inf]; int n,m,ti; ll a[inf],tt[inf]; int main() { //freopen("call.in","r",stdin); //freopen("call.out","w",stdout); cin>>n; for(int i=1;i<=n;i++) //这人主程序蛮长,不放了 ``` 注 释 freopen 人 ```cpp #include<bits/stdc++.h> using namespace std; int n; int a[100010]; int main() { freopen("julian.in","r","stdin"); freopen("julian.out","w","stdout"); cin>>n; for(int i=1;i<=n;i++) { cin>>a[i]; } 略 ``` " s t d i n" ```cpp #include<bits/stdc++.h> using namespace std; int main() { freopen("snakes.in","r",stdin); freopen("snakes.out","w",stdout); int t,n[1000000],a[10000000]; cin<<t; for(int i=1;i<=t;i++) cin>>n[i]>>a[i]; cout<<3<<endl<<1; return 0; } ``` c i n < < 人 ```cpp #include<bits/stdc++.h> using namespace std; int wyh() { int x=0,f=1;char c=getchar(); while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();} while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} return f*x; } int pm[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}, rm[13]={0,31,29,31,30,31,30,31,31,30,31,30,31}, ppm[13]={0,31,28,31,30,31,30,31,31,30,21,30,31}; int m,r,y=-4713,d; int main() { freopen("julian.in","r",stdin); freopen("julian.ans","w",stdout); int n; scanf("%d",&n); for(int i=1;i<=n;i++) { r=wyh(); while(r) { if(y%4!=-1&&y<=-1) { if(r>=365) { r=r-365; y++; } else if(r<365) { for(int j=1;j<=12;j++) { r=r-pm[j]; if(r<=0) { m=j;d=r+pm[j]+1;r=0;break; } } } } if(y==-1) { if(r>=366) { r=r-366; y=y+2; } else if(r<366) { for(int j=1;j<=12;j++) { r=r-rm[j]; if(r<=0) { m=j;d=r+rm[j]+1;r=0;break; } } } } if(y%4==-1&&y<=-1) { if(r>=366) { r=r-366; y++; } else if(r<366) { for(int j=1;j<=12;j++) { r=r-rm[j]; if(r<=0) { m=j;d=r+rm[j]+1;r=0;break; } } } } if(y%4!=0&&y<1582&&y>=1) { if(r>=365) { r=r-365; y++; } else if(r<365) { for(int j=1;j<=12;j++) { r=r-pm[j]; if(r<=0) { m=j;d=r+pm[j]+1;r=0;break; } } } } if(y%4==0&&y<1582&&y>=1) { if(r>=366) { r=r-366; y++; } else if(r<366) { for(int j=1;j<=12;j++) { r=r-rm[j]; if(r<=0) { m=j;d=r+rm[j]+1;r=0;break; } } } } if(y==1582) { if(r>=365) { r=r-365; y++; } else if(r<365) { for(int j=1;j<=12;j++) { r=r-ppm[j]; if(r<=0) { m=j;d=r+ppm[j]+1;r=0;break; } } } } if((y%4!=0||y%100==0)&&y>1582) { if(r>=365) { r=r-365; y++; } else if(r<365) { for(int j=1;j<=12;j++) { r=r-pm[j]; if(r<=0) { m=j;d=r+pm[j]+1;r=0;break; } } } } if(y>1582&&((y%4==0&&y%100!=0)||r%400==0)) { if(r>=366) { r=r-366; y++; } else if(r<366) { for(int j=1;j<=12;j++) { r=r-rm[j]; if(r<=0) { m=j;d=r+rm[j]+1;r=0;break; } } } } } if(y<0) printf("%d %d %d BC\n",d,m,-y); else printf("%d %d %d\n",d,m,y); y=-4713; } fclose(stdin);fclose(stdout); } ``` 标 准 答 案 人 ```cpp #include<bits/stdc++.h> using namespace std; int main(){ freopen("call.in","r",stdin); freopen("call.out","w",stdout); cout<<"csp rp++"<<endl; return 0; } ``` 迷 信 人 ```cpp #include <bits/stdc++.h> using namespace std; int main(){ freopen("snake.in", "r", stdin); freopen("snake.out", "w", stdout); int t; cin >> t; int n; cin >> n; int a[n]; for(int i = 0; i < n; i++){ cin >> a[i]; } cout << 1; return 0; } ``` 单 数 人 + 没 事 非 要 读 数 人 有3-4个人写了单数。 ```cpp // 1178 1720245 1721423 // 383 577430 577813 // 2299236 // 277 // 2299513/2298525 // 2299527 // 2299525 #include<bits/stdc++.h> #define ll long long using namespace std; int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int Q; int main() { freopen("julian.in","r",stdin); freopen("julian.out","w",stdout); cin>>Q; for(int i=0;i<Q;i++) { ll tmp; cin>>tmp; 略 // day%=365; // } //// cout<<day<<" "<<year<<" nmsl"<<endl;//* // 略 ``` 问 候 出 题 人 调 试 法 ```cpp #include<iostream> #include<cstdio> #include<algorithm> #include<string> #define ull unsigned long long #define DUBUG(N,S) cerr<<"N:"<<S<<endl; #define TEST cerr<<"test"<<endl; using namespace std; ull n,k,m,c; int ciliao[21]; int kkk[20]; int pet[6]; ull has; int main(){ freopen("zoo.in","r",stdin); freopen("zoo.out","w",stdout); cin>>n>>m>>c>>k; for(int i=1;i<=n;++i){ cin>>pet[i]; has |= pet[i]; } for(int i=1;i<=m;++i){ int p,q; cin>>p>>q; if(((1<<(p))&1)==true){ kkk[p]=2; }else{ kkk[p]=1; } } ull ans=1; for(int i=0;i<=k;++i){ if(kkk[i]==0)kkk[i]=2; ans*=kkk[i]; } cout<<ans-n<<endl; return 0; } ``` 3k:??? 有些文件名都打错的我就懒得管了 只是一些很小的肉眼可见的错误而已啊…… 为什么没有辱骂出题人的呢……