P4064 [JXOI2017]加法

P4064 [JXOI2017]加法

题意:

题解:

要求找最小值尽可能大,很明显二分,现在是如何判断二分出来的答案的正确性
对于一个二分出来的答案mid,要求对k个区间进行操作后,最小值大于mid,我们可以这样实现,对于第i位,(前i-1位已经处理完毕,且前i-1位均大于等于mid),此时我们要找的区间是要包含第i位的,也就是区间的左端点一定小于等于i,而对于右端点,一定是越远越好,右端点越远,就可以让更多的数增加,更容易使得所有数都大于等于mid
怎么才能实现合理选取区间这个操作,我们用一个最大堆,每次将左端点小于i的区间加入其中,然后选取堆顶的区间。因为我们是从左往右依次处理,那么这个堆就可以继承给下一个点使用

代码:

#include <bits/stdc++.h>
#include <unordered_map>
#define debug(a, b) printf("%s = %d\n", a, b);
using namespace std;
bool Handsome;
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
clock_t startTime, endTime;
//Fe~Jozky
const ll INF_ll= 1e18;
const int INF_int= 0x3f3f3f3f;
void read(){};
template <typename _Tp, typename... _Tps> void read(_Tp& x, _Tps&... Ar)
{x= 0;char c= getchar();bool flag= 0;while (c < '0' || c > '9')flag|= (c == '-'), c= getchar();while (c >= '0' && c <= '9')x= (x << 3) + (x << 1) + (c ^ 48), c= getchar();if (flag)x= -x;read(Ar...);
}
template <typename T> inline void write(T x)
{if (x < 0) {x= ~(x - 1);putchar('-');}if (x > 9)write(x / 10);putchar(x % 10 + '0');
}
void rd_test(bool &Most)
{
#ifdef ONLINE_JUDGE
#elseprintf("%.2lfMB\n",(&Most-&Handsome)/1024.0/1024.0);startTime = clock ();freopen("data.in", "r", stdin);
#endif
}
void Time_test()
{
#ifdef ONLINE_JUDGE
#elseendTime= clock();printf("\nRun Time:%lfs\n", (double)(endTime - startTime) / CLOCKS_PER_SEC);
#endif
}
const int maxn=3e5+9;
#define int long long
int A[maxn];
int n,m,k,a;
int lowbit(int x){return x&(-x);
}
struct node{int l,r;bool operator<(const node &x)const{return r<x.r;}
};
int V[maxn];
struct nod{int l,r;
};
nod q[maxn];
nod x;
int N=2e5+9;
void add(int x,int val){for(int i=x;i<=N;i+=lowbit(i)){V[i]+=val;}
}
ll query(int x){ll sum=0;for(int i=x;i;i-=lowbit(i)){sum+=V[i];} return sum;
}
bool check(int mid){memset(V,0,sizeof(V));priority_queue<node>Q;for(int i=1;i<=n;i++){add(i,A[i]-A[i-1]);}int tot=0;int num=1;for(int i=1;i<=n;i++){while(q[num].l<=i&&num<=m){Q.push((node){q[num].l,q[num].r});num++;}while(query(i)<mid&&Q.size()){node x=Q.top();Q.pop();if(x.r<i||++tot>k)return 0;add(x.l,a);add(x.r+1,-a);}if(query(i)<mid)return 0;}return 1;
}
int val[maxn];
bool Most;
bool cmp(nod x,nod y){return x.l<y.l;
}
signed main()
{
//    rd_test(Most);int t;read(t);while(t--){int minn=1e18+9;int maxx=0;read(n,m,k,a);for(int i=1;i<=n;i++){read(A[i]);minn=min(A[i],minn);maxx=max(A[i],maxx);}for(int i=1;i<=m;i++){read(q[i].l,q[i].r);}sort(q+1,q+1+m,cmp);int ans;int l=minn,r=maxx+k*a;while(l<=r){int mid=l+r>>1;if(check(mid)){ans=mid;l=mid+1;}else r=mid-1;}printf("%lld\n",ans);}//Time_test();
}

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

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

相关文章

