【题解】CF2047

A

  • 显然每次完整地放完都是一个正方形,正方形的边长每次 +2,初始值为 1
  • 所以只需要 check 每天的块数是否是奇数的平方,然后再做前缀和即可

B

  • 显然字母出现顺序不重要而出现次数重要,直接放桶并不考虑出现次数为 0 的数
  • 考虑多重集意义下的排列,设序列总长度为 n,第 i 钟数出现的次数为 ki,显然排列数为 n!Πi=1mki!
  • 显然剪掉的数越小越好,改成的数越大越好,所以找把出现次数最少的数改成出现次数最多的数即可
  • 如果所有数出现次数全相同,则要保证剪掉和改成的数不同

C

  • 注意到相当于 n 个二元组,其中一个取两个数,剩下的都取一个数,求最值
  • 直接先全取大值,再取小值里取最大的即可
  • 这题怎么能在 C 的

D

  • 注意到:如果一个数后面有比自己小的数,那它一定后移
  • 注意到:一直循环上述过程,那最后的序列一定单调不降
  • 注意到:一定有一个极长的答案序列的前缀满足:是原序列的子序列,单调不降
  • 所以我们可以随意控制那些不在这个序列里的数跑到后面去的顺序,也就是说,我们可以让不在这个序列里的那些数在答案序列后部仍然单调不降
  • 显然只需判断:哪些数后面有比自己小的数
  • 处理出后缀最小值,如果一个数大于后缀最小值,那它后移
  • 让一个数后移的值还可以来自于这个数之前的被后移的数,所以另用一个变量存被后移的数的最小值即可

E

  • 显然二分答案

  • 考虑枚举纵坐标

  • image

  • 考虑左上角区间:令左上区间合法的横坐标一定是一个后缀,左下角区间同理

  • 注意到:如果从上到下枚举 y,那 x1,x2 都有单调性,均摊 O(n)

  • 如果左边两个区间已经满足约束,考虑右边的区间,显然分割点越靠左越好,所以取 x1,x2 中右边的作为分界点,check右边两个区域合法性即可

  • 实现:开两个树状数组分别维护上下两半每个纵坐标位置上的点数即可

  • 总时间复杂度 二分+bit+枚举 = (nlog2n)

F

  • 网络流不会
posted @   yeyou26  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
点击右上角即可分享
微信分享提示