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]:\)

\[ans_l=min(ans_l,p) \]

当然如果你到这暴力枚举就挺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)\)
证明:
通过展开这个递归式子可以发现:

\[c_i=\sum\limits^{k}_ {j=1}a_j+\sum\limits^{i}_ {j=k}b_i,k\in[1,i] \]

对于\(k\&k+1\)这一组点:
不换的话,整个式子就是三个部分:

\[c_n=\sum\limits^{k-1}_ {i=1}a_i+a_k+b_k+b_{k+1}+\sum\limits^{n}_ {i=k+2}b_i \]

\[c_n=\sum\limits^{k-1}_ {i=1}a_i+a_k+a_{k+1}+b_{k+1}+\sum\limits^{n}_ {i=k+2}b_i \]

巧妙的换一下:

\[c_n=\sum\limits^{k+1}_ {i=1}a_i+\sum\limits^{n}_ {i=k}b_i-a_{k+1} \]

\[c_n=\sum\limits^{k+1}_ {i=1}a_i+\sum\limits^{n}_ {i=k}b_i-b_{k} \]

\(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=\sum\limits^{k-1}_ {i=1}a_i+a_{k+1}+b_k+b_{k+1}+\sum\limits^{n}_ {i=k+2}b_i \]

\[c_n=\sum\limits^{k-1}_ {i=1}a_i+a_k+a_{k+1}+b_{k}+\sum\limits^{n}_ {i=k+2}b_i \]

\[c_n=A-a_{k} \]

\[c_n=A-b_{k+1} \]

此时:\(c_n=max(A-a_{k},A-b_{k+1}),c_n=A-min(b_{k+1},a_k)\)
因为不换要比换优,
所以:

\[A-min(a_{k+1},b_k)<A-min(b_{k+1},a_k) \]

\[min(a_k,b_{k+1}<min(b_{k},a_{k+1}) \]

T4

只会部分分就先不写了

posted @ 2022-08-10 19:32  2K22  阅读(39)  评论(0)    收藏  举报