Description

有n个房间和n盏灯,你需要在每个房间里放入一盏灯。每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照亮。
你可以去附近的商店换新灯泡,商店里所有正整数功率的灯泡都有售。但由于背包空间有限,你至多只能换k个灯泡。
你需要找到一个合理的方案使得每个房间都被完全照亮,并在这个前提下使得总功率尽可能小。

Input

第一行两个整数n,k(1<=k<=n<=500000)。
第二行n个整数p[i](1<=p[i]<=10^9),表示你现有的灯泡的功率。
第三行n个整数w[i](1<=w[i]<=10^9),表示照亮每间房间所需要的最小功率。

Output

如果无法照亮每间房间,仅输出NIE。
否则输出最小的总功率。

Sample Input

6 2

12 1 7 5 2 10

1 4 11 4 7 5

Sample Output

33

HINT

解释:将2和10换成4和4。配对方案为1-1,4-4,4-4,5-5,7-7,11-12。

/*题面选最小。。。

Multiset+贪心可水,原理就是小的灯泡能用则用,不能用的保留,最后再用k次机会滑稽掉剩下的。再有剩余的可以把之前用的灯泡和房间差值变成0来减小。

这个堆+贪心啊,我承认我傻=-=。想了好久才明白。

首先对功率和房间从大到小排序,排完以后开始贪心。把符合当前房间条件的所有的灯泡都放进堆里(这个堆也保留之前房间剩余的),在里面选个最小的来提供给房间。但是!当这个堆里啥玩意都没有,即对于这个垃圾房间没有灯泡给它,我们就用一次换灯泡的机会,再给ans加上房间的需求,然后继续即可以。

然后我就方了,为什么不用改别的灯泡呢=-=,我这个蒟蒻百思不得其解=-=。因为我们使用这次机会以后,首先,对于以后的数据,扩大了可选择的范围(因为灯泡里接下来的最大值被保留了),其次由于不存在可以给这个房间提供的灯泡(因为有的之前给别的了,如果别的被替换,还是得使用一次机会)这次机会必须得用掉,然后对于某个可能被替换掉的灯泡,我相当于把它延后选择,即先把接下来可用灯泡都用掉,最后一定会多剩余一个灯泡(如果有小到没法用的自然剩余,要是较小的在某个房间可用,便会剩下一个大的)。

综上而言,这个贪心是正确的,因为它没有导致答案变大(使用最小),且保证了可解(保留剩下最大)。*/

 #include<cstdio>
#include<queue>
#include<algorithm>
using namespace std;
int n,k;
const int N=;
priority_queue<int > red;
priority_queue<int,vector<int>,greater<int> > q;
long long ans;
int p[N],w[N];
inline bool m_s(int a,int b){
return a>b;
}
int main(){
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++) scanf("%d",p+i);
for(int i=;i<=n;i++) scanf("%d",w+i);
sort(p+,p++n,m_s);sort(w+,w+n+,m_s);
for(int i=,j=;i<=n;i++){
while(p[j]>=w[i]) q.push(p[j++]);
if(!q.empty()){
ans+=q.top();
red.push(q.top()-w[i]);q.pop();continue;
}
k--,ans+=w[i];
if(k<) {printf("NIE\n");return ;}
}
while(k--)ans-=red.top(),red.pop();
printf("%lld\n",ans);
}

