最小值最大,考虑二分答案,问题转为判断最小值是否能 \(\ge x\)。

假如 \(a_i\ge x\),那我们肯定不管;假如 \(a_i<x\),那最好能让选择的区间 \(r\) 值更大,用优先队列维护即可。区间增幅可以用树状数组维护。

时间复杂度 \(O(n\log^2n)\)。

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=2e5+5;
int t,n,m,k,ad,a[N],c[N];
priority_queue<int>q;
vector<int>g[N];
void add(int x){
for(;x<=n;x+=x&-x)
c[x]+=ad;
}int sum(int x){
int re=0;
for(;x;x-=x&-x)
re+=c[x];
return re;
}int check(int x){
for(int i=1;i<=n;i++) c[i]=0;
while(q.size()) q.pop();
for(int i=1,l=k;i<=n;i++){
for(auto j:g[i]) q.push(j);
int nw=a[i]+sum(n)-sum(i-1);
while(nw<x&&q.size()&&l&&q.top()>=i)
nw+=ad,add(q.top()),q.pop(),l--;
if(nw<x) return 0;
}return 1;
}void solve(){
for(int i=1;i<=n;i++) g[i].clear();
cin>>n>>m>>k>>ad;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1,l,r;i<=m;i++)
cin>>l>>r,g[l].push_back(r);
int l=0,r=2e8,ans;
while(l<=r){
int mid=(l+r)/2;
if(check(mid))
ans=mid,l=mid+1;
else r=mid-1;
}cout<<ans<<"\n";
}signed main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>t;
while(t--) solve();
return 0;
}

[JXOI2017] 加法 题解的更多相关文章

  1. BZOJ5321 & 洛谷4064 & LOJ2274:[JXOI2017]加法——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5321 https://www.luogu.org/problemnew/show/P4064 ht ...

  2. 【BZOJ5321】[JXOI2017]加法(贪心)

    [BZOJ5321][JXOI2017]加法(贪心) 题面 BZOJ 洛谷 题解 显然二分答案,算一下每个点至少要覆盖的次数.从左往右考虑如果这个点覆盖次数不够,就会选择覆盖这个点的.右端点最大的线段 ...

  3. [bzoj5321] [Jxoi2017]加法

    Description 可怜有一个长度为 n 的正整数序列 A,但是她觉得 A 中的数字太小了,这让她很不开心. 于是她选择了 m 个区间 [li, ri] 和两个正整数 a, k.她打算从这 m 个 ...

  4. JXOI2017 加法

    题目描述: 可怜有一个长度为 \(n\) 的正整数序列 \(A\),但是她觉得 \(A\) 中的数字太小了,这让她很不开心. 于是她选择了 \(m\) 个区间 \([l_i, r_i]\) 和两个正整 ...

  5. LuoguP1557 Kruscal的加法 题解

    题目Link 就是这道题,做了我整整一天! 看到题目,首先想到的就是:就这?就这一道大水题也能是绿?然后十分钟写完代码,提交-- 果不其然,绿题不是白绿的,看了一眼数据和讨论,又得写高精了-- 先附上 ...

  6. LuoguB2104 矩阵加法 题解

    Content 给定两个 \(n\times m\) 的矩阵 \(A,B\),求 \(C=A+B\). 数据范围:\(1\leqslant n,m\leqslant 100\). Solution 我 ...

  7. 洛谷P4064 [JXOI2017]加法(贪心 差分)

    题意 题目链接 Sol 这题就是一个很显然的贪心... 首先二分一个答案,然后check是否可行.check的时候我们需要对每个位置\(i\),维护出所有左端点在\(i\)左侧,右端点在\(i\)右侧 ...

  8. BZOJ5321 JXOI2017加法(二分答案+贪心+堆+树状数组)

    二分答案后得到每个位置需要被加的次数.考虑贪心.从左到右考虑每个位置,将以该位置为左端点的区间按右端点从大到小加进堆.看该位置还需要被加多少次,如果不需要加了就不管,否则取堆顶区间将其选择,BIT实现 ...

  9. 【[JXOI2017]加法】

    江西竟然还有省选,而且还是可怜题,实在是有点可怕 这道题还是比较清真的,大概是最简单的可怜题? 首先看到最大值最小,就很容易想到了二分答案 对于一个二分出来的答案\(mid\),去把原数列扫一遍就可以 ...

  10. BZOJ5011 & 洛谷4065 & LOJ2275:[JXOI2017]颜色——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5011 https://www.luogu.org/problemnew/show/P4065 ht ...

随机推荐

  1. CSS3 背景图片

    1.背景图大小(background-size) 这个属性设置单张背景图的大小,默认是原图的大小 当同时指定宽高时,会造成图片失真,如果要保持宽高比,可以使用 auto 字段让宽或者高自适应 值类型 ...

  2. 题解 ICPC 2019 SH 区域赛 F 树上简单问题

    题解 ICPC 2019 SH 区域赛 F 树上简单问题 CF的Gym里没找着 牛客的题目链接 首先这个题多测非常SB, 每次都要清空, 需要特别注意. 树剖应该都会吧, Defad之后也会发博客讲解 ...

  3. eShopOnContainer 中 Grpc 服务定义与实现

    eShopOnContainer 中 Grpc 服务定义与实现 服务于前端的后端 (BFF) 模式是 API 网关模式的一种变形,针对外部使用者的不同需求,为每种不同的客户端使用者提供一种后端 API ...

  4. 精通 ASP.NET Core MVC (第 7 版) 源码下载

    将使用的 .NET 版本更新到 5.0 版本. GitHub 地址:https://github.com/haoguanjun/pro-asp.net-core-mvc-2

  5. JEP 462 结构化并发是一个很愚蠢的提案

    https://openjdk.org/jeps/462 Motivation Developers manage complexity by breaking tasks down into mul ...

  6. 开源for Huawei,Beam适配GaussDB实践案例分享

    沃土云创开源开发者专项计划是华为给开源开发者提供专属激励资源,鼓励开发者积极参与开源 for Huawei适配,践行"让优秀开发者支持更优秀开发者"的理念. 之前我们介绍了fake ...

  7. 国外著名交易策略:R-Breaker模型设计原理(转载)

    R-Breaker是一种短线日内交易策略,它结合了趋势和反转两种交易方式. 交易系统的基本原理如下: 1.根据前一个交易日的收盘价.最高价和最低价数据通过一定方式计算出六个价位,从大到小依次为:突破买 ...

  8. 解决File "<input>", line 1 pip install XXXX ^ SyntaxError: invalid syntax

    首先退出python exit() 打开cmd里直接输入(不要进python) pip install XXX

  9. 2022 年数据科学研究综述:重点介绍 ML、DL、NLP 等

    2022 年数据科学研究综述:重点介绍 ML.DL.NLP 等 当我们在 2022 年底临近时,我对许多著名研究小组完成的所有惊人工作感到振奋,他们将 AI.机器学习.深度学习和 NLP 的状态扩展到 ...

  10. 将 EasySQLite 从 .NET 8 升级到 .NET 9

    前言 EasySQLite是一个.NET 8操作SQLite入门到实战的详细教程,主要是对学校班级,学生信息进行管理维护.今天咱们的主要内容是将EasySQLite从.NET 8升级到.NET 9. ...