Codeforces 1137D(技巧)
一开始写的第一步让0和1一起走然后第二步再让0走会挂最后一个点……然后探索一下觉得主要问题在于我模拟的一步一步地走。如果这样的话9 2这个数据会使第17步他俩就碰在final点了,而实际上我们想要的效果是他们走第18步时差一格,然后第20步碰上后大家一起,所以提前碰到会炸。故而要两步两步地走才行,发现01碰到了就跳出然后大家一起走。
int main() {
ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);
auto Read = [](int &x) {
cin >> x;
for (int i = 0; i < x; i++) {
string s; cin >> s;
}
};
int cur = -1;
while (cur != 2) {
cout << "next 0\n" << flush;
Read(cur);
cout << "next 0 1\n" << flush;
Read(cur);
}
while (cur != 1) {
cout << "next";
for (int i = 0 ;i <= 9; i++)
cout << " " << i;
cout << endl << flush;
Read(cur);
}
cout << "done\n";
return 0;
}