蒟蒻求助

P1563 [NOIP2016 提高组] 玩具谜题

0.数组开100001 1.不需要hulk,开两个数组str,x分别保存就行了。 2.不需要f,s数组。直接开两个变量f,s。(将两个循环合并) 3.不需要if(A&B),改成嵌套if 4.不需要for。直接一次性将下标加上s在判断是否需要加上n(<1)或减去n(>n)就行了。 改完后代码如下: ```c++ #include<bits/stdc++.h> using namespace std; int x[100001]; string str[100001]; int main() { int n, m, ans = 1; cin >> n >> m; for(int i = 1;i <= n;i++) { cin >> x[i] >> str[i]; } for(int i = 1;i <= m;i++) { int a , s; cin >> a >> s; if( x[ans] == 0) { if( a == 1) { ans += s; if( ans > n) ans -= n; } else { ans -= s; if( ans < 1) ans += n; } } else { if( a == 0) { ans += s; if( ans > n) ans -= n; } else { ans -= s; if( ans < 1) ans += n; } } } cout << str[ans] << endl; return 0; } ```
by vanishingloser @ 2023-01-19 12:45:52


@[yangjinyi_ceshyong](/user/725725) 谢谢大佬 没看到题目中的s < n,所以用的for。 谢谢大佬!!!
by 0x0001cxr @ 2023-01-21 10:29:14


|