我的2020 CSP-S考场原代码及洛谷民间自测结果
BurningEnderDragon
2020-11-11 11:39:42
## 以下代码为本人考场原代码,评测结果为注释掉freopen后用[洛谷民间数据](https://www.luogu.com.cn/contest/37022)自测的评测结果
[2020 CSP-S 爆零记](https://www.luogu.com.cn/blog/BurningEnderDragon/post-2020-csp-s-bao-ling-you-ji)
## T1 儒略日(Julian)
~~Julian,指聚敛,搜刮民间财产,指480报名费~~
### 代码: (警告:此题代码过长,请谨慎阅读!)
```cpp
//公元1年1月1日=儒略日1721424
#include <iostream>
#include <cstdio>
using namespace std;
int Q,Year=4713,Month=1,Date=1,Days[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
long long Julian;
bool BC=true;
void Add()
{
if(Julian>=1721424)//公元后
{
Year=1;
BC=false;
Julian-=1721424;
if(Julian>=577737)//1582年10月15日及之后
{
Year=1582;
Month=10;
Date=15;
Julian-=577737;
if(Julian>=78)
{
Year=1583;
Month=1;
Date=1;
Julian-=78;
}
else
{
if(Julian>=17)
{
Month=11;
Date=1;
Julian-=17;
for(int i=11;i<=12;++i)
{
if(Julian>=Days[i])
{
++Month;
Julian-=Days[i];
}
else
{
Date+=Julian;
Julian =0;
goto Final_End1;
}
}
Date+=Julian;
Julian =0;
goto Final_End1;
}
else
{
Date+=Julian;
Julian=0;
goto Final_End1;
}
}
Year+=400*(Julian/146097);//400年的天数为146097天
Julian%=146097;
if(Julian>=6209)
{
Year+=17;
Julian-=6209;
if(Julian>=366)
{
++Year;
Julian-=366;
Year+=4*(Julian/1461);//4年的天数为1461天
Julian%=1461;
for(int i=1;i<=3;++i)
{
for(int j=1;j<=12;++j)
{
if(Julian>=Days[j])
{
++Month;
Julian-=Days[j];
}
else
{
goto End3;
}
}
if(Month==13)
{
Month=1;
++Year;
}
}
Days[2]=29;
for(int j=1;j<=12;++j)//闰年
{
if(Julian>=Days[j])
{
++Month;
Julian-=Days[j];
}
else
{
Days[2]=28;
goto End3;
}
}
if(Month==13)
{
Month=1;
++Year;
}
Days[2]=28;
}
else
{
for(int j=1;j<=12;++j)//闰年
{
if(Julian>=Days[j])
{
++Month;
Julian-=Days[j];
}
else
{
goto End3;
}
}
if(Month==13)
{
Month=1;
++Year;
}
}
}
else
{
Year+=4*(Julian/1461);//4年的天数为1461天
Julian%=1461;
for(int i=1;i<=1;++i)
{
for(int j=1;j<=12;++j)
{
if(Julian>=Days[j])
{
++Month;
Julian-=Days[j];
}
else
{
goto End3;
}
}
if(Month==13)
{
Month=1;
++Year;
}
}
Days[2]=29;
for(int j=1;j<=12;++j)//闰年
{
if(Julian>=Days[j])
{
++Month;
Julian-=Days[j];
}
else
{
Days[2]=28;
goto End3;
}
}
if(Month==13)
{
Month=1;
++Year;
}
Days[2]=28;
for(int i=1;i<=2;++i)
{
for(int j=1;j<=12;++j)
{
if(Julian>=Days[j])
{
++Month;
Julian-=Days[j];
}
else
{
Days[2]=28;
goto End3;
}
}
if(Month==13)
{
Month=1;
++Year;
}
}
}
Days[2]=28;
End3:;
Date+=Julian;
Julian=0;
goto Final_End1;
}
else if(Julian==577736)//1582年10月4日
{
Year=1582;
Month=10;
Date=4;
Julian=0;
goto Final_End1;
}
else//1582年10月3日及之前
{
Year+=4*(Julian/1461);//4年的天数为1461天
Julian%=1461;
for(int i=1;i<=3;++i)
{
for(int j=1;j<=12;++j)
{
if(Julian>=Days[j])
{
++Month;
Julian-=Days[j];
}
else
{
goto End1;
}
}
if(Month==13)
{
Month=1;
++Year;
}
}
Days[2]=29;
for(int j=1;j<=12;++j)//闰年
{
if(Julian>=Days[j])
{
++Month;
Julian-=Days[j];
}
else
{
goto End1;
}
}
if(Month==13)
{
Month=1;
++Year;
}
End1:;
Days[2]=28;
Date+=Julian;
Julian=0;
goto Final_End1;
}
Final_End1:;
cout<<Date<<" "<<Month<<" "<<Year<<endl;
return ;
}
else//公元前
{
Year-=4*(Julian/1461);
Julian%=1461;
Days[2]=29;
for(int j=1;j<=12;++j)//闰年
{
if(Julian>=Days[j])
{
++Month;
Julian-=Days[j];
}
else
{
Days[2]=28;
goto End2;
}
}
if(Month>12)
{
Month-=12;
--Year;
}
Days[2]=28;
for(int i=1;i<=3;++i)
{
for(int j=1;j<=12;++j)
{
if(Julian>=Days[j])
{
++Month;
Julian-=Days[j];
}
else
{
goto End2;
}
}
if(Month>12)
{
Month-=12;
--Year;
}
}
End2:;
Date+=Julian;
Julian=0;
if(Date>Days[Month])
{
Date-=Days[Month];
++Month;
}
if(Month>12)
{
Month-=12;
++Year;
}
cout<<Date<<" "<<Month<<" "<<Year<<" BC"<<endl;
return ;
}
}
int main()
{
freopen("julian.in","r",stdin);
freopen("julian.out","w",stdout);
scanf("%d",&Q);
for(int i=1;i<=Q;++i)
{
Year=4713;
Month=1;
Date=1;
scanf("%lld",&Julian);
Add();
}
}
```
### 评测结果: 万花丛中一点绿
![万花丛中一点绿](https://cdn.luogu.com.cn/upload/image_hosting/79qfpcnj.png)
## T2 动物园(zoo)
### 代码: (这个还算正常的)
```cpp
#include <iostream>
#include <cstdio>
using namespace std;
int n,m,c,k,Animal[1000001],p[1000001],q[1000001];
bool Feed[100000001]={},Buy[100000001]={};
long long Ans=0LL;
long long Quickpow(int x,int y)
{
long long Result=1;
int Base=x;
while(y!=0)
{
if(y%2!=0)
{
Result*=(long long)Base;
}
Base*=Base;
y>>=1;
}
return Result;
}
int main()
{
freopen("zoo.in","r",stdin);
freopen("zoo.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&c,&k);
for(int i=1;i<=n;++i)
{
scanf("%d",&Animal[i]);
Feed[Animal[i]]=1;
}
for(int i=1;i<=m;++i)
{
scanf("%d%d",&p[i],&q[i]);
}
for(int i=1;i<=n;++i)
{
for(int j=1;j<=m;++j)
{
if(Buy[q[j]]==0)
{
if((Animal[i]&Quickpow(2,p[j]))!=0)
{
Buy[q[j]]=1;
}
}
}
}
for(int i=0;i<=Quickpow(2,k)-1;++i)
{
if(Feed[i]==0)
{
for(int j=1;j<=m;++j)
{
if(((i&Quickpow(2,p[j]))!=0)&&Buy[q[j]]==0)
{
goto Next;
}
}
++Ans;
Next:;
}
}
cout<<Ans<<endl;
return 0;
}
```
### 评测结果: 彩 虹 分 析 会
![彩 虹 分 析 会](https://cdn.luogu.com.cn/upload/image_hosting/dka8usdt.png)
## T3 函数调用(call)
### 代码: (这个也挺正常的)
```cpp
#include <iostream>
#include <cstdio>
using namespace std;
int n,m,Count=0,g[1000001],Q,f;
long long a[100001];
const int MOD=998244353;
struct FFunction
{
int T,P,V,Head,Tail;
}Function[100001];
void Add(int x)
{
a[Function[x].P]+=Function[x].V;
return ;
}
void SuperAdd(int x)
{
for(int i=1;i<=n;++i)
{
a[i]*=Function[x].V;
a[i]%=MOD;
}
return ;
}
void Use(int x)
{
for(int i=Function[x].Head;i<=Function[x].Tail;++i)
{
if(Function[g[i]].T==1)
{
Add(g[i]);
}
else if(Function[g[i]].T==2)
{
SuperAdd(g[i]);
}
else
{
Use(g[i]);
}
}
}
int main()
{
freopen("call.in","r",stdin);
freopen("call.out","w",stdout);
scanf("%d",&n);
for(int i=1;i<=n;++i)
{
scanf("%lld",&a[i]);
a[i]%=MOD;
}
scanf("%d",&m);
for(int i=1;i<=m;++i)
{
scanf("%d",&Function[i].T);
if(Function[i].T==1)
{
scanf("%d%d",&Function[i].P,&Function[i].V);
}
else if(Function[i].T==2)
{
scanf("%d",&Function[i].V);
Function[i].V%=MOD;
}
else
{
scanf("%d",&Function[i].V);//此处用V代替C
Function[i].Head=Count+1;
Function[i].Tail=Count+Function[i].V;
Count+=Function[i].V;
for(int j=Function[i].Head;j<=Function[i].Tail;++j)
{
scanf("%d",&g[j]);
}
}
}
scanf("%d",&Q);
for(int i=1;i<=Q;++i)
{
scanf("%d",&f);
if(Function[f].T==1)
{
Add(f);
}
else if(Function[f].T==2)
{
SuperAdd(f);
}
else
{
Use(f);
}
}
for(int i=1;i<=n;++i)
{
printf("%lld ",a[i]);
}
return 0;
}
```
## 评测结果: (完 美 T L E)
![完 美 T L E](https://cdn.luogu.com.cn/upload/image_hosting/hzjc474b.png)
## T4 贪吃蛇(snakes)
### 代码: 我 写 不 出 来 了
```cpp
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
freopen("snakes.in","r",stdin);
freopen("snakes.out","w",stdout);
}
```
### 评测结果:
![OLE](https://cdn.luogu.com.cn/upload/image_hosting/bhtoa0rb.png)
(至于我交了什么会OLE……)
```cpp
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
//freopen("snakes.in","r",stdin);
//freopen("snakes.out","w",stdout);
while(1)puts("Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! Fuck CCf ! ");
}
```
~~老儒雅随和了~~
# ——————————完——————————