CF 590D Top Secret Task
题目
给一个长度为n的数组,可以交换s次相邻元素,求前k个元素和最小为多少
$1 leqslant k leqslant n leqslant 150, 1 leqslant s leqslant 10^9$
$1leqslant q_i leqslant 1000000$
解
想办法选一些元素作为前k个元素,那么交换的次数就很好计算,并且两个选中的元素顺序不会变
然后想到背包,dp即可
CF 333D Characteristics of Rectangles
题目
给一个m*n的矩阵,选择一个矩形,使这个矩形四个角的数的最小值最大。
$2leqslant m,nleqslant 1000$
$0leqslant a_{i,j} leqslant 10^9$
解
先二分,然后很吓人,实际上想想最坏情况(比较精确)是什么样子。
有一列相同,剩下的列都不同,那么最多m+n个要选择的数字,C(m+n,2)=O((m+n)^2),可以直接暴力统计过。
CF 1365F Swaps Again
题目
给一个数组,可以多次交换最前k个数和最后k个数($1 le k le lfloorfrac{n}{2} floor$)
问能不能变成另外一个数组。
解
发现无论怎么交换,考虑前面的p和后面的q,p从前往后数的位置和q从后往前数的位置如果一开始就不同,那么怎么都不可能变成相同
而如果相同,可以对称地向外或者向内移动
那么只需要判断对称的位置就行了,再考虑一下简单的问题,比如:每种元素个数都相同,奇数的时候最中间元素也要相同