E. Magic Master
比赛的时候xy用链表弄了一个,赛后发现deque更快,可能原因是deque内存中连续。总之deque是一种高效的数据结构,甚至可以随机访问随机删除,自动管理的分块数组?只不过不能手动在块上维护信息就是麻烦点。
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
deque<int> dq;
int main() {
int T;
scanf("%d", &T);
for(int ti = 1; ti <= T; ++ti) {
int n, m;
scanf("%d%d", &n, &m);
dq.push_back(n);
for(int i = n - 1; i >= 1; --i) {
for(int mi = 1; mi <= m; ++mi) {
dq.push_back(dq.front());
dq.pop_front();
}
dq.push_back(i);
}
int Q;
scanf("%d", &Q);
for(int qi = 1, q; qi <= Q; ++qi) {
scanf("%d", &q);
printf("%d\n", dq[n - q]);
}
dq.clear();
}
return 0;
}
B. Fire-Fighting Hero
理解错题意了,出题方有点东西。在新的题意背景下所有的消防队是同一个单源出发的,只需要找一个超级源连一条权为0的边即可。
A. Enju With math problem
先暴力判前200个质数防止后面出些小东西。
看起来是要先拉出1.5e8的那几个为数不多的质数,检测一下他们周围是不是有,花的复杂度不高。然后把所有这些质数乘以2得到一些合数2p,那么(除了22=4以外)根据欧拉函数的积性性质,他们的欧拉函数一定是phi(2p)=phi(2)phi(p),根据这些合数定位再找一遍。
C. Hello 2019
这个看起来就像早上的wrong那道题。