杂题记录
杂题记录
记录一些没啥分类的妙妙题
[ABC225F] String Cards
date: 2023.10.23
初看题目,感觉直接排序,但是发现, \(k\) 其实是影响的,也就是直接排序并不一定最优
简单的反例
2 2
ba
b
bba>bab但是b在ba之前
不能快排了 但是我们发现数据很小 返回排序的源头 选择排序 每次交换两个比较是否更优
正确性是不难证明的
本质基础的东西,但是更简单,能跑更多情况
CF1110D Jongmah
date: 2023.10.26
\(dp_i,j,k\) 表示考虑到 \(i\),区间 \([i-1,i,i+1]\), \([i,i+1,i+2]\) 分别有 \(j,k\) 个的方案数
注意到 \(j,k < 3\) , 就可以 \(\mathcal{O(m)}\) 转移
P2144 [FJOI2007] 轮状病毒
虽然是做 \(dp\) 时遇到的,但是由于太菜,所以找规律了
打表找规律可得 \(res_i=3\times res_{i-1}-res_{i-2}+2\)
注意要高精度
P2048 [NOI2010] 超级钢琴
\(RMQ\) 题
容易想到,先做前缀和
这样,当确定了左端点 \(l\) 对于这个 \(l\) 最优的 \(r\) 即为 \([l+L-1,min(n,l+R-1)]\) 内前缀和最大的 \(r\), 可以用 ST 表维护
考虑将这个压入一个优先队列,优先队列里存 当前答案, \(l\) , \(l+L-1\) , \(min(n,l+R-1)\) , 当前最优解位置 \(t\)
每次取出最大的加入答案, 把原来区间 \([l,r]\) 分成 \([l,t-1]\) 和 \([t+1,r]\) 分别求值压入队列
The Beach
妙妙的图论题
发现使一个点空出来的操作可以转化为一连串的操作,且相邻两个点这样的操作不会互相影响
所以可以考虑建图,即从每次操作会被堵住的点向空出来的点建边,源点向所有空点建边,跑最短路即可
CF1305F Kuroni and the Punishment
妙妙的随机化题
首先,考虑对每个数做最多 \(1\) 次操作一定可以使得所有数的 \(gcd=2\) , 所以答案 \(\leq n\)
根据以上,可以得出,答案操作方式中一定有至少 \(\frac{1}{2}\) 的数被操作次数 \(\leq 1\) , 否则总操作次数必然 \(>n\)
所以,可以随机选取一个数,检查它所有的质因子