首页 > 其他分享 >7.19 做题记录

7.19 做题记录

时间:2023-07-19 20:34:58浏览次数:34  
标签:二分 连通 记录 复杂度 奇偶性 7.19 考虑 可以

[AGC060E] Number of Cycles

交换 \(x_i,x_j\) 必定使得 \(y\) 也有一对交换,于是 \(f(x) + f(y)\) 的变化量为偶数,所以只要这个数与初始奇偶性不同则无解。

一个初步的想法是,找到 \(f(x) + f(y)\) 的上下界调整。

上界在 \(x = 1,2,3...,n\) 时取到,可以用反证法证明。

下界的构造是最困难(adhoc)的,事实上我们有结论 \((f(x)+f(y))_{min} = 2 ~or~ 3\)。

给出以下构造,假设初始有两张空的图 \(G,H\):

  • 对于 \(i = 1,2...n-2\),找到 \(v\) 使得 \(G\) 中 \(i,v\) 不连通,\(H\) 中 \(i,p_v\) 不连通,连接 \((i,v)\) ,\((i,p_v)\)

  • 对于 \(i = n - 1\),同样找到 \(v\) 使得 \(i,v\) 在 \(G\) 中不连通,连接 \((n-1,v)\)

考虑这个做法的正确性,图中每个点的度数小于等于 \(1\),每次至多两个点不能选,而至少有三个点,且这样构造的 \(G\) 只有一个环,\(H\) 至多两个环,于是 \(f(x) + f(y) \leq 3\)。

我们考虑调整取到 \(min\) 的 \(x\) 使得,\(x\) 可以在 \(O(n)\) 次交换后变成 \(1,2,3,...,n\),于是我们二分交换次数(或者说二分 \(f\)),贪心地调整使 \(f\) 增加并 \(check\),时间复杂度 \(O(n \log n)\)。

总结:

  • 在求上下界时初步想法时二分,但是无法 \(check\),考虑直接构造。

  • 调整的过程满足单调性,可以二分。

[AGC058C] Planar Tree

意识流题解:

相邻相同合并,\(1,2\) 相邻删 \(1\),\(3,4\) 相邻删 \(4\)。

剩下必然是 $ \leq 2$ 和 $ > 2$ 交替,每次选相邻的连起来,选一个作为叶子删掉,这蕴含了删掉跨过 $ > 1$ 个的情况,且不会相交。

跨过 $ \leq 1$ 的有效情况只有 \(312,423,323\),我们可以删掉 \((2,3),(2,4),(1,3)\),这导出了必要结论:\(cnt_2>cnt_4,cnt_3>cnt_1\)。

总结:

  • 通过偏序关系去掉无用状态。
  • 从边界入手化归。(例如树剥叶子)

P5292 [HNOI2019] 校园旅行

首先有一个浅显的 \(O(deg^2)\) 做法,回文串两端加上一个相同字符依然是回文串,我们把所有 \(ans = 1\) 的点对 \((i,j)\) 放进队列里,每次取出一对点扩展它们的相邻点。

考虑到 \(n\) 远小于 \(m\) ,尝试将边数降低。

对于一个同色连通块,在经过它后,我们必然能添加任意 \(2x\) 个这个颜色的标记,于是只关心标记的奇偶性,考虑一条路径 \(a \to S \to b\),其中 \(S\) 表示一个同色连通块,那我们进出 \(S\) 的点对之间标记的奇偶性是什么样的呢?

一般的连通图无法判断,但是二分图有这样的性质:两点之间边数的奇偶性确定。于是我们只需要保留它的一颗生成树,不是二分图的,我们只要保证有一个奇环,就能让经过的标记数量奇偶都有可能了,这可以在生成树上添加自环得到。

将所有同色连通块进行以上操作,把原先属于同一个同色连通块的点集视为一个点,剩下的图必然是一张二分图,于是我们继续保留一颗生成树,此时边数已经降到 \(O(n)\) 级别,直接执行上述 \(O(deg^2)\) 做法,最后时间复杂度 \(O(n^2)\)。

总结:

  • 图上奇偶性问题考虑二分图
  • 通过局部结构覆盖所有情况

CF1738G Anti-Increasing Addicts

把删格子转化成选格子,记 \(C = n^2 - (n - k + 1)^2\)。

容易证明在满足条件的情况下,至多选出 \(C\) 个格子。

现在来考虑“不存在 \(k\) 个严格单调递增地方格”的网格有什么性质,手玩后发现它可以分层,而要选满 \((n-k+1)^2\) 个,就必须得选出恰好 \(k\) 个完整的对角线。

贪心地,每次都选取剩下的点中能加入当前路径的点中最靠左的,如有多个选择最靠上的,先向右再向下走,时间复杂度 \(O(n^2)\)。

总结:

  • 题目中要求恰好满足某个数,可以去考虑为什么是这个数。
  • 本题中“分层”是解决问题的关键,可以先不考虑覆盖格子,只关心不存在 \(k\) 个严格单调递增地方格这个条件,也可以考虑 dilworth。

[AGC054D] (ox)

