找不着原题了。

原题大概就是给你一条直线上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的更多相关文章

  1. 2018-8-10考试 T3. 朝暮(akekure)

    题目大意:有$n$个点和$m$条边的图($n - 1 \leq m \leq n + 5$),每个点要么黑要么白,两个黑点不可以相邻,问方案数 题解:可以发现当图为一棵树的时候只需要一个树形$DP$ ...

  2. 考试T3麻将

    这题就是一个简单的暴力,但考试的时候不知道脑子在想什么,什么都没打出来,也许是我想的太多了... 这道题对于不会打麻将的人来说还是有点难理解规则的,我没说过我会打麻将,这里是题目链接. 20分思路,利 ...

  3. 2019.2.25考试T3, 离线+线段树

    \(\color{#0066ff}{题解}\) #include<bits/stdc++.h> #define LL long long LL in() { char ch; LL x = ...

  4. 2019.2.14 考试T3 交互题

    \(\color{#0066ff}{ 题目描述 }\) 由于机房被成功拯救了,花_Q很高兴,花_Q生成了一个 0 到 N - 1 的排列(排列的下标从 0 到 N - 1 ).保证排列中 0 在 N ...

  5. 某考试 T3 Try to find out the wrong in the test

    Discription Hint: 对于 100% 的数据, n<=10^6.

  6. 某考试 T3 bitboard

                    bitboardDiscription    天才发明家小K 制造了一块比特板.板子上有2^n个比特元,编号为0 ∼ 2^n−1.每个比特元

  7. 某考试 T3 sine

    推完一波式子之后发现是个矩阵23333. 其实只要发现是矩阵之后就是个水题了. #include<bits/stdc++.h> #define ll long long using nam ...

  8. 16.1113 模拟考试T3

    城堡[问题描述]给定一张N个点M条边的无向连通图,每条边有边权.我们需要从M条边中选出N − 1条, 构成一棵树. 记原图中从 1 号点到每个节点的最短路径长度为?Di ,树中从 1 号点到每个节点的 ...

  9. 题解【2.23考试T3】val

    3. val[题目描述] 这是一道传统题,源代码的文件名为 val.cpp/c/pas. 有一个值初始为 0,接下来 n 次你可以令其在之前基础上+2 或+1 或-1.你需要保证,这个值在整个过程中达 ...

随机推荐

  1. 读书笔记jvm探秘之二: 对象创建

    对象是面向对象设计语言无法回避的东西,可见其重要性,JAVA的对象相较于C++来说,不算很复杂,但是我们看到一句话背后往往有很多东西值得探讨(NEW关键字). 对象如何被创建? 首先一句简单的NEW语 ...

  2. go经典练习题涉及流程控制-字符串-struct-map的数据类型的处理

    one:求1到100之间的质数 package main import ( "fmt" ) func isPrime(n int) bool { var flag = true f ...

  3. SSH的基本操作

    一. 登陆SSH远程控制服务器 我们以192.168.100.42服务器为例. SSH乱码: LANG="zh_CN.GB18030" export LANG=zh_CN.gb23 ...

  4. plsql 编程基础

    分支 declare --声明变量 a ); b ); c ); begin --开始 a := '小明'; dbms_output.put_line(a); b :; c :; if b > ...

  5. Python中@property和@classmethod和@staticmethod

    前戏 首先,先要弄清楚一个类里面的,各个组成部分都应该怎么称呼. - 注:可能叫法会不太一样. 关于@property 顾名思义:它的意思为‘属性’. 作用: 1:使用它你将会把类方法,变为类属性.并 ...

  6. CodeForces Round #515 Div.3 B. Heaters

    http://codeforces.com/contest/1066/problem/B Vova's house is an array consisting of nn elements (yea ...

  7. 剑指offer42:翻转单词顺序 VS 左旋转字符串(更高效、简便的解法)

    题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a student." ,则输出" ...

  8. POJ2152 Fire 【树形dp】

    题目链接 POJ2152 题解 经典老题,还真暴力 \(n \le 1000\),所以可以\(O(n^2)\)做 所以可以枚举每个点依附于哪一个点 设\(f[u]\)表示以\(u\)为根的子树的最小代 ...

  9. 编程风格---代码中doxygen方式的注释写法

    代码中doxygen方式的注释写法: 1. 模块定义(单独显示一页) /* * @defgroup 模块名 模块的说明文字 * @{ */ … 定义的内容 … /** @} */ // 模块结尾 2. ...

  10. imx6 PCIE使能加载ath9k无线网卡

    imx6q配置pcie无线网卡遇到如下问题: imx6q-pcie 1ffc000.pcie: PCI host bridge to bus 0000:00 pci_bus 0000:00: root ...