[考试反思]1105csp-s模拟测试101: 临别
先不改题,这次主要不在T3上。
这次有必要粘文件得分了。
临考前总解锁新锅我也不知道这是什么个事啊。。。
T1宏定义写挂。因为原来在OJ上没事所以一直没注意。在Lemon评测下直接全部RE。
GG在主函数里出现了。乍一眼看上去好像没什么问题。
但是在最终评测下如果主函数返回值非0的话是不看你的结果的。
不知道为什么OJ上能过。。。
然后T2也飞天了,这个更玄学一些。
其它地方没改。理论上1e14足够了但是最后不知道为什么还是炸了。(因为每个点最多会被经过1次,所以应该是1e9×点数1e5)
inf没开够导致上天也是头一回见。。。
不要伪证,能保险一些就保险一些,数组开够,inf设的足够大!!!
一场考试的得分因为这些锅总分刚好只剩下一半,应该能涨记性了。
RP彻底用尽之后就是这个狼狈模样。。。。
联赛就在眼前了,要是一天直接只有115的话那肯定退役了。。。
这到底是怎么了啊。。。
T1:五子棋
一个简单到连部分分都没办法给的题。
除了skyh不会下五子棋和我返回值非0以外大多数人都A了。。。
1 #include<cstdio> 2 #define GG if(cnt>=5)return printf("%c %d\n",opt==1?'A':'B',i);//,0;注意返回值。。 3 int a[17][17],n; 4 int main(){ 5 freopen("five.in","r",stdin); 6 freopen("five.out","w",stdout); 7 scanf("%d",&n); 8 int opt=1; 9 for(int i=1,x,y;i<=n;++i){ 10 scanf("%d%d",&x,&y); 11 a[x][y]=opt; 12 int rx=x,ry=y,cnt=1; 13 while(a[x+1][y]==opt)cnt++,x++; 14 x=rx; 15 while(a[x-1][y]==opt)cnt++,x--; 16 x=rx;GG;cnt=1; 17 while(a[x][y+1]==opt)cnt++,y++; 18 y=ry; 19 while(a[x][y-1]==opt)cnt++,y--; 20 y=ry;GG;cnt=1; 21 while(a[x-1][y-1]==opt)cnt++,x--,y--; 22 x=rx;y=ry; 23 while(a[x+1][y+1]==opt)cnt++,x++,y++; 24 x=rx;y=ry;GG;cnt=1; 25 while(a[x+1][y-1]==opt)cnt++,x++,y--; 26 x=rx;y=ry; 27 while(a[x-1][y+1]==opt)cnt++,x--,y++; 28 GG;opt*=-1; 29 }puts("Tie"); 30 }
T2:迷宫
每个点第d+1次被扩展到的时候再入队,最短路。
1 #include<cstdio> 2 #include<queue> 3 using namespace std; 4 #define inf 1234567890123456 5 int n,m,k,d,cnt=1,fir[100005],l[2000005],to[2000005],deg[100005],w[2000005]; 6 priority_queue<long long>q[100005]; 7 priority_queue<pair<long long,int> ,vector<pair<long long,int> >,greater<pair<long long,int> > >Q; 8 void link(int a,int b,int v){l[++cnt]=fir[a];fir[a]=cnt;to[cnt]=b;w[cnt]=v;deg[a]++;} 9 int main(){ 10 freopen("maze.in","r",stdin); 11 freopen("maze.out","w",stdout); 12 scanf("%d%d%d%d",&n,&m,&k,&d);d++; 13 for(int i=1,a,b,v;i<=m;++i)scanf("%d%d%d",&a,&b,&v),a++,b++,link(a,b,v),link(b,a,v); 14 for(int i=1;i<=n;++i)for(int j=1;j<=d;++j)q[i].push(inf); 15 for(int i=1,E;i<=k;++i){ 16 scanf("%d",&E);E++;Q.push(make_pair(0,E)); 17 while(!q[E].empty())q[E].pop(); 18 for(int i=1;i<=d;++i)q[E].push(0); 19 } 20 while(!Q.empty()){ 21 int p=Q.top().second;long long D=Q.top().first;Q.pop(); 22 if(D!=q[p].top())continue;//printf("%d\n",p); 23 for(int i=fir[p];i;i=l[i]){ 24 int rd=q[to[i]].top();q[to[i]].push(D+w[i]);q[to[i]].pop(); 25 if(q[to[i]].top()<rd)Q.push(make_pair(q[to[i]].top(),to[i])); 26 } 27 } 28 printf("%lld\n",q[1].top()==inf?-1:q[1].top()); 29 }
T3:三华聚顶
不会。这不是重点。先让前两道题不挂分再说。
$Fate \ is \ Fake$