首页 > 其他分享 >[CF1718D] Permutation for Burenka 瞎扯

[CF1718D] Permutation for Burenka 瞎扯

时间:2024-04-08 19:56:39浏览次数:21  
标签:Burenka 匹配 问题 CF1718D 判定 Permutation 区间 我们 贪心

尝试回到 1, 2 月份的文风。

感觉,自己思考的时候最好不要乱走,模拟一下考场上的氛围和紧张感,让自己保持专注。

但是当你已经了解了这个问题的全貌后,随机游走一会,仔细观察问题,梳理思路,感觉收获会比较大。

所以看起来我不擅长自己想题,比较擅长马后炮。

[CF1718D] Permutation for Burenka *3300

转化条件,显然题中描述的就是两个序列的笛卡尔树同构。

现在问题转化为:把 \(s\) 和一个未知的 \(d\) 填进去,让你 判定 是否存在合法方案。

对于判定问题,我目前知道的思路:

  • 归纳 / 贪心构造。
  • 拟合几个必要条件,尝试证明其充分性。
  • 对于存在较明显过程性的题目,尝试刻画其最终局面。
  • dp 套 dp 那样的判定。似乎可以说是自动机。

初看这个问题我们无从下手,此时我们有一些基本的手段:

  • 列出有效信息。本题中我可以知道笛卡尔树上每个节点填的范围 \([l_i, r_i]\)。
  • 问题特殊化,考虑一条链上的情况,我们可以发现两件事情:
    1. 一个粗略的判定方法:对于连续的一段空白点,其对应的值域上 \(s\) 中是否存在相同数量的对应的点。允许一次判定失败。
    2. \(d\) 的取值范围是一段区间。

对于第 2 个性质,我们可以直接猜测,这个结论在原问题上同样成立。

对于第 1 条,我们发现并不好迁移到树上,但是本身问题不大,于是我们考虑 找等价表述

然后我们又有一个方法是 交换维度考虑。刚刚从树上的角度,现在我们从 \(s\) 的角度想,问题表述为:每个 \(s\) 都能找到一个对应的 \(s_i\in [l_j,r_j]\)。也就是 匹配

这显然是个必然条件。它充分吗?是的。证明:考虑调整法。不合法的位置必然相邻,而相邻位置限制必然相同。于是我们不断交换直至合法即可。

抽象模型,考虑这个二分图匹配怎么做,如果给定 \(d\) 我们有经典贪心:区间按 \(r\) 排序后能选就选。

还剩一个问题:\(d\) 的取值范围到底怎么求。

事实上 \(d\) 取值是一段区间有若干种理解方式,比如匹配到最后剩下一个区间的交,以及 \(+1,-1\) 之类的调整结合贪心过程理解。

严谨的证明要通过二分图。完美匹配问题考虑 Hall 定理描述。Hall 定理思考的一个 trick 是 优先选自由度高的一方。比如这个题,两边分别是点和区间,应该思考区间。

对 Hall 定理熟悉的话应该了解这种分析方法:我们枚举一段区间 \([L, R]\),如果有完美匹配那么 \(|\{i|[l_i, r_i]\subseteq [L, R]\}|\le |\{i|s_i\in [L, R]\}|\)。

定义 \(F(L,R)\) 为这一串式子。由于没有完美匹配,存在 \(l,r\) 使得 \(F(l,r)=1\),那么 \(d\) 必然在所有这些 \([l,r]\) 的交的范围内。得证。

哦其实还有 \(F(l,r)>1\) 的,这种平凡情况直接判了就好。

所以我们知道的 \(d\) 的求法,按 \(r\) 升序,\(l\) 降序分别求解一次,即得 \([L, R]\)。

唉但是感觉这类贪心题还是强行扫描线 + 线段树维护来的舒服啊。

标签:Burenka,匹配,问题,CF1718D,判定,Permutation,区间,我们,贪心
From: https://www.cnblogs.com/663B/p/18122406

