说句实话这次比赛虽然难度确实是 普及++/提高–,适合pj选手,可是我依然挂的很惨。
我做完作业还剩一个小时不到了。
第一题什么 t m ^{tm} tm鬼,直接跳过
第二题同理
第三题……一道数学题,貌似比较可做,然后想了1min发现是个RMQ+GCD的裸题,写了4min后一遍过样例A了。
第4题……骗20分再说,然后写了个暴力,可能由于常数优化多得了4分,骗了24pts。
然后滚回T2,想了半天写个全排列发现全WA了,于是就再也没去管。
这时候看看排行榜,怎么人家T1都A了,回头一看这不就一个纯模拟吗,写了几分钟交上去70pts。然后一看subtask4,smg只给了
n
×
m
n\times m
n×m 的范围?人生苦短我用STL,于是写了个vector走人发现还是70pts。subtask4有一个点TLE了,然后死活卡不进时限。
于是多卡了几遍,明明我的了70pts,为什么排行榜51?好吧洛谷的自创赛制还真是奇葩……多提交几次并且未AC还要扣分……话说哪个比赛这样乱搞的,反正我明知自己不能AC却习惯性的交上去这个烂习惯得改改了。
然后比赛还剩二十多分钟吃饭了,下午还要上课qwq,反正这算是洛谷唯一一次普及++难度的比赛了,顺便我这个菜鸡竟然还排进了79名……人家第一名都AK了qwq。
S c o r e : 51 + 0 + 100 + 24 = 175 p t s Score: 51+0+100+24=175pts Score:51+0+100+24=175pts
UPD:
赛后证明T1确实被卡常了,卡常也有点人性吧500ms是smg,差评(bushi。
什么T2不是构造是爆搜?还以为爆搜是
4
n
4^n
4n,500不显然炸了吗?超级无敌大差评(大雾。
T4说是留给混进来的提高选手的?爬了爬了……
比赛总体质量还是很不错,但是卡常是陋习啊,
4
n
4^n
4n过500就离谱啊。
那这样说……T2只要鼓起勇气写看起来绝对T飞的暴力就AC?T1不卡常也一遍AC?
wdnmd
真没想到自己这么蒻……PJ++难度因为某些奇奇怪怪的原因挂成这样。
最后还是附上我的T3AC代码吧(其实T1不被恶意卡常能过的qwq:
#include <cstdio>
#include <cmath>
#define max(x, y) (x > y ? x : y)
inline int gcd(int a, int b) {return b ? gcd(b, a % b) : a;}
int d[1000001][20];
inline int query(int L, int R) {
int k(log2(R - L + 1));
return max(d[L][k], d[R - (1 << k) + 1][k]);
}
int main() {
int a, b, n, q;
scanf("%d%d%d", &a, &b, &q);
n = a / gcd(a, b) * b;
for (register int i(0); i <= n; ++ i) d[i][0] = i % a + i % b;
for (register int j(1); 1 << j <= n; ++ j)
for (register int i(0); i + (1 << j) - 1 <= n; ++ i)
d[i][j] = max(d[i][j - 1], d[i + (1 << j - 1)][j - 1]);
while (q --) {
int l, r;
scanf("%d%d", &l, &r);
if (r - l + 1 >= n)printf("%d\n", query(0, n));
else printf("%d\n", r % n >= l % n ? query(l % n, r % n) : max(query(l % n, n), query(0, r % n)));
}
}