A. Vika and Her Friends
看一下样例就可以发现,Vika 以及她的朋友都不能走对角线,在这种情况下 Vika 和朋友的距离为 偶数,且朋友一定追不上 Vika
所以直接判断 Vika 和朋友的距离是否都为偶数即可
B. Vika and the Bridge
显然贪心,枚举颜色,找到相邻距离最大的两块木板,记该距离为 \(dist1\),第二大距离为 \(dist2\)
答案就是 \(max\{\frac{dist1}{2},dist2\}\)
C. Vika and Price Tags
不难看出答案最短一定是以 \(3\) 为循环节的循环,所以我们只需要找到每个位置是在哪些时间点会变为 \(0\) 即可
不难看出如果 \(x\ge 2y\),则有三次操作后:\((x,y)\to(y,x-y)\to(x-y,x-2y)\to(x-2y,y)\)
所以可以令 \(x\) 对 \(2y\) 取余,不影响答案,如此可以快速令 \(x=0\)
D. Vika and Bonuses
首先显然,最优情况一定是 先连续自增(也可以不增)再一直累积
当 \(n\equiv 5\pmod{10}\) 或 \(n\equiv 0\pmod{10}\) 时,分类讨论
剩下的情况,稍微算算,个位数将会进入 \(2\to 4\to 8\to 6\to 2\to 4\to 8\to\cdots\) 的循环
为了方便,当 \(k\le 20\) 的时候我们直接暴力,剩下的暴力跳 \(n\),使其达到 \(n\equiv 2\pmod{10}\) 的一般情况
每次循环后,\(n\) 会增加 \(20\) 这一定值,分类讨论,设循环了整 \(i\) 次,则有:
\[ans=(n+20i)(k−4i) \]展开
\[ans=−80i^2+(20k−4n)i+nk \]上式是一个关于 \(i\) 的开口向下的抛物线解析式,直接取其对称轴 \(i=\frac{5k-n}{40}\)
这样我们就算出了所有 \(n\equiv 2\pmod{10}\) 的最大值,再让 \(n\) 自增一次算 \(n\equiv 4\pmod{10}\) 的情况,然后是 \(n=8,n=6\),这样就结束了
E. Vika and Stone Skipping
假设答案为 \(\sum_{i=x}^y i\),等差数列求和的形式为 \(\frac{(x+y)(x-y+1)}{2}\)
不妨令我们需要的值为 \(t\),则有 \((x+y)(x-y+1)=2t\),我们要求这个方程的解
显然我们可以看出 \(x+y\) 与 \(x-y+1\) 的奇偶性不同方程才可能有解,所以我们必须把 \(2t\) 分解成一个奇数和一个偶数的乘积
如果将 \(2t\) 分解质因数,那么所有质因子 \(2\) 一定在一边,而剩下的质因子可以任意分配,所以答案就是 \(\prod_{p\not=2(cnt_p+1)}\)
要特判模意义下除以 \(0\) 的运算
F. Vika and Wiki
考虑倍增,我们需要快速计算序列操作 \(2^k\ (k\in \mathbb N^*)\) 次后的结果
手玩一下可以发现当操作 \(2^k-1\) 次时,所有 \(a_i\) 会变为 \(\oplus_{j=0}^{2^k}a_{(i+j)\bmod n}\),利用这个性质我们可以先操作 \(2^k-1\) 次,再操作一次,这样就达到了操作 \(2^k\) 次的效果,每次操作的复杂度都是 \(O(n)\),总复杂度为 \(O(n\log n)\)
标签:10,pmod,题解,Codeforces,2y,操作,Div,Vika,equiv From: https://www.cnblogs.com/cantorsort2919/p/17599114.html