bzoj3728: PA2014Final Zarowki的更多相关文章

  1. 【BZOJ3728】PA2014Final Zarowki 贪心

    [BZOJ3728]PA2014Final Zarowki Description 有n个房间和n盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照 ...

  2. bzoj 3728: PA2014Final Zarowki

    3728: PA2014Final Zarowki Description 有n个房间和n盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照亮.你可 ...

  3. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  4. BZOJ3723 : PA2014Final Gra w podwajanie

    暴力搜索出所有可行的形状,可以发现本质不同的形状数只有6000个左右. 对于每个形状,它的大小不超过$8\times 8$,故可以按照右下角为原点重建坐标系,用一个unsigned long long ...

  5. BZOJ3726 : PA2014Final Wykladzina

    从上到下枚举下底边,维护$a[i]$表示$i$向上延伸多少距离里面没有坏点,$b[i]$表示$i$向上延伸多少距离里面最多只有1个坏点. 设$l0[i],r0[i]$表示以$a[i]$为最小值,往左往 ...

  6. BSOJ 2423 -- 【PA2014】Final Zarowki

    Description 有n个房间和n盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照亮.  你可以去附近的商店换新灯泡,商店里所有正整数功率的灯 ...

  7. BZOJ3724 PA2014Final Krolestwo(欧拉回路+构造)

    如果没有长度为偶数的限制,新建一个点向所有奇点连边,跑欧拉回路即可,显然此时一定存在欧拉回路,因为所有点度数都为偶数. 考虑长度为偶数的限制,将每个点拆成两个点放进一个二分图里,那么每条原图中的边在二 ...

  8. 【刷题】BZOJ 3724 PA2014Final Krolestwo

    Description 你有一个无向连通图,边的总数为偶数. 设图中有k个奇点(度数为奇数的点),你需要把它们配成k/2个点对(显然k被2整除).对于每个点对(u,v),你需要用一条长度为偶数(假设每 ...

  9. BZOJ[3728]PA2014 Final Zarowki

    有n个房间和n盏灯,你需要在每个房间里放入一盏灯.每盏灯都有一定功率,每间房间都需要不少于一定功率的灯泡才可以完全照亮. 你可以去附近的商店换新灯泡,商店里所有正整数功率的灯泡都有售.但由于背包空间有 ...

随机推荐

  1. jeecg项目子窗口获得父窗口元素id

    jeecg项目子窗口获得父窗口元素id, var parentWin = frameElement.api.opener;alert($(parentWin.document).find(" ...

  2. linux下swoole的安装

    //官方推荐的安装方式1:下载压缩包 wget https://github.com/swoole/swoole-src/archive/swoole-1.8.4-stable.zip 2:解压缩 u ...

  3. Example008关闭IE窗口时,不弹出询问对话框

    <!-- 实例008关闭IE主窗口时,不弹出询问对话框 --> <meta charset="UTF-8"> <a href="#" ...

  4. 2.如何修改apache的默认端口

    打开apache的conf文件夹,找到server.xml,修改里面这段的port即可,重启apache,修改成功

  5. 如何简单的实现新手引导之UGUI篇

    一个完整的游戏项目肯定是要做新手引导的,而引导做的好坏可能会影响玩家的留存.那么怎么简单的实现个简有效的引导呢!先不说废话,先看看效果,这是一个基于UGUI做的一个简单的引导! 怎么样,看着是那么回事 ...

  6. html标签及用法小结

    html标签小结 这几天学习了html,才发现各种标签真是多的不行,所以打算把一些个常用的标签拿出来稍微说一下. *** 常用基础标签 大体上分了三类: 带有语义的标签 带有一定样式的标签(此类标签页 ...

  7. Python爬虫学习之爬美女图片

    最近看机器学习挺火的,然后,想要借助业余时间,来学习Python,希望能为来年找一份比较好的工作. 首先,学习得要有动力,动力,从哪里来呢?肯定是从日常需求之中来.我学Python看网上介绍.能通过P ...

  8. 一个简单的python选课系统

    下面介绍一下自己写的python程序,主要是的知识点为sys.os.json.pickle的模块应用,python程序包的的使用,以及关于类的使用. 下面是我的程序目录: bin是存放一些执行文件co ...

  9. ZooKeeper介绍,安装,配置文件解析

    什么是ZooKeeper? ZooKeeper是用于维护配置信息,命名,提供分布式同步和提供组服务的集中式服务. 所有这些类型的服务都以分布式应用程序以某种形式或另一种形式使用.每次实施时,都有很多工 ...

  10. 利用libcurl进行post

    逛百度知道看到有个人提问:http://zhidao.baidu.com/question/1447092283140740700 C写HTTP应用只有疯子才会老老实实的SOCKET编程吧?我后来还是 ...