某考试 T3 C
找不着原题了。
原题大概就是给你一条直线上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;
}
某考试 T3 C的更多相关文章
- 2018-8-10考试 T3. 朝暮(akekure)
题目大意:有$n$个点和$m$条边的图($n - 1 \leq m \leq n + 5$),每个点要么黑要么白,两个黑点不可以相邻,问方案数 题解:可以发现当图为一棵树的时候只需要一个树形$DP$ ...
- 考试T3麻将
这题就是一个简单的暴力,但考试的时候不知道脑子在想什么,什么都没打出来,也许是我想的太多了... 这道题对于不会打麻将的人来说还是有点难理解规则的,我没说过我会打麻将,这里是题目链接. 20分思路,利 ...
- 2019.2.25考试T3, 离线+线段树
\(\color{#0066ff}{题解}\) #include<bits/stdc++.h> #define LL long long LL in() { char ch; LL x = ...
- 2019.2.14 考试T3 交互题
\(\color{#0066ff}{ 题目描述 }\) 由于机房被成功拯救了,花_Q很高兴,花_Q生成了一个 0 到 N - 1 的排列(排列的下标从 0 到 N - 1 ).保证排列中 0 在 N ...
- 某考试 T3 Try to find out the wrong in the test
Discription Hint: 对于 100% 的数据, n<=10^6.
- 某考试 T3 bitboard
bitboardDiscription 天才发明家小K 制造了一块比特板.板子上有2^n个比特元,编号为0 ∼ 2^n−1.每个比特元
- 某考试 T3 sine
推完一波式子之后发现是个矩阵23333. 其实只要发现是矩阵之后就是个水题了. #include<bits/stdc++.h> #define ll long long using nam ...
- 16.1113 模拟考试T3
城堡[问题描述]给定一张N个点M条边的无向连通图,每条边有边权.我们需要从M条边中选出N − 1条, 构成一棵树. 记原图中从 1 号点到每个节点的最短路径长度为?Di ,树中从 1 号点到每个节点的 ...
- 题解【2.23考试T3】val
3. val[题目描述] 这是一道传统题,源代码的文件名为 val.cpp/c/pas. 有一个值初始为 0,接下来 n 次你可以令其在之前基础上+2 或+1 或-1.你需要保证,这个值在整个过程中达 ...
随机推荐
- loj2091 「ZJOI2016」小星星
ref 总的来说,就是 容斥转化为点对应到点集问题. 树形 dp 解决转化后的问题. #include <iostream> #include <cstring> #inclu ...
- loj2043 「CQOI2016」K 远点对
k-d tree 裸题------ #include <algorithm> #include <iostream> #include <cstdio> using ...
- 【Luogu P3371&P4779】【模板】单源最短路径(线段树优化Dijkstra)
线段树优化$\rm dijkstra$ 线段树每个节点维护$[l,r]$中$dist$最小的点,删除则把该点$dist$赋值为$+\infty$,然后更新该点影响到的线段树上的其他节点即可. 可以得到 ...
- Python+Selenium基础篇之4-XPath的使用
开始写自动化脚本之前,我们先学习几个概念,在完全掌握了这几个概念之后,有助于我们快速上手,如何去编写自动化测试脚本. 元素,在这个教程系列,我们说的元素之网页元素(web element).在网页上面 ...
- mojoportal在IE10中点击ImageButton出错的处理方法
在ie10中,如果点击了mojoportal中的imagebutton,会出现错误,在ie10之前的浏览器,及ie10的兼容模式中及谷歌浏览器中都不会出现. 日志中 错误信息如下: 2013-09-2 ...
- [转] linux中 参数命令 -- 和 - 的区别
在 Linux 的 shell 中,我们把 - 和 -- 加上一个字符(字符串)叫做命令行参数. 主流的有下面几种风格Unix 风格参数 前面加单破折线 -BSD 风格参数 前面不加破折线GNU 风格 ...
- ActionContext源码
/* * Copyright 2002-2006,2009 The Apache Software Foundation. * * Licensed under the Apache License, ...
- OOP的三大特性------封装、继承、多态
封装 1.<1>类背后隐藏的思想是数据抽象和封装 <2>信息隐藏,隐藏对象的实现细节,不让外部直接访问到 将数据成员和成员函数一起包装到一个单元里,单元以类的形式实现 < ...
- IIS是怎么处理同时到来的多个请求的?
假设有一台服务器,它的IIS上部署有一个Web应用程序-S,可以通过浏览器或其他方式进行访问. 假设有A.B.C三台电脑同时访问网站S,IIS接收到3个HTTP请求,然后分别为三个请求 ...
- c语言有用函数收集
1 strtok :分解字符串为一组字符串.s为要分解的字符串,delim为分隔符字符串.首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL. 2 strstr :从字符串str1中查找 ...