[NewLife.XCode]百亿级性能

NewLife.XCode是一个有10多年历史的开源数据中间件&#xff0c;支持nfx/netcore&#xff0c;由新生命团队(2002~2019)开发完成并维护至今&#xff0c;以下简称XCode。整个系列教程会大量结合示例代码和运行日志来进行深入分析&#xff0c;蕴含多年开发经验于其中&#xff0c;代…

LuoguP4606 [SDOI2018]战略游戏

LuoguP4606 [SDOI2018]战略游戏 题目描述 题目描述 省选临近&#xff0c;放飞自我的小 QQ 无心刷题&#xff0c;于是怂恿小 CC 和他一起颓废&#xff0c;玩起了一款战略游戏。 这款战略游戏的地图由 nn 个城市以及 mm 条连接这些城市的双向道路构成&#xff0c;并且从任意一个…

Jozky 刷题目录

文章目录本目录参考OI-Wiki还未解决专区算法基础枚举模拟递归&分治贪心排序前缀和&差分二分倍增构造搜索DFS && BFS双向搜索启发式搜索A*迭代加深搜索IDA*回溯法Dancing Links搜索优化&#xff08;剪枝&#xff09;动态规划普通dp背包dp区间dpDAG上的dp树形dp状…

Web API 速率限制(一)

导读当您API有大量消费者或者请求量猛增到影响程序可用性的时候&#xff0c;您可能需要对API进行速率限制。所以对API进行限速的在于&#xff1a;在增加可靠性和可用性的同时来保护基础架构&#xff0c;你不希望某个恶意的API消费者或者差劲的API客户端开发者通过Dos攻击把你的…

训练赛合集

带 # 的为未补 带△的为未补完 带※的为补不动 比赛合集 牛客 △2021年度训练联盟热身训练赛第一场 Codeforces Codeforces Round #694 Div. 2 △Codeforces Round #695 (Div. 2) Codeforces Round #696 (Div. 2) △CodeCraft-21 and Codeforces Round #711 (Div. 2) Codef…

构建简单的微服务架构

前言 本篇仅作引导&#xff0c;内容较多&#xff0c;如果阅读不方便&#xff0c;可以使用电脑打开我们的文档官网进行阅读。如下图所示&#xff1a;文档官网地址&#xff1a;docs.xin-lai.com目录总体介绍微服务架构的好处 微服务架构的不足&#xff08;这个时候…

[AGC026D]Histogram Coloring

[AGC026D]Histogram Coloring 题目描述 题面 题意大概是有一个nnn列网格图&#xff0c;给定一个长度为nnn的序列hih_ihi​&#xff0c;第iii列只保留这一列最下面的hih_ihi​个格子。 现在需要给这些保留下来的格子染成红色或蓝色&#xff0c;满足每一个完整的222222正方形…

每日训练赛

文章目录说明2021.9.242021.9.252021.9.262021.9.272021.9.282021.9.292021.9.302021.10.12021.10.22021.10.32021.10.42021.10.52021.10.62021.10.72021.10.82021.10.92021.10.132021.10.152021.10.162021.10.212021.10.222021.10.242021.10.252021.10.262021.10.29说明 记录…

读《代码整洁之道》

什么是整洁代码代码的质量非常重要&#xff0c;糟糕的代码有可能会毁了一个公司。对于一个很注重代码质量的人来说呆在一个只关注交付而不关注代码质量的公司是很痛苦的。什么是整洁的代码&#xff0c;不同的人又不同的定义。我认为整洁的代码应该是符合所使用语言代码规范的&a…

[ZJOI2016]小星星

[ZJOI2016]小星星 题目描述 luogu题面 给定一个n个点的树和n个点m条边的无向图&#xff0c;求将树嵌入图的方案数。 其中 n≤17,m≤n∗(n−1)2n \leq 17,m \leq \frac{n*(n-1)}{2}n≤17,m≤2n∗(n−1)​。 Solution 点数很少&#xff0c;考虑状压DP。 令f[i][j][k]f[i][j]…

在 DotNetty 中实现同步请求

