求助!!!

P1563 [NOIP2016 提高组] 玩具谜题

``` #include<bits/stdc++.h> using namespace std; long long sum1[1000001],sum2[1000001]; long long sum3=1; struct adj { string x; long long y; }a[2000001]; int main(){ int n,m; cin>>n>>m; for(int i=1;i<n;i++){ cin>>a[i].y>>a[i].x; a[i+n].y=a[i].y; a[i+n].x=a[i].x; } for(int i=1;i<=m;i++){ cin>>sum1[i]>>sum2[i]; } for (int i=1;i<=m;i++) { if(a[sum3].y+sum1[i]==1){ sum3=(sum3+sum2[i])%n; }else{ sum3=(sum3-sum2[i]+n)%n; } } cout<<a[sum3].x<<endl; return 0; } ```
by Lhy2021 @ 2023-01-07 11:22:52


你第一个for循环时从i=1开始的。而你后面是通过mod n来实现“转圈”的。所以建议你i=0开始,这样mod n 才能实现“转圈”的效果。
by Nefelibata_ @ 2023-01-09 18:38:13


|