【题解】CF2047
A
- 显然每次完整地放完都是一个正方形,正方形的边长每次 +2,初始值为 1
- 所以只需要 check 每天的块数是否是奇数的平方,然后再做前缀和即可
B
- 显然字母出现顺序不重要而出现次数重要,直接放桶并不考虑出现次数为 0 的数
- 考虑多重集意义下的排列,设序列总长度为
,第 钟数出现的次数为 ,显然排列数为 - 显然剪掉的数越小越好,改成的数越大越好,所以找把出现次数最少的数改成出现次数最多的数即可
- 如果所有数出现次数全相同,则要保证剪掉和改成的数不同
C
- 注意到相当于
个二元组,其中一个取两个数,剩下的都取一个数,求最值 - 直接先全取大值,再取小值里取最大的即可
- 这题怎么能在 C 的
D
- 注意到:如果一个数后面有比自己小的数,那它一定后移
- 注意到:一直循环上述过程,那最后的序列一定单调不降
- 注意到:一定有一个极长的答案序列的前缀满足:是原序列的子序列,单调不降
- 所以我们可以随意控制那些不在这个序列里的数跑到后面去的顺序,也就是说,我们可以让不在这个序列里的那些数在答案序列后部仍然单调不降
- 显然只需判断:哪些数后面有比自己小的数
- 处理出后缀最小值,如果一个数大于后缀最小值,那它后移
- 让一个数后移的值还可以来自于这个数之前的被后移的数,所以另用一个变量存被后移的数的最小值即可
E
-
显然二分答案
-
考虑枚举纵坐标
-
-
考虑左上角区间:令左上区间合法的横坐标一定是一个后缀,左下角区间同理
-
注意到:如果从上到下枚举
,那 都有单调性,均摊 -
如果左边两个区间已经满足约束,考虑右边的区间,显然分割点越靠左越好,所以取
中右边的作为分界点,check右边两个区域合法性即可 -
实现:开两个树状数组分别维护上下两半每个纵坐标位置上的点数即可
-
总时间复杂度 二分+bit+枚举 =
F
- 网络流不会
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效