CF1404C:Fixed Point Removal(离线)(树状数组二分)

解析

写了不少线段树上二分,原来树状数组上也是可以二分的

首先如果ai>ia_i>iai>i,那必然无法删除,下面只考虑ai<=ia_i<=iai<=i的情况
本题试图离线不难想到,但我一开始总是按照刻板思维尝试按序移动左端点,结果根本没法做…
反过来想,移动右端点就可做多了
fif_ifi表示当前右端点为r的情况下,[i,r]最多可以删掉的数量
那么我们当把r移动到r+1时,只有fi>=i−aif_i>=i-a_ifi>=iai时才会对fif_ifi产生1的贡献
不难发现这个f是单调不升的,所以符合上面那个条件的f应该是一段前缀,可以利用二分求出
然后就是简单的对f区间+1,用树状数组维护即可

#include<bits/stdc++.h>
using namespace std;
const int N=3e5+100;
const int mod=1e9+7;
#define ll long long
ll read(){ll x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();};while(isdigit(c)){x=x*10+c-'0';c=getchar();};return x*f;
}int n,m;int f[N],a[N],mi[20];
inline void add(int p,int v){for(;p<=n;p+=p&-p) f[p]+=v;return;
}
inline int ask(int p){int res(0);for(;p;p-=p&-p) res+=f[p];return res;
}
inline int find(int val){int res=0,pl=0;for(int k=18;k>=0;k--){if(pl+mi[k]>n||res+f[pl+mi[k]]<val) continue;pl+=mi[k];res+=f[pl];}return pl;
}
struct query{int l,r,id;bool operator < (const query oth)const{return r<oth.r;}
}p[N];
int ans[N];
int main(){#ifndef ONLINE_JUDGE//freopen("a.in","r",stdin);//freopen("a.out","w",stdout);#endifmi[0]=1;for(int i=1;i<=18;i++) mi[i]=mi[i-1]<<1;n=read();m=read();for(int i=1;i<=n;i++) a[i]=i-read();for(int i=1;i<=m;i++) p[i]=(query){(int)read()+1,n-(int)read(),i};sort(p+1,p+1+m);int pl=1;//for(int i=1;i<=n;i++) printf("%d ",a[i]);//putchar('\n');for(int i=1;i<=n;i++){if(a[i]>=0){int pl=find(a[i]);//printf("i=%d pl=%d\n",i,pl);add(1,1);add(min(pl+1,i+1),-1);}while(pl<=m&&p[pl].r==i){ans[p[pl].id]=ask(p[pl].l);pl++;}}for(int i=1;i<=m;i++) printf("%d\n",ans[i]);return 0;
}
/*
2 3
7 4 9 9
1 2 8
3 1
4 2 4
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/317557.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AT4439-[AGC028E]High Elements【结论,线段树】

正题 题目链接:https://www.luogu.com.cn/problem/AT4439 题目大意 给出1∼n1\sim n1∼n的排列aaa。求一个字典序最小的010101串sss满足将000对应位置按顺序取出成为序列AAA&#xff0c;剩下的成为序列BBB。 要求AAA和BBB的前缀最大值个数相同。 1≤n≤21051\leq n\leq 2\ti…

Docker最全教程——MongoDB容器化(十三)

上一节我们讲述了数据库容器化之持久保存数据&#xff0c;本节将讲诉MongoDB容器化实践&#xff0c;并且接下来将逐步讲解其他数据库&#xff08;MySql、Redis等等&#xff09;的容器化实践&#xff0c;然后将讲诉一些分布式架构的项目实践。由于实践需要花费大量的时间&#x…

一些数学小公式/定理的证明

文章目录定理①&#xff1a;类欧几里得算法公式①&#xff1a;等比数列求和②&#xff1a;等差数列一次方和③&#xff1a;等差数列二次方和结论①&#xff1a;n&11⇒3∣(2n−2)n\&11\Rightarrow 3|(2^n-2)n&11⇒3∣(2n−2)②&#xff1a;1222...n2n(n1)(2n1)61^22…

背包模型题目集合

文章目录背包模型01背包AcWing 423. 采药AcWing 1024. 装箱问题Luogu 2925 干草出售Proud Merchants完全背包P1616 疯狂的采药P1853 投资的最大效益Piggy-Bank多重背包Luogu P1776 宝物筛选HDU 1059 Dividing混合背包P1833 樱花二维费用背包问题P1507 NASA的食物计划HDU 2159 F…

CF1063F-String Journey【SAM,线段树】

正题 题目链接:https://www.luogu.com.cn/problem/CF1063F 题目大意 给出一个字符串&#xff0c;求选出kkk个不交子串满足按照起始位置排序后&#xff0c;满足下一个是上一个的真子串。 求kkk的最大值。 1≤n≤51051\leq n\leq 5\times 10^51≤n≤5105 解题思路 首先我们肯…

CF1406D:Three Sequences(贪心、构造)

解析 本题说明了样例的重要性 完全可以通过仔细观察样例得出一些结论 首先最大值显然就是max⁡(b1,cn)\max(b_1,c_n)max(b1​,cn​) 考虑最优策略 如果a上升了&#xff0c;就让b上升 因为假设前面都拼的严丝合缝了&#xff0c;让c上升前面全得上升&#xff0c;肯定会对答案有…

在.NET Core中使用Exceptionless分布式日志收集框架

一.Exceptionless简介Exceptionless 是一个开源的实时的日志收集框架&#xff0c;它可以应用在基于 ASP.NET&#xff0c;ASP.NET Core&#xff0c;Web Api&#xff0c;Web Forms&#xff0c;WPF&#xff0c;Console&#xff0c;MVC 等技术栈的应用程序中&#xff0c;并且提供了…

YbtOJ-选点构形【欧拉函数】

正题 题目链接:https://www.ybtoj.com.cn/contest/351/problem/1 题目大意 一个圆上&#xff0c;你需要在3∼n3\sim n3∼n中选出kkk个作为aia_iai​&#xff0c;然后再圆上选择最少的点使得对于每个aia_iai​你都能用选出的点连成一个正aia_iai​边形。 k2≤n≤106k2\leq n\l…

CF1406E:Deleting Numbers(构造、根号分块)

解析 打表发现1e5以内的质因子是9592个 就是它没错了 容易想到枚举因子判断答案是否异常来判断是否包含该质因子 但是这个方法在最小质因子处是不奏效的 那么如何找到最小的质因子呢&#xff1f; 考虑把所有的质因子分成m\sqrt mm​块 然后每扫完一块&#xff0c;问一下 (A,…

test1 3-15 模拟赛1

文章目录考试复盘matrixsetstring考试复盘 首先先说T1T1T1&#xff0c;嗯&#xff0c;发现了列是相互独立的&#xff0c;所以分开考虑了 但是实在没想到线性基&#xff0c;就顺着自己的思路硬搞了505050跑路 老实说&#xff0c;505050分的部分分写得都是迷迷糊糊的&#xff0c;…

华为云提供针对Nuget包管理器的缓存加速服务测试

在Visual Studio 2013、2015、2017中&#xff0c;使用的是Nuget包管理器对第三方组件进行管理升级的。而且 Nuget 是我们使用.NET Core的一项基础设施&#xff0c;.NET的软件包管理器NuGet.org是一项面向全球用户搭建的服务&#xff0c;不论用户身在何处&#xff0c;NuGet.org都…

Consumer

Consumer 题意&#xff1a; n个游戏机&#xff0c;有w钱 每个游戏机上有游戏&#xff0c;每个游戏有价格和娱乐值&#xff0c;游戏机有价格&#xff0c;没有娱乐值&#xff0c;玩游戏必须要用对应的游戏机&#xff0c;问娱乐值最大是多少 题解&#xff1a; 有依赖关系的背包…

Loj#6405-「ICPC World Finals 2018」征服世界【模拟费用流,左偏树】

正题 题目链接:https://loj.ac/p/6405 题目大意 给出nnn个点的一棵树&#xff0c;每个点有xix_ixi​个军队&#xff0c;需要yiy_iyi​个军队&#xff0c;你可以移动军队&#xff0c;求使得满足所有点要求的情况下&#xff0c;军队移动路径和的最小值。 1≤n≤2500001\leq n\l…

兰道定理(竞赛图)

所谓兰道定理&#xff0c;就是兰道定下的道理 &#xff08;逃&#xff09; 解析 每条边被规定了方向的完全图叫做竞赛图 竞赛图中&#xff0c;设每个点的出度为uiu_iui​ 显然有&#xff1a; ∑uin(n−1)2\sum u_i\dfrac{n\times(n-1)}{2}∑ui​2n(n−1)​ 而兰道定理的内容是…

test2 3-16 2021 模拟赛two

文章目录考试复盘染色问题芬威克树礼物考试复盘 先说T1T1T1 染色&#xff0c;以为是道数学题&#xff0c;推了有一会儿的公式&#xff0c;从颜色1到颜色m&#xff0c;感觉是dpdpdp转移 发现颜色重叠的方案可以转化为另外一种相邻不重叠的染色 但是推到颜色4的时候就发现自己…

ASP.NET Core 2.2 : 扒一扒新的Endpoint路由方案

ASP.NET Core 从2.2版本开始&#xff0c;采用了一个新的名为Endpoint的路由方案&#xff0c;与原来的方案在使用上差别不大&#xff0c;但从内部运行方式上来说&#xff0c;差别还是很大的。上一篇ASP.NET Core;图解路由(2.1 earler)详细介绍了原版路由方案的运行机制&#xff…

郊区春游题解

郊区春游 题意&#xff1a; 给定一张图&#xff0c;求从某个起点出发&#xff0c;经过其中R个点&#xff08;R个点给出&#xff09;的最短路径&#xff08;每个点经过且只经过一遍&#xff09; 题解&#xff1a; 首先我们用floyed处理出任意两点的距离 dp[i][j]表示当前状态…

2021牛客暑期多校训练营3A-Guess and lies【dp】

正题 题目链接:https://ac.nowcoder.com/acm/contest/11254/A 题目大意 现在有一个y∈[1,n]y\in[1,n]y∈[1,n]&#xff0c;BobBobBob每次可以选择问AliceAliceAlice是否y≥xy\geq xy≥x&#xff0c;AliceAliceAlice可以说一次谎。BobBobBob要在最少次数内确定yyy的值&#xf…

CF453C:Little Pony and Summer Sun Celebration(dfs、构造)

解析 比较巧妙的一道题 首先做一棵dfs生成树出来 尝试把它的欧拉序列作为答案 但是这样可能会有的地方不符合条件 如果x点的奇偶性不符合&#xff0c;就在序列中加入一个(x,fa) 同时改变x和fa的奇偶性 显然不会超过4*n 如果根需要改奇偶性怎么办&#xff1f; 最后一次回溯删掉…

开源中国 2018 新增开源软件最受欢迎 TOP 50

本周开源中国陆续公布了两个年度榜单&#xff0c;分别是国产新秀榜 TOP 30 和国产新增榜 TOP 50。由于两个榜单的数据来源都是国内开源项目&#xff0c;所以会有部分项目同时出现在两个榜单上。今天公布的这份榜单 —— 开源中国 2018 新增开源软件最受欢迎 TOP 50&#xff0c;…