相关文章

  • SP64 PERMUT1 - Permutations 题解
    题目传送门前置知识动态规划基础解法设\(f_{i,j}\)表示\(1\simi\)的全排列中存在\(j\)个逆序对的方案数,状态转移方程为\(f_{i,j}=\sum\limits_{k=j-\min(i-1,j)}^{j}f_{i-1,k}=\sum\limits_{k=0}^{j}f_{i-1,k}-\sum\limits_{k=0}^{j-\min(i-1,j)-1}f_{i-1,k}\)。需......
  • 「CF1677D」Tokitsukaze and Permutations的题解
    「CF1677D」TokitsukazeandPermutations首先,若\(v\)的后\(k\)个数中有一个\(>0\),或有\(v_i>i-1(i\in[1,n])\),则无解。我们发现,每次对\(p\)进行了一次操作后,\(v\)也一定会对应的进行一次变化,所以统计\(p\)的个数就相当于统计\(v\)的个数。我们对于每一次冒泡排序......
  • CodeForces 1936E Yet Yet Another Permutation Problem
    洛谷传送门CF传送门首先设\(a_i=\max\limits_{j=1}^ip_j\),\(b_i=\max\limits_{j=1}^iq_j\)。直接容斥,钦定有多少值不同的\(a_i\)使得\(a_i=b_i\)。然后再把钦定的每种值转化成每种值第一次使得\(a_i=b_i\)的位置\(i\)。也就是说我们现在要钦定一些位置,......
  • P9632 [ICPC2020 Nanjing R] K Co-prime Permutation
    原题链接题解我一开始也很困惑,然后我想要不数据范围小一点我构造看看当\(n=5\)时\(k=0\)可不可以\(k=1\)可不可以\(k=2\)可不可以然后根据直觉,\(gcd(a,a+1)\)始终为一,且一和任何数的最大公约数都为一,自己和自己的最大公约数还是自己,所以萌生了以下想法把一后面......
  • AT_abc283_f [ABC283F] Permutation Distance 题解
    分析分类讨论。对\(|p_i-p_j|+|i-j|\)分类讨论,有:\((p_i+i)-(p_j+j)\),\(p_i>p_j\landi>j\)。\(-(p_i-i)+(p_j-j)\),\(p_i<p_j\landi>j\)。\((p_i-i)-(p_j-j)\),\(p_i>p_j\landi<j\)。\(-(p_i+i)+(p_j+j)\),\(p_i<p_j\landi<j......
  • ABC134F Permutation Oddness
    [ABC134F]PermutationOddness好题,牛牛的一个套路——\(\textsfH\)\(\textsf{anghang}\)写起来简单,想起来难的一个东西,难点主要是在状态设置上我们可以把\(1\simN\)拆点,于是原题相当于求一个二分图的完美匹配,并使其怪异度为\(k\)我们考虑设置\(f_{i,j,k}\)......
  • [ARC140F] ABS Permutation (Count ver.) 题解
    洛谷题面传送门AT题面传送门发现不太好直接求,考虑将\(P\)映射到\(P^{-1}\)上,这样题目中的条件就变成了\(|P_i-P_{i+M}|=1\)。因此我们可以对模\(M\)的每个剩余系做\(M=1\)的情况,然后最后快速幂合并。考虑\(M=1\)的情况怎么做。记\(f_i\)表示\(K=i\)的方案数,......
  • Gym 104855E Perfect Permutation
    考虑最后对于每个\(i\)是选\(a_i,b_i,c_i\)之中哪一个的序列。通过观察能发现序列去掉\(b\)后满足开头为\(c\)末尾为\(a\)这个序列就是合法的,同时整个序列都为\(b\)也是合法的。首先如果是个合法序列,对于去掉\(b\)后的开头,其余不是\(b\)的下标肯定比其大,所以......
  • E. Klever Permutation
    E.KleverPermutationYouaregiventwointegers$n$and$k$($k\len$),where$k$iseven.Apermutationoflength$n$isanarrayconsistingof$n$distinctintegersfrom$1$to$n$inanyorder.Forexample,$[2,3,1,5,4]$isapermutation,but$[1,2,......
  • E. Klever Permutation
    题解假设a1a2a3...ak ak+1ak+2...an是符合要求的数组,那么我们可以推断出:a(k+1)=a(1)+1;a(k+2)=a(2)-1;...a(2k+1)=a(k+1)+1;...因此我们知晓奇数位的数要比较小,偶数的位置要比较大;又题目说明一定有解,所以我们假定a1=1,a2=n再递推出其余各项。Code#include<b......