求助 RE*3 WA*13 AC*4 ac:1 12 14 20

P1563 [NOIP2016 提高组] 玩具谜题

终于,RE变成了WA ```cpp #include<bits/stdc++.h> using namespace std; struct p{ bool q; char n[50]; }ps[100005]; struct o{ bool q; int s; }op[100005]; int main() { int n,m,ap=1; scanf("%d%d",&n,&m); for(int i=1;i<=n;i++) scanf("%d%s",&ps[i].q,&ps[i].n); for(int i=1;i<=m;i++) scanf("%d%d",&op[i].q,&op[i].s); for(int i=1;i<=m;i++) ap=(ap+(ps[ap].q==op[i].q?op[i].s:-op[i].s))>n?(ap+(ps[ap].q==op[i].q?op[i].s:-op[i].s))%n:(ps[ap].q==op[i].q?op[i].s:-op[i].s)<1?(ps[ap].q==op[i].q?op[i].s:-op[i].s)+n:(ps[ap].q==op[i].q?op[i].s:-op[i].s); printf("%s",ps[ap].n); return 0; } ```
by CHIMPANCAKE @ 2023-05-16 20:55:31


```cpp #include<bits/stdc++.h> using namespace std; struct node{ string name; bool dir; }a[100001]; long long n,m,now=1; void fun(int di,int num) { num%=n; if(di==1) now+=num; else now-=num; if(now>n) while(1) { now-=n; if(now<=n&&now>0) break; } else if(now<=0) while(1) { now+=n; if(now>0&&now<=n) break; } } int main() { cin>>n>>m; for(int i=1;i<=n;i++) cin>>a[i].dir>>a[i].name; for(int i=1;i<=m;i++) { int nbir,nnum; cin>>nbir>>nnum; if((nbir==0&&a[now].dir==0)||(nbir==1&&a[now].dir==1)) fun(-1,nnum); else fun(1,nnum); } cout<<a[now].name; return 0; } /* 0+0||1+1 向+方向数 1+0||0+1 向-方向数 */ ``` AC
by wangjiawen @ 2023-05-16 21:20:04


|