专栏文章

题解:P1563 [NOIP2016 提高组] 玩具谜题

P1563题解参与者 3已保存评论 2

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
2 条
当前快照
1 份
快照标识符
@miqk4hud
此快照首次捕获于
2025/12/04 06:06
3 个月前
此快照最后确认于
2025/12/04 06:06
3 个月前
查看原文

solution

一道小模拟。
对于一个人 ii,记 AiA_i 表示 ii 的朝向,分类讨论(11nn 特殊考虑)。
  • Ai=0A_i=0,即朝内,向左找就减,向右找就加。
  • Ai=1A_i=1,即朝外,向左找就加,向右找就减。
对于一组询问 aass,减的情况就是当前位置朝内向左找或当前位置朝外向右找,Ai=0A_i=0a=0a=0Ai=1A_i=1a=1a=1,即 Ai=aA_i=a 时减,那反过来不相等就加。
加减后再对 nn 取模,要特判取模后位置为 00 的情况。

code

CPP
#include <bits/stdc++.h>
using namespace std;
int n, m, a[100005], now=1;
string b[100005];
int main () {
	cin >> n >> m;
	for (int i=1; i<=n; ++i) 
		cin >> a[i] >> b[i];
	for (int x, s; m--; ) 
		cin >> x >> s,
		now=(now+(a[now]==x?-s:s)+n)%n,
		now=(!now?n:now);
	cout << b[now];
	return 0;
}

评论

2 条评论,欢迎与作者交流。

正在加载评论...