[考试反思]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 }
View Code

 

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 }
View Code

 

T3:三华聚顶

不会。这不是重点。先让前两道题不挂分再说。

 

 

 

 

 

 

 

 

 

posted @ 2019-11-05 14:25  DeepinC  阅读(269)  评论(5编辑  收藏  举报