找不着原题了。

原题大概就是给你一条直线上n个点需要被覆盖的最小次数和m条需要花费1的线段的左右端点和1条[1,n]的每次花费为t的大线段。

问最小花费使得所有点的覆盖数都达到最小覆盖数。

感觉这个函数的斜率是单调的,所以就码了一个二分斜率。

#include<bits/stdc++.h>
#define ll long long
#define maxn 100005
using namespace std;
const ll inf=1ll<<62ll;
struct lines{
int l,r;
bool operator <(const lines &U)const{
return l==U.l?r>U.r:l<U.l;
}
}a[maxn],b[maxn];
int n,m,t,rig,p[maxn];
int le,ri,mid,an,cnt=0,bt;
int cover[maxn],lef[maxn]; inline void prework(){
sort(a+1,a+m+1);
for(int i=1;i<=m;i++) if(a[i].r>rig){
b[++cnt]=a[i];
rig=a[i].r;
} for(int i=1;i<=n;i++){
ri=max(ri,p[i]);
if(i<b[1].l||i>b[cnt].r) bt=max(bt,p[i]);
}
} inline ll calc(int x){
if(x<bt) return inf;
ll ans=x*(ll)t;
int now=0,pos=1; fill(cover+1,cover+n+1,0);
for(int i=1;i<=n;i++) lef[i]=max(0,p[i]-x); for(int i=1;i<=n;i++){
while(pos<cnt&&b[pos+1].l<=i) pos++; printf("%d %d\n",i,b[pos].l); now+=cover[i];
if(now<lef[i]){
int derta=lef[i]-now;
cover[b[pos].r+1]-=derta;
now+=derta;
ans+=(ll)derta;
}
} return ans;
} inline void solve(){
le=bt;
while(le<=ri){
mid=le+ri>>1;
if(calc(mid)-calc(mid-1)<0) an=mid,le=mid+1;
else ri=mid-1;
} printf("%lld\n",calc(an));
} int main(){
freopen("C.in","r",stdin);
freopen("C.out","w",stdout); scanf("%d%d%d",&n,&m,&t);
for(int i=1;i<=n;i++) scanf("%d",p+i);
for(int i=1;i<=m;i++) scanf("%d%d",&a[i].l,&a[i].r); prework();
solve(); return 0;
}

  

最新文章

  1. 浅谈Collection集合
  2. Python黑帽编程1.3 Python运行时与包管理工具
  3. 日志分析_使用shell完整日志分析案例
  4. python获取时间
  5. dedecms讲解-arc.listview.class.php分析,列表页展示
  6. Gridview转发
  7. JQuery新闻滚动的实现方法(常用笔记1)
  8. appium关于定位元素
  9. python中精确输出JSON浮点数的方法
  10. 线性判别分析(Linear Discriminant Analysis,LDA)
  11. PHP中的生成XML文件的4种方法(转)
  12. GO不支持数组通过函数参数更改,有点不一样
  13. array_multisort 关联(string)键名保持不变,但数字键名会被重新索引。
  14. Ubuntu14.04搭建安装svnserver
  15. Struts2标签遍历List&lt;Map&lt;String,String&gt;&gt;
  16. Ansible 系列之 Playbooks 剧本 (1)
  17. 小程序语音红包中遇到的 语音识别silk转wav格式 如何在线转 或者mp3转wav格式
  18. [转帖]御界预警:3700余台SQL服务器被入侵挖矿 或导致严重信息泄露事件
  19. python画高斯分布图形
  20. es6入门4--promise详解

热门文章

  1. Android 简历+面试题 汇总
  2. HDU 4628 Pieces(状态压缩+记忆化搜索)
  3. install golang plugin in webstrom
  4. Dsamain
  5. 极简Node教程-七天从小白变大神(一:你需要Express)
  6. 7、JavaScript 知识总结
  7. leetcode 【 Find Peak Element 】python 实现
  8. 如何解决Jmeter导出的聚合报告是乱码易位问题
  9. linux实用命令-待补充
  10. Codeforces 1158C Permutation recovery