例题计划

一天看十个题解思路和十个优秀代码,自己挑题目。尽量挑选自己的分数段的。
注明:(思路)/(代码)
时间:晚自习回来之后。可以适量思考。

2022.11.11

CF546E

【题意】
给定 nm 边无向图。第 i 个点有 ai 个士兵,并且每个士兵可以选择留在原地或者前往与当前位置距离为 1 的点。求是否存在一个士兵迁移方式使得第 i 个点有 bi 个兵。
n100,m200,ai100,bi100
【分析】
首先想到对每一条边设置元,跑高斯消元。但是有问题:这其中还包含了一些不等关系:每个点流出去的元的总和小于等于 ai
考虑网络流。考虑 s 和每个点的入边连接一个流量为 ai 的边,每个点的入边和它能到达的每一个点连接一个流量为 inf 的边,每个点的出边和 t 连接一个流量为 bi 的边。然后跑最大流,是否合法看总流量是否等于 ai。方案看残量网络中反边容量也就是正边已经流的量。

CF713B

【题意】
有个 n×n 的矩阵中有两个不相交的矩形。你可以进行不超过 200 次询问,每次询问划定一个矩形范围,然后系统会返回完全包含于这个矩形范围的矩形个数(02),需要找出两个矩形在何处。
n216
【分析】
先二分出两个矩形之间的边界,然后分别二分即可。每次独立的二分只需要 16 次,绰绰有余。

2022.11.12

ABC277F

【题意】
有个 n×m 的矩阵,每个元素是 0 或某个正整数。可以进行若干次操作,每次把矩阵中两行交换,或者两列交换。需要使得最后的矩阵忽略 0 之后,对于每个元素按照其标号字典序排序之后是一个不降序列。
n×m106
【思想】
简化联通关系的建立。
【分析】
首先,转换操作。进行若干次操作之后,可以将行号排成任意排列,列号排成任意排列。例如:

[123456789101112]

可以将行号排成 {2,3,1},列号排成 {2,1,4,3},那么矩阵变成:

[564231111210897]

其次,分析怎样的矩阵满足条件。

  • 行内元素在 sort 之后是不会变化的。那么如果找到每一行最小和最大的非 0 元素,然后排序,如果某一行的最小元素小于上一行的最大元素,那么就不可以。
  • 每一行还要 sort。那么如果 ai,j<ai,k,在列排列中 j<k 必须满足。如果出现冲突,那么就不可以。考虑用图维护这样的信息:对于 ai,j<ai,k,连边 jk。那么只有当图为 DAG 时才是满足条件的。

这样,时间复杂度是 O(nw) 的。不能通过此题。考虑优化。

可以考虑到,如果 a<b<c,那么不需要建立 ab,bc,ca 三条边,而是建立 abc 即可。这样形成一条链,不管哪个后面的结点往前连边都是会出现环的。

但是有一个问题:如果出现一个块中有若干个相等的数,那么这些数均要和前后连边。注意到这个之后就好做了,这个就一个虚点,然后通过虚点建立联通关系。

posted @   OIer某罗  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示