【杂题乱写】2023-11 #2
ARC147C
Find the maximum L and the minimum R to be mL and mR respectively.
If mL<=mR holds, we can set every to be mL and the contribution will be 0.Otherwise we'd greedily set and . All the other s would choose a position between and there will be a contribution of where represents the number of s who don't have a fixed position.
Sort the array L & the array R will help.
ARC157C
Square number equals to the ways of choosing two stuffs during the process.So calculate with DP: let represents the number of ways which end at (i,j) with 0/1/2 YY(s) chosen and the latest character is Y or not.
Transitions are trivial.
ARC156B
其实你强制 mex 从小到大加入就行了是不是,这时候就变成了插板。如果有某个位置没数了,就先强制一个集合的 mex 是它再插板咯。
ARC157E
由于没有 YY 的出现,所以 Y 的出现位置本质上是一个独立集。
感觉这个 B 个 XY 的限制很奇怪,仔细一想就是在钦定 Y 的位置,至于根是不是 Y,这个明显是 corner case。这时候有一些初步的想法就是状态里面记录 Y 的数量和 Y 所有儿子的数量。
这样的话题目里 树形态的性质就没有用上,不过你发现如果非叶子的 Y 最多只能有 ,或者说有几个叶子几个非叶子确实是确定好的。那么就想起来可以记录满足某个状态下另外一维的最值,独立集又满足从最值开始可以通过删点得到任何一个数。于是设 表示 点子树里面选了 个叶子,再根据独立集的要求加一维
ARC165B
最不济,可以直接 sort 最后 个。不想让后 K 个变的元素多,所以往前挪挪 sort 的区间的左端点,怎么判断能不能挪到某个左端点呢?
首先不能破坏原来 这部分的结构,于是这段里面要单调递增,且最大值比后面的最小值要小。
ARC165C
想了想一个环的情况,偶环肯定二分图染色,奇环就最大的边两端同色然后再染色。这个为什么不能拉到最小生成树上呢?于是建立最小生成树,每条非树边按照上面的方法去取 min 即可:如果两端点颜色不同可以忽略(因为两条树边加和比一树边一非树边肯定更短一些),否则 checkmin.
ARC165D
每个位置的字符看成点。对于每个限制,先强制 。得到有向图可以有若干强连通分量,这里面的点对应位置的字符肯定想等,那么有些限制需要依赖 。
所以我们迭代缩点,每轮判断是不是某个限制不能满足在它当前 解决战斗,如果不能那么就连边。因为 这样的遍历不会有问题。
但是现在其实你会有疑问遍历的轮数是什么样的,其实你只要加边的时候只加那些 dag 链下游连向上游的边就行了,这样每次有加边就会合并至少两个点,就最多进行 轮了
上下游就是拓扑序,拓扑序按照 2-sat 那套理论就通过 scc 编号判断很香。
ARC166C
真的这题确实是不会做。
注意到涂色是 LU/RD 那么我们可以按照对角线分割棋盘,比如每个小方格都从左下向右上连一条边。这样网格图变成了 个小三角形。把题意变成给小三角形涂色,画画图就能发现现在是一个三角形涂色之后与它直角边相连的两个三角形是不能涂色的。互相影响的三角形在类似矩形对角线上,对角线之间独立。
剩下的工作比较 trivial,就是一个前缀积的事。
ARC144D
超级喜欢这题的啦。
还是看成集合操作,如果你有 的值整体就确定了。只不过需要保证这些都是属于 .
把上面的记号换成 捏客官。这时 把 整体减去 那么变成 。此时计算排列 的数量,限制就是 那么对于任意一种 都有 的方案数是
所以我们果断枚举 。因为是绝对值的和,每个 可以选择正负,所以还得枚举有多少个不是 。至于 总和知道了内部怎么分配,就是一个插板的事。进行组合恒等变换即可。
ARC162D
如果某个大小大于 的连通块在某个时刻出现了,那么就会造成 的贡献,于是统计概率。
如果想要某种特定形态的连通块出现,那么必须保证这个连通块里面的点不被删掉,且和它相连的点都被删光了,于是有一种方法就是 表示“以 为根的子树里面有 个点和 联通,这些点的出边一共 条”的方案数。
考虑这个大小不小于 的连通块和他的 条出边相连时每个时刻大小都是不小于 的,那么每个点被点掉的概率时相等的,那么它存在的概率就是
ARC157D
两维切割一个一个看。注意到要求每若干行上的 Y 的数量相等,这个数量是 Y 数总和(记为 S)的因数,所以枚举之。
枚举行之后分割列也是类似的原理。每种行总数对应的列的分割方案肯定是相等的(因为只有空列会影响选择)所以配合二位前缀和继续枚举之。
kenkoooo 评分高是因为大家都不打表吗?
ARC154E
听说这题很拽。
一开始想的时逐对 统计产生贡献的概率,但是不一会就发现这个式子可以拆开,变成对每个 统计
再看两眼发现如果一个是 产生的逆序,一个是 产生的逆序,我给他交换一下式子的值不变。那么我使大劲交换,最后剩下的是 。那么要求所有情况下 的和。
感觉分析每个位置最后谁跳过来了还是太抽象了,不如分析每个数跳到哪里了。然后我觉得这不能再是生成函数搞折线乘积了吧。然后我就不会做了。
std 大概就是也是看两眼这个折线,但是它比较牛逼,也就是说如果你 挪窝了,挪到 和挪到 的概率是一样的,为什么我就没想到四项取 min 能把 y 换成 n-y+1 再往里带呢……所以只要挪了期望位置就是
所以分成这个 从未挪窝 和 曾经挪了 计算就行了。
ARC154D
想一想 变成 那么对于 全问一遍那么可以把所有数分成两拨,一拨比另一拨严格大。随机问的话复杂度看起来就是 ,不过我没写就是了。
std 是注意到了 在 只有一个 满足条件,那么搞一个摩尔投票类似物可以把 搞出来,这样的话就用 比较 的大小,写一个归并排序就行了。
ARC166D
贪心让每个线段尽可能靠后结束。开始存 个从负无穷延伸过来的区间往后走。对于某个 如果现在存的区间数量大于 那么就选择开始点最小的一些结束。如果相等就继续,否则再存 个从 开始的区间(i>1)。
最后剩下的区间延申到正无穷,每个区间都是射线就没有最大值。
这怎么当成 ARC-D 的???
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律