【*2000】【2018-2019 ICPC, NEERC, Southern Subregional Contest C 】Cloud Computing
【链接】 我是链接,点我呀:)
【题意】
【题解】
我们可以很容易知道区间的每个位置有哪些安排可以用。
显然
我们优先用那些花费的钱比较少的租用cpu方案。
但一个方案可供租用的cpu有限。
我们可以用一个线段树
线段树的下标表示价格。
那一位的值,为这个价格的cpu能租多少个。
弄个区间和(即这个价格的区间总共能租多少个(最多)
再弄另外一个区间和sum表示价格区间内的所有cpu都租,要花多少钱。
因为每个位置最多要租k个cpu
利用上面的两个区间和则我们可以在线段树上做一个二分。
找到租前k个最便宜的cpu要多少钱。(类似平衡树的前k小的和)
(优先价格低的,所以先把左子树选完,如果还不够,再到右子树里面选(左子树直接累加它的价格和就好) )
(如果最后发现l==r,说明当前这个价格l至少有k个,因为你不能多选,所以你恰好选k个就ok
注意线段树的右端点是1e6,而不是n.
【代码】
#include <bits/stdc++.h>
#define ll long long
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
using namespace std;
const int N = 1e6;
ll sc[N*4+10],sum[N*4+10];
vector<pair<int,int> > in[N+10],out[N+10];
int n,k,m,curi;
void _updata(int l,int r,int rt,int price,int num){
if (l==r){
sc[rt]+=num;
sum[rt]+=1LL*price*num;
return;
}
int mid = (l+r)>>1;
if (price<=mid)
_updata(lson,price,num);
else
_updata(rson,price,num);
sc[rt]=sc[rt<<1]+sc[rt<<1|1];
sum[rt] = sum[rt<<1]+sum[rt<<1|1];
}
ll _query(int l,int r,int rt,int k){
if (k==0) return 0;
if (sc[rt]<=k) return sum[rt];
if (l==r){
return 1LL*k*l;
}
//sc[rt]>k
int mid = (l+r)>>1;
ll temp = 0;
if (sc[rt<<1]<=k) temp+=sum[rt<<1];else return _query(lson,k);
return temp + _query(rson,k-sc[rt<<1]);
}
int main(){
#ifdef ccy
freopen("rush.txt","r",stdin);
#endif
scanf("%d%d%d",&n,&k,&m);
rep1(i,1,m){
int x,y,num,p;
scanf("%d%d%d%d",&x,&y,&num,&p);
in[x].push_back(make_pair(num,p));
out[y+1].push_back(make_pair(num,p));
}
ll ans = 0;
rep1(i,1,n){
curi = i;
rep1(j,0,(int) in[i].size()-1){
int num = in[i][j].first,price = in[i][j].second;
_updata(1,N,1,price,num);
}
rep1(j,0,(int) out[i].size()-1){
int num = out[i][j].first,price = out[i][j].second;
_updata(1,N,1,price,-num);
}
ll temp1 = _query(1,N,1,k);
ans += temp1;
}
printf("%lld\n",ans);
return 0;
}
【*2000】【2018-2019 ICPC, NEERC, Southern Subregional Contest C 】Cloud Computing的更多相关文章
- 2018-2019 ICPC, NEERC, Southern Subregional Contest
目录 2018-2019 ICPC, NEERC, Southern Subregional Contest (Codeforces 1070) A.Find a Number(BFS) C.Clou ...
- Codeforces 2018-2019 ICPC, NEERC, Southern Subregional Contest
2018-2019 ICPC, NEERC, Southern Subregional Contest 闲谈: 被操哥和男神带飞的一场ACM,第一把做了这么多题,荣幸成为7题队,虽然比赛的时候频频出锅 ...
- 2018.10.20 2018-2019 ICPC,NEERC,Southern Subregional Contest(Online Mirror, ACM-ICPC Rules)
i207M的“怕不是一个小时就要弃疗的flag”并没有生效,这次居然写到了最后,好评=.= 然而可能是退役前和i207M的最后一场比赛了TAT 不过打得真的好爽啊QAQ 最终结果: 看见那几个罚时没, ...
- 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred)
A. Find a Number 找到一个树,可以被d整除,且数字和为s 记忆化搜索 static class S{ int mod,s; String str; public S(int mod, ...
- 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror) Solution
从这里开始 题目列表 瞎扯 Problem A Find a Number Problem B Berkomnadzor Problem C Cloud Computing Problem D Gar ...
- 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred) Solution
A. Find a Number Solved By 2017212212083 题意:$找一个最小的n使得n % d == 0 并且 n 的每一位数字加起来之和为s$ 思路: 定义一个二元组$< ...
- Codeforces1070 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred)总结
第一次打ACM比赛,和yyf两个人一起搞事情 感觉被两个学长队暴打的好惨啊 然后我一直做傻子题,yyf一直在切神仙题 然后放一波题解(部分) A. Find a Number LINK 题目大意 给你 ...
- codeforce1070 2018-2019 ICPC, NEERC, Southern Subregional Contest (Online Mirror, ACM-ICPC Rules, Teams Preferred) 题解
秉承ACM团队合作的思想懒,这篇blog只有部分题解,剩余的请前往星感大神Star_Feel的blog食用(表示男神汉克斯更懒不屑于写我们分别代写了下...) C. Cloud Computing 扫 ...
- 2018-2019 ICPC, NEERC, Southern Subregional Contest (codeforces 1070)
A. 直接从状态(0,0)bfs, 这样一定是最小的 #include <iostream> #include <sstream> #include <algorithm ...
随机推荐
- tiny4412移植opencv2.4.7手记
在买了新的4412板子后.打算趁着刚成功在6410上移植过的经验,速度解决下.不想出现了各种问题.小结下: 1.关于opencv的移植: tiny4412的linux3.5上,须要把opencv的li ...
- Oracle经典教程学习笔记
Oracle学习 1.为表创建约束:alter table 表名 add constraint 约束名 约束内容 演示样例:alter bable infos add constraint UN_ST ...
- Parallel in C#
https://docs.microsoft.com/en-us/dotnet/standard/parallel-programming/how-to-write-a-simple-parallel ...
- Django day02
一:Django 中 app 的概念 每个项目里面都会 有很多不同的模块,我们可以把它们写在一个项目里,我们把模块分成一个一个不同的app,这样写可以便于管理,写的一些项目也可能不单单是一个页面,还可 ...
- sublime 的快捷键大全
Sublime Text 3 快捷键精华版 Ctrl+Shift+P:打开命令面板 Ctrl+P:搜索项目中的文件 Ctrl+G:跳转到第几行 Ctrl+W:关闭当前打开文件 Ctrl+Shift+W ...
- vmware 14黑屏处理办法
从12升级到了14,但是发现所有的虚拟机都不能用了,黑屏.挂起的时候反而会显示界面,但是继续运行就是黑屏. 记录下解决办法. 修复LSP 以管理员身份运行CMD命令: netsh winsock re ...
- CAS配置(3)之restful-api接入接口
第一步,cas服务端对api接口支持 在cas-server-webapp下 pom.xml添加如下依赖 <dependency> <groupId>org.jasig.cas ...
- BZOJ 2333 左偏树 (写得我人生都崩溃了...)
思路: 高一神犇 竟然 问我这道题 我光荣地 看着题解(划掉) 写了一下午 QaQ multiset不能erase(一个值) 这样就把等于这个值 的数都erase掉了 (woc我一开始不 ...
- BZOJ 2118 Dijkstra
思路: 经典题 不解释 找到最小的数mn 所有都是在mod mn的意义下 搞得 i->(i+a[i])%mn 边权为a[i] //By SiriusRen #include <queue ...
- vue-router简单用法
路由,其实就是指向的意思,当我点击页面上的home按钮时,页面中就要显示home的内容,如果点击页面上的about 按钮,页面中就要显示about 的内容.Home按钮 => home 内容, ...