A
- 显然每次完整地放完都是一个正方形,正方形的边长每次 +2,初始值为 1
- 所以只需要 check 每天的块数是否是奇数的平方,然后再做前缀和即可
B
- 显然字母出现顺序不重要而出现次数重要,直接放桶并不考虑出现次数为 0 的数
- 考虑多重集意义下的排列,设序列总长度为 \(n\),第 \(i\) 钟数出现的次数为 \(k_{i}\),显然排列数为 \(\frac{{n!}}{\Pi_{i=1}^m{k_{i}!}}\)
- 显然剪掉的数越小越好,改成的数越大越好,所以找把出现次数最少的数改成出现次数最多的数即可
- 如果所有数出现次数全相同,则要保证剪掉和改成的数不同
C
- 注意到相当于 \(n\) 个二元组,其中一个取两个数,剩下的都取一个数,求最值
- 直接先全取大值,再取小值里取最大的即可
- 这题怎么能在 C 的
D
- 注意到:如果一个数后面有比自己小的数,那它一定后移
- 注意到:一直循环上述过程,那最后的序列一定单调不降
- 注意到:一定有一个极长的答案序列的前缀满足:是原序列的子序列,单调不降
- 所以我们可以随意控制那些不在这个序列里的数跑到后面去的顺序,也就是说,我们可以让不在这个序列里的那些数在答案序列后部仍然单调不降
- 显然只需判断:哪些数后面有比自己小的数
- 处理出后缀最小值,如果一个数大于后缀最小值,那它后移
- 让一个数后移的值还可以来自于这个数之前的被后移的数,所以另用一个变量存被后移的数的最小值即可
E
-
显然二分答案
-
考虑枚举纵坐标
-
考虑左上角区间:令左上区间合法的横坐标一定是一个后缀,左下角区间同理
-
注意到:如果从上到下枚举 \(y\),那 \(x_{1},x_{2}\) 都有单调性,均摊 \(O(n)\)
-
如果左边两个区间已经满足约束,考虑右边的区间,显然分割点越靠左越好,所以取 \(x_{1},x_{2}\) 中右边的作为分界点,check右边两个区域合法性即可
-
实现:开两个树状数组分别维护上下两半每个纵坐标位置上的点数即可
-
总时间复杂度 二分+bit+枚举 = \((n\log ^2n)\)
F
- 网络流不会