csp2020s-HA
警策看取
2020-11-09 21:45:41
只是正好闲着无聊,又有代码和统计器,搞了下这个活。
作者本人不是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:???
有些文件名都打错的我就懒得管了
只是一些很小的肉眼可见的错误而已啊……
为什么没有辱骂出题人的呢……