假设没有 \(o,x\),最终串确定,答案就是 \((\) 按顺序的两两距离和。

结论是 \(ox\) 相对顺序不变,最终最优的字符串和把 \(o,x\) 展开后的最优字符串一样。

感性的理解:我们需要让原来不能放 \(x\) 的地方能放 \(x\),那么把 \((\) 或者 \()\) 位移不如让 \(x\) 位移来的优,可以举例发现。

简单 \(dp\),时间复杂度 \(O(n^2)\)。

总结:

  • 结论一本质上是去除无效转移,结论二则是基于 “不能放 \(x\) 的地方能放 \(x\)” 的贪心

  • 充分利用暴力来猜测性质

  • 从特殊情况入手,比如只有 \(x\)

[AGC059C] Guessing Permutation for as Long as Possible

首先这是一张竞赛图,不妨将他缩点,形成了若干条链。

如果两条链有交且链内的偏序关系已知,那么他们的并的偏序关系也就知道了,而这可以化归为 \(a>b,b>c \to a>c\),所以排列不能存在这样的二元组,这是一个 \(2-sat\) 问题,由于只要求方案数,可以用带权并查集维护,\(O(n^3)\)。

总结

  • 图论模型转化(\(n\) 很小所以可以建 \(n^2\) 的图)

  • 上面化归的思想可以用整体法解释,也可以说是“本源”的边界情况。

[AGC047D] Twin Binary Trees

暴力就是枚举两个叶子求 \(lca\),然后算一下乘积。

那我们不妨枚举第一棵树上的 \(lca\),设为 \(u\)。
那么要计算的是“ \(u\) 的左子树的叶子和右子树叶子两两对应的 \(p\) 在第二棵树上的 \(lca\) 对应的乘积 ”。

这个可以在第一棵树上 \(dfs\) 的过程中建立第二棵树上对应叶子的虚树,容斥减掉同一颗子树的贡献来求,复杂度大概是 \(O(n^2 2^n)\) 的。

完全二叉树上的虚树有更简单的建法。

总结:

  • 转换枚举对象

标签:二分,连通,记录,复杂度,奇偶性,7.19,考虑,可以
From: https://www.cnblogs.com/treap/p/17566638.html

相关文章

  • 7.19日
    一、科一刷题,可以及格了已经。二、打杭州电子科技大学多校训练营三、学了一下数论的求逆元,还有求组合数。四、负重跑了三公里,练引体向上。五、明天继续刷科一题,学算法,有时间就学一下html......
  • 7.19 后记
    我去,崩原铁Kuglarz用\(Dijkstra\)TreeI加权,二分最优比例生成树树的重心Centroids一个点不是重心说明一定有一个子树大小超过\(n/2\),削掉这颗子树一部分(最大不超过\(n/2\))NP-Hard连续攻击游戏老师教的:并查集我写的:二分图一边为装备,与属性连边一边为\(1......
  • 2023.7.19 周三:冒泡排序
    1importjava.sql.SQLOutput;2importjava.util.Arrays;3importjava.util.Scanner;4//冒泡排序5publicclasstest{6publicstaticvoidmain(String[]args){7int[]a={5,4,6,8,9,1,7,2,3};8intarray[]=sort(a);9S......
  • 7.19
    搜索DFS就是通过递归来搜索,枚举所有情况来求解。搜索相对于多个for循环嵌套来说肯定效率更高,在数据会很大时更容易实现,但有时避免不了TLE,所以需要进行优化:剪枝1.最优性剪枝再求解时如果当前情况比已知的解差,或无法优于已知解,然后return,所以就可以先搜索容易成为最优解的方......
  • day83(2023.7.19)
    1.使用SqlSession操作数据库 2.Mapper动态代理原理3. MyBatis新增 运行结果:4.MyBatis修改没优化前: 优化后:(只需写一次就ok了) 运行结果:4.MyBatis删除、根据Id查询 运行结果: 5.根据ID查询用户和运行结......
  • N58(4G模块)通过AT指令连接TCP数据传输调试记录(1)
    背景有方科技的N58-CA4G模块+以太网+TCP客户端+SSCOM串口助手+AT指令的方式调通TCP通信开发流程1.模块初始化2.非透传TCP客户端通信流程一.模块初始化1.模块初始化2.非透传TCP客户端通信流程小tips:代码主要是按照流程复现,初始化代码可以使用例程通用代码其中会用到一些调用函数,包......
  • 7.19-分摸 一枪2模(09案例分析)包括 分模-做虎口-做摸胚
      ......
  • 7.19-分模(接着上午那个案例 只不过多了开框,打螺丝,管理图层,顶针(丝筒针)中托司)这几个功能
    开框开在上下模核心的产品框位置(不开框的话打螺丝会穿透上下模的位置)正常情况下打螺丝会在上模框的位置打打在模仁位置的一半位置而不是直接打穿切记开框之后要移除参数螺丝打在上下模虎口的位置 ......
  • 记录Arthas在一次性能调优过程中实践
    背景 使用jmeter对系统进行压力测试,该业务流程请求大致调用:jmeter压力机——> A系统 ——> B系统——>A系统.  A系统作为基础平台,请求先到A系统,然后转到具体的B业务系统,B接口逻辑中需要调用A系统查询基础数据。问题描述 当使用高并发访问系统时,整个系统卡住......
  • 7.19考试总结
    总结这次考试,我发现了几个问题。dp状态和转移方程写不出。看出了是dp却不知道如何去实现。平时的思考不够细致认真。数据的范围没有看清。计划接下来的一个月重点突破dp学习多种dp熟练动态转移方程和状态。 ......