BZOJ3728: PA2014Final Zarowki
来源:互联网 发布:网上教育软件 编辑:程序博客网 时间:2024/05/22 04:56
贪贪贪
将一开始的灯泡和房间从小到大排个序
房间倒着处理,每个房间找>=他的功率的还未匹配的最小的灯泡,将他们匹配上
找不到匹配的灯泡一定要花费一次替换,打个标记在上面,先不管他
匹配完房间如果已经不够替换就gg
否则将每个房间匹配的灯泡-他的要求塞进一个大根堆
去掉堆顶的剩余替换次数个
code:
#include<set>#include<map>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>#include<cstdio>#include<cstdlib>#include<cstring>#include<climits>#include<complex>#include<iostream>#include<algorithm>#define ll long longusing namespace std;inline void read(int &x){ char c; while(!((c=getchar())>='0'&&c<='9')); x=c-'0'; while((c=getchar())>='0'&&c<='9') (x*=10)+=c-'0';}const int maxn = 510000;int n,K;int a[maxn],b[maxn];int fa[maxn];int findfa(const int x){return fa[x]==x?x:fa[x]=findfa(fa[x]);}int match[maxn];priority_queue<int>q;int main(){ read(n); read(K); for(int i=1;i<=n;i++) read(a[i]); sort(a+1,a+n+1); for(int i=1;i<=n;i++) read(b[i]); sort(b+1,b+n+1); for(int i=1;i<=n+1;i++) fa[i]=i; int p=n; for(int i=n;i>=1;i--) { while(p&&a[p-1]>=b[i]) p--; if(a[p]>=b[i]) { fa[match[i]=p]=p+1; p--; continue; } int j=findfa(p+1); if(j==n+1) K--,match[i]=-1; else fa[match[i]=j]=j+1; } if(K<0) return puts("NIE"),0; ll re=0; for(int i=1;i<=n;i++) re+=(ll)b[i]; for(int i=1;i<=n;i++) if(match[i]!=-1) q.push(a[match[i]]-b[i]),re+=(ll)a[match[i]]-b[i]; while(K--&&!q.empty()) { re-=(ll)q.top(); q.pop(); } printf("%lld\n",re); return 0;}
阅读全文
0 0
- 【bzoj3728】 PA2014Final Zarowki
- 【bzoj3728】PA2014Final Zarowki
- BZOJ3728: PA2014Final Zarowki
- 【PA2014】【BZOJ3728】Final Zarowki
- 3728: PA2014Final Zarowki set+priority_queue
- BZOJ 3728: PA2014Final Zarowki|贪心
- BZOJ 3728 PA2014Final Zarowki 堆+贪心
- 【PA2014Final】【BZOJ3721】Bazarek
- 【bzoj3721】 PA2014Final Bazarek 贪心
- 【PA2014Final】【BZOJ3726】Wykladzina
- BZOJ3726: PA2014Final Wykladzina
- BZOJ3724: PA2014Final Krolestwo
- BZOJ[3728]PA2014 Final Zarowki 堆+贪心
- 【PA】PA2014Final Wykładzina【单调栈+双指针+均摊分析】
- 【Machine Learning】KNN学习算法与C语言实现
- RxJava+Retrofit+OkHttp+mvp
- 可变参数的实现
- C语言基础与提高4——指针函数,函数指针
- Swagger与SpringMVC整合
- BZOJ3728: PA2014Final Zarowki
- 图形学opengl实验二-桌子的矩阵变换
- 如何打开内部编码格式不统一的文件?
- 内核设备树简介-2
- 指针函数的简单例程
- .9.png的区域划分
- centos 更新gdb到v7.6
- MySQL的常用函数
- poj3061 尺取法