【JZO5271】【GDOI2018模拟8.14】神奇的救火现场
来源:互联网 发布:淘宝比价插件哪个好 编辑:程序博客网 时间:2024/05/18 21:44
Description
Data Constraint
Solution
这和以前的jzoj上一道叫保持平衡的题很像啊。当然也有线性的做法,但我们这里只讲一下NlogN的做法。
我们维护两个小根堆分别为水栓和车的供给代价。每遇到一辆车,若水栓不为空,我们从水栓的堆中取出最小的代价x与其坐标相加后加入答案,并将坐标取反-代价加入车堆,若水栓为空,我们则将代价设为+∞重复刚才操作,表示以后若有水栓优先供应给这辆车。每遇到一个水栓,我们都在车里找一个最小答案,若最小答案小于0则加入答案并将坐标取反-代价加入水栓中。否则直接坐标取反加入即可。
Code
#include<iostream>#include<cmath>#include<cstring>#include<cstdio>#include<algorithm>#include<set>#define ll long longusing namespace std;const ll maxn=3e5+5,mo=0x7fffffff;multiset<ll>f,g;struct code{ ll x,bz;}a[maxn];ll n,m,i,t,j,k,l,x,y,z,ans;bool cmp(code x,code y){ return x.x<y.x;}int main(){ freopen("fire.in","r",stdin);freopen("fire.out","w",stdout); scanf("%lld%lld",&m,&n); for (i=1;i<=m;i++)scanf("%lld",&a[i].x); for (i=1;i<=n;i++)scanf("%lld",&a[m+i].x),a[m+i].bz=1; n+=m; sort(a+1,a+n+1,cmp); for (i=1;i<=n;i++) if (a[i].bz){ if (!f.empty()){ x=*f.begin(); t=a[i].x+x; ans+=t; g.insert(-t-a[i].x); f.erase(f.begin()); }else{ ans+=mo; g.insert(-mo-a[i].x); } }else{ if (!g.empty()){ x=*g.begin(); if (x+a[i].x<0) g.erase(g.begin()); else x=-a[i].x; }else x=-a[i].x; t=a[i].x+x; ans+=t; f.insert(-t-a[i].x); } printf("%lld\n",ans);}
阅读全文
1 0
- 【JZO5271】【GDOI2018模拟8.14】神奇的救火现场
- 【GDOI2018模拟8.14】神奇的救火现场
- 神奇的救火现场
- 【GDOI2018模拟8.14】神奇的矩阵
- 【JZOJ5270】【GDOI2018模拟8.14】神奇的矩阵
- 【JZOJ 5271】神奇的救火现场
- 【typical】【JZOJ 5271】 神奇的救火现场
- 【JZOJ5272】【GDOI2018模拟8.14】神奇的重复序列
- jzoj5271 神奇的救火现场 (寻找性质dp)
- 【JZOJ5270】【GDOI2018模拟】神奇的矩阵(二维线段树)
- 【JZOJ5272】【GDOI2018模拟】神奇的重复序列(DP,性质题)
- 【GDOI2018模拟7.14】小奇的糖果
- 【GDOI2018模拟8.7】图的异或
- 【GDOI2018模拟7.6】吃干饭
- 【GDOI2018模拟7.9】期末考试
- 【GDOI2018模拟7.8】质数
- 【GDOI2018模拟7.8】矩阵
- 【GDOI2018模拟7.10】B
- Hive UNION ALL的使用和Hive子查询
- Java中的Properties类
- c++入门教程(填坑1)
- bzoj 1611: [Usaco2008 Feb]Meteor Shower流星雨(DP)
- 50道Java线程面试题
- 【JZO5271】【GDOI2018模拟8.14】神奇的救火现场
- 【健身】--遇见更美的自己
- Drupal7 API Field API
- // .编写一道程序题输入长和宽之后点击按钮可弹出长方形面积。 var long=prompt("请输入长方形的长"); var wide=prompt("请输入长方形的宽"); var area=(
- 流程图区别
- springmvc----中文乱码解决
- Drupal7 API Search interface
- 【hpu oj 1163 大数相加】
- 抓住那头牛(POJ NO.2971)