tg 25 题解
T1
赛时正解思路但是写丑了挂了\(30pts\)
首先就是最小的质因数的可能性:
如果一个数\(x\)为合数,那么最小质因数\(ans\leq\sqrt{x}\)
这个我是会证的:
令一个质因数\(y>\sqrt{x}\),
则显然有:\(\frac{x}{y}<\sqrt{x}\)
\(\because y|x,\therefore \frac{x}{y}|x\)
如果\(\frac{x}{y}\)是质数,显然\(ans\leq \frac{x}{y}<\sqrt{x}\)
否则,\(\exist z|\frac{x}{y},z\)是质数
于是你首先筛一遍\(1e6\)以内的所有质数
然后对于每个质数\(p\),更新所有的\(p|x,x\in [l,r]:\)
当然如果你到这暴力枚举就挺SB了
T2
一个场切题:
维护三个std::bitset去做每一行列九宫格的数字计数
然后就是暴力模拟:
九宫格公式:(行减一) \(/3 \times 3+\)(列减一)\(/3 +1\)
插入:看有没有数,再查行列九宫格的std::bitset有没有碰撞,更新
删除:有没有数,std::bitset对应删除即可
查询:总共九个数,对于每一个数当成插入操作别去做更新
合并:这个时候开三维数组,每次存一下改完状态,清空所有std::bitset,对于每个位置相当于先做一次状态一的插入再做状态二的插入
状态在每次操作前先更新一遍成原来的操作
输出:整数数组的位置\(\times3\)=字符数组位置
T3
一道whk题
结论:排序按\(min(x_a,y_b)<min(x_b,y_a)\)排
证明:
通过展开这个递归式子可以发现:
对于\(k\&k+1\)这一组点:
不换的话,整个式子就是三个部分:
巧妙的换一下:
记\(A=\sum\limits^{k+1}_ {i=1}a_i+\sum\limits^{n}_ {i=k}b_i\)
则:\(c_n=max(A-a_{k+1},A-b_k),c_n=A-min(a_{k+1},b_k)\)
然后就是互换:
此时:\(c_n=max(A-a_{k},A-b_{k+1}),c_n=A-min(b_{k+1},a_k)\)
因为不换要比换优,
所以:
T4
只会部分分就先不写了

浙公网安备 33010602011771号