首页 > 其他分享 >洛谷5324 删数

洛谷5324 删数

时间:2023-10-05 17:11:06浏览次数:42  
标签:cnt 洛谷 数字 覆盖 一个 删数 5324 端点 区间

首先给出结论:对于一个数列,某一个数字\(i\)的个数有\(cnt[i]\)个,那么此数字可以覆盖一个区间\([i-cnt[i]+1,i]\),遍历每一个数字并记录每个区间,最后答案就是没有被覆盖到的数字的个数

证明:任意修改一个数字,会使一个\(cnt\)减一(这至多会产生一个没有被覆盖的数),另一个\(cnt\)加一(这至多会让一个原来没有被覆盖的数被覆盖)

而一个数列能被删除,当且仅当\([1,n]\)中每一个数字都被覆盖了一遍,而且只被覆盖了一遍(想下为什么?)

所以我们最少要让所有没被覆盖到的数字都被覆盖到

那么我们接下来构造一个方法来达到这个下界

由于\(cnt\)的和为\(n\)且原数列长为\(n\),如果有数字没有被覆盖,那么证明就会有一些数字被重复覆盖或者说某一个数字产生的区间的左边界小于\(1\),而且没被覆盖的数字的个数与后两者个数之和是相等的,我们每次操作从后两者中的某一个修改(让被重复覆盖的数字被覆盖的次数减一或者让产生区间左边界小于\(1\)的数字的个数减少一个),然后放到某一个空位上,每一次都这么干。最后刚好达到下界

证毕

那么考虑修改,对整个数列加一或者减一,就是让所有产生的区间往旁边移动一位,我们采用相对性的思路,让查询区间往旁边移动一位,这样就可以极大降低复杂度

但是随之产生一个问题,在查询区间移动的过程中,可以回出现某一个\(i\)小于区间左端点或者大于区间右端点,这时候是否对我们的结论有所影响?

当某一个\(i\)小于区间左端点的时候是没什么影响的,但大于区间右端点的时候是有影响的

因为每次修改操作会使某一个数的\(cnt\)减一,但是这个数产生的区间的右端点并没有改变,而是左端点加一

所以对一个大于查询区间右端点的数,我们肯定要把所有的这个数都修改掉(不然肯定无法删除),而每次只能让其产生的区间的左端点加一,所以我们不妨一次性让其\(cnt\)变为0(这与一次次修改没什么区别),即不算这一个点对查询区间的贡献,再按原结论做就没事了

这里线段树维护要用到类似扫描线的方法

标签:cnt,洛谷,数字,覆盖,一个,删数,5324,端点,区间
From: https://www.cnblogs.com/dingxingdi/p/17743578.html

相关文章

  • 洛谷 Power Tree 题解
    题目链接PowerTree分析将叶子节点按dfs序重标号后,每次控制操作可以转化为将子树内叶子节点所在区间加(或减)一个数不难可以想到将叶子区间进行差分每次对\(l\)到\(r\)的操作可以转化为将\(l\)上的数转移到\(r+1\)上每次操作后差分数组的和不变将所有点权变为\(0\)......
  • 洛谷P5303
    这一道题跟NOIP集训模拟赛1的D题非常像,当然D题的递推方程更复杂(磁盘里面有题解pdf)对于这一道题,我们设f[i][0]表示铺了i列而且全部用的完整的砖的方案数f[i][1]表示铺了i列,但是第i列缺了一个而且第i列的唯一的那一块砖头就是1X1其中一个f[i][2]表示铺了i列,但是第i列缺了一个而且......
  • 【题解】洛谷 P1003 [NOIP2011 提高组] 铺地毯
    原题链接解题思路如果直接按照题意开一个二维数组来模拟每个点最上面的地毯编号,会发现所占空间最坏情况下约为(2*105)2*4B=4*1010*4B=1.6*1011B≈149GB,程序完全无法运行。但实际上没有必要将每一个点的信息记录下来,只需要记录每一块地毯能覆盖哪些点,再依次判断哪那些地毯可以......
  • 洛谷5343总结
    这题我们很容易想出一个状态,设f[i][j]表示前i个长度划分长度为j的块的总方案然后我们自信的写出\(f[i][j]=f[i-1][j]+f[i][j-a[i]]\)但这其实是错的!这跟背包很想,+f[i][j-a[i]]这一项的本质是说这个长度为j的块的最后一段的长度是a[i],但其实最后一段的长度是不定的,所以我们可以写......
  • 洛谷 P5811 - [IOI2019] 景点划分
    小清新构造题。不妨假设\(a\leb\lec\)。显然我们会让大小为\(a,b\)的部分连通,这样肯定是不劣的。建出DFS树,考虑其重心\(r\),如果\(r\)的某个子树大小\(\gea\),我们在这个子树内挑一个大小为\(a\)的连通块,在抠掉这个子树之外的部分挑一个大小为\(b\)的连通块即可。......
  • 洛谷P3978 概率论
    首先考虑当节点数为n时,有多少个二叉树设\(f[i]\)表示节点为i时二叉树的个数,有\[f[n]=\sum_{i=1}^{n-1}f[i]f[n-1-i]\]注意这种递推式子也是卡特兰数的一种形式,所以为卡特兰数其实手写出前四项为1,2,5,14我们就要有足够的敏感度知道这是卡特兰数然后考虑叶子个数我们假设我们......
  • 【洛谷 P1305】新二叉树 题解(结构体数组+先序遍历+二叉树)
    新二叉树题目描述输入一串二叉树,输出其前序遍历。输入格式第一行为二叉树的节点数。()后面行,每一个字母为节点,后两个字母分别为其左右儿子。特别地,数据保证第一行读入的节点必为根节点。空节点用*表示输出格式二叉树的前序遍历。样例#1样例输入#16abcbdicj*d**i**j**......
  • 洛谷题解 | AT_abc321_c Primes on Interval
    目录题目翻译题目描述输入格式输出格式样例#1样例输入#1样例输出#1样例#2样例输入#2样例输出#2样例#3样例输入#3样例输出#3题目简化题目思路AC代码题目翻译【题目描述】你决定用素数定理来做一个调查.众所周知,素数又被称为质数,其含义就是除了数字一和本身之外不能......
  • 解题报告 洛谷P2155 [SDOI2008] 沙拉公主的困惑
    P2155[SDOI2008]沙拉公主的困惑题目题面非常的简洁,求\(\sum\limits_{i=1}^{n!}[i\perpm!]\)直接颓式子,\[\begin{aligned}ans&=\dfrac{n!}{m!}\cdot\varphi(m!)\\\\&=\dfrac{n!}{m!}*m!\prod\limits_{p\midm!}[\dfrac{p-1}{p}]\\&=n!\cdot\dfrac{\......
  • 洛谷 P7075[CSP-S2020] 儒略日
    [CSP-S2020]儒略日题目描述为了简便计算,天文学家们使用儒略日(Julianday)来表达时间。所谓儒略日,其定义为从公元前4713年1月1日正午12点到此后某一时刻间所经过的天数,不满一天者用小数表达。若利用这一天文学历法,则每一个时刻都将被均匀的映射到数轴上,从而得以很方便的......