一、背景DotNetty 本身是一个优秀的网络通讯框架&#xff0c;不过它是基于异步事件驱动来处理另一端的响应&#xff0c;需要在单独的 Handler 去处理相应的返回结果。而在我们的实际使用当中&#xff0c;尤其是 客户端程序 基本都是 请求-响应 模型&#xff0c;在发送了数据时候…

BZOJ#3252. 攻略

BZOJ#3252. 攻略 题目描述 Solution 有一个显然的 贪心&#xff0c;每次选取一个到根的点权和最大的点xxx&#xff0c;将答案加上xxx到根的路径的点权和&#xff0c;并将xxx到根的路径上的点的权值清零。 可以使用DFS序线段树维护。 但完全没有这么麻烦。 容易发现每一次选…

ASP.NET Core 中间件

1.前言中间件&#xff08;middleware&#xff09;是一种装配到应用管道以处理请求和响应的组件。每个组件&#xff1a;●可选择是否将请求传递到管道中的下一个组件。●可在管道中的下一个组件前后执行工作。请求委托&#xff08;request delegates&#xff09;用于建立请求管道…

P3899 [湖南集训]谈笑风生

P3899 [湖南集训]谈笑风生 题目描述 Solution 我们考虑离线询问&#xff0c;将询问放在相对应的子树ppp中计算答案。 显然a,b,ca,b,ca,b,c的位置关系有两种情况&#xff1a; bbb是aaa的祖先&#xff0c;ccc是aaa的子孙。aaa是bbb的祖先&#xff0c;ccc是bbb的子孙。 第一种…

.Net Core实现的文档数据库RavenDb

说到文档数据库&#xff0c;大家能想到很多&#xff0c;MongoDb,coudDb。如果只是文档的话&#xff0c;甚至可以使用对象存储&#xff0c;阿里的oss&#xff0c;腾讯cos。但是这里小编选择这RavenDb&#xff0c;原因是对象存储下行太贵了(来自穷逼的绝望)。MongoDb据说非常占用…

bzoj4543. [POI2014]Hotel加强版

bzoj4543. [POI2014]Hotel加强版 题面描述 Solution 先看n≤5e3n \leq 5e3n≤5e3怎么做。 考虑树形dpdpdp。 设f[i][j]f[i][j]f[i][j]表示以iii为根的子树中&#xff0c;深度为jjj的结点个数。 设g[i][j]g[i][j]g[i][j]表示以iii为根的子树中的二元组(x,y)(x,y)(x,y)数量&a…

Web Template Studio 发布!在 VS Code 中轻松创建 Web 应用

作为一个 Web 应用开发者&#xff0c;Scaffolding Tool&#xff08;脚手架工具&#xff09;一定是在创建项目时的重要工具。许多开发者会习惯于使用基于 CLI 的脚手架工具来创建 Web 应用&#xff0c;也有许多开发者喜欢使用类似于 VS IDE 的基于 UI 的 Wizard 向导。近期&…

AGC022E - Median Replace

AGC022E - Median Replace 题面描述 Solution 直接构造自动机&#xff0c;模拟每次在末尾加一个字符的当前状态的方案数f[state]f[state]f[state]&#xff0c;状态很少&#xff0c;直接打表转移即可。 时间复杂度O(n)O(n)O(n)。 #include <vector> #include <lis…

再多迷茫,不如静下来好好学习

背景前不久&#xff0c;我有幸看到了CSDN知名博主“沉默王二”写的一篇博客《你的青春&#xff0c;值得先给小型创业公司吗&#xff1f;》&#xff0c;这篇博客介绍了他从苏州回到内地小城洛阳之后&#xff0c;虽然远离了互联网的主阵地&#xff0c;但是依然保持学习的态度&…

AGC023D - Go Home

AGC023D - Go Home 题目描述 Solution 我们首先把这些人分成在sss左边和在sss右边两类&#xff0c;考虑最左边的一群人AAA和最右边的一群人BBB&#xff0c;这两群人中必然有其中一群人是最后到家的。而是否最后到家取决于这两群人的人数&#xff08;因为倘若只剩下两群人&am…