TLE了4个点 蒟蒻求助!! 求大佬帮忙康康怎么改

P1563 [NOIP2016 提高组] 玩具谜题

用户名好评(
by Mysterious_Mini @ 2021-08-14 09:56:10


@[推翻暴政](/user/448555) 你这是硬模拟,复杂度是O(n*m),肯定会t。 最好直接用数组存每个人的信息(从下标0开始存),从i向右数nu个就是(i+nu)%n,这样复杂度是O(n)。
by 幽理家的男人 @ 2021-08-14 10:09:05


```cpp #include<iostream> #include<string> using namespace std; struct toy { int dir; string name; }a[100001]; int n,m,x,y,now,i; int main() { cin>>n>>m; for(i=0;i<n;i++) { cin>>a[i].dir>>a[i].name; } now=0; for(i=1;i<=m;i++) { cin>>x>>y; if(a[now].dir==0&&x==0) { now=(now+n-y)%n; } else if(a[now].dir==0&&x==1) { now=(now+y)%n; } else if(a[now].dir==1&&x==0) { now=(now+y)%n; } else if(a[now].dir==1&&x==1) { now=(now+n-y)%n; } } cout<<a[now].name<<endl; return 0; } ```
by claunflsh @ 2021-08-14 12:11:25


@[幽理家的男人](/user/292029) 谢谢大佬!
by 推翻暴政 @ 2021-08-14 15:06:01


@[Mysterious_Mini](/user/476150) 嘿嘿(
by 推翻暴政 @ 2021-08-14 15:06:23


@[三日连珠xcy](/user/455643) @推翻暴政你咋不说谢谢这位 ------------ # ~~** _大佬_ **~~
by QB饕餮 @ 2021-08-22 20:52:44


|