Description

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

你可以去附近的商店换新灯泡,商店里所有正整数功率的灯泡都有售。但由于背包空间有限,你至多只能换k个灯泡。 

你需要找到一个合理的方案使得每个房间都被完全照亮,并在这个前提下使得总功率尽可能小。

Input

第一行两个整数n,k(1<=k<=n<=500000)。 

第二行n个整数pi,表示你现有的灯泡的功率。 

第三行n个整数wi,表示照亮每间房间所需要的最小功率。

Output

如果无法照亮每间房间,仅输出NIE。 

否则输出最小的总功率。

Sample Input

6 2 12 1 7 5 2 10 1 4 11 4 7 5

Sample Output

33

看到数据范围,想到可能是贪心。

我们先按照灯的功率从小到大排序,然后从小到大依次让灯去选择房间。很显然每个灯都要选择自己能够照明的需要功率最大的房间。然后剩下的没有选择的房间只能通过购买灯泡来完成。判断无解也非常容易,如果剩下的房间大于k个就无解。

但是如果剩下房间小于k个,我么显然可以将之前配对好的灯泡替换了来降低答案值。所以我们开个大根堆,维护配对了的的最大值就可以了。

代码:

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<cmath>
#include<queue>
#include<set>
#include<map>
#include<vector>
#include<ctime>
#define ll long long
#define N 500005 using namespace std;
inline int Get() {int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-') f=-1;ch=getchar();}while('0'<=ch&&ch<='9') {x=(x<<1)+(x<<3)+ch-'0';ch=getchar();}return x*f;} int n,k;
ll p[N],w[N];
priority_queue<ll>cha;
multiset<ll>s;
multiset<ll>::iterator it;
ll ans;
int main() {
n=Get(),k=Get();
for(int i=1;i<=n;i++) p[i]=Get();
for(int i=1;i<=n;i++) {
w[i]=Get();
s.insert(w[i]);
}
sort(p+1,p+1+n);
for(int i=1;i<=n;i++) {
it=s.upper_bound(p[i]);
if(it==s.begin()) continue ;
it--;
ans+=p[i];
cha.push(p[i]-*it);
s.erase(it);
if(!s.size()) break;
} if(s.size()>k) {cout<<"NIE";return 0;}
for(it=s.begin();it!=s.end();it++) {
ans+=*it;
}
k-=s.size();
for(int i=1;i<=k;i++) {
ans-=cha.top();
cha.pop();
if(!cha.size()) break;
}
cout<<ans;
return 0;
}

BSOJ 2423 -- 【PA2014】Final Zarowki的更多相关文章

  1. 【BZOJ3728】PA2014Final Zarowki 贪心

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

  2. 【探路者】Final发布

    [探路者]团队项目final发布:贪吃蛇 [探路者]贪吃蛇 final发布展示(视频)链接: http://v.youku.com/v_show/id_XMzIxMDM2MTQ1Ng==.html?s ...

  3. BSOJ 4591 -- 【JLOI2015】城池攻占

    Description 小铭铭最近获得了一副新的桌游,游戏中需要用m个骑士攻占n个城池. 这n个城池用1到n的整数表示.除1号城池外,城池i会受到另一座城池fi的管辖,其中fi 每个城池有一个防御值h ...

  4. 【探路者】final贡献分配

     [探路者]组成员及各位博客地址. 1蔺依铭:http://www.cnblogs.com/linym762/ 2张恩聚:http://www.cnblogs.com/zej87/ 3米赫:http: ...

  5. 【BZOJ-3721】Final Bazarek 贪心

    3721: PA2014 Final Bazarek Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 610  Solved: 243[Submit][ ...

  6. 【JAVA】final修饰Field

    一.简介 final修饰符可以用来修饰变量.方法.类.final修饰变量时一旦被赋值就不可以改变. 二.final成员变量 成员变量是随类初始化或对象初始化而初始化的.当类初始化的时候,会给类变量分配 ...

  7. 【java】final修饰符介绍

    final: 最终,作为一个修饰符特点:1.可以修饰类,函数,变量2.被final修的的类不能被继承.因此类用final修饰可以避免被继承,被子类重写功能.3.被final修饰的方法不可以被重写.4. ...

  8. 【Java】final关键字

    1.final数据 (1)基本类型      数值恒定不变 (2)对象引用      引用恒定不变,初始化的时候指向一个对象后,无法改变为另一个对象,但是对象本身可以修改 2.final方法 可以把方 ...

  9. 【Java】final修饰符的使用

    final修饰符的使用 1.修饰类: final修饰的类不能被继承,final修饰的类里面的方法都是(隐式)final方法 2.修饰方法: final修饰的方法不能被重写 3.修饰变量(被修饰的变量一 ...

随机推荐

  1. mybatis教程4(动态SQL)

    动态SQL语句 MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦.例如拼接时要确保不能忘记添加必要的空 ...

  2. ABP框架

    https://aspnetboilerplate.com/ https://aspnetboilerplate.com/Pages/Documents http://www.cnblogs.com/ ...

  3. [转]微擎应用笔记3--manifest.xml文件使用说明

    本文转自:https://blog.csdn.net/seven_north/article/details/79508121 微擎在安装或卸载模块时会根据manifest.xml生成(或删除)数据库 ...

  4. Extjs4.2+webAPI+EF实现分页以及webapi的数据传值(续)

    现在领导又要增加功能,需要分页的时候,每页显示N条信息.由于是每个页面都要改,所有需要声明了一个扩展类代码如下: // Copyright : 欧蓝德畅电子技术有限公司. All rights res ...

  5. ABP Zero项目入门踩坑

    1.下载ABP项目模板, 打开网址https://aspnetboilerplate.com/Templates,选择MultiPage Web Application,输入项目名称和验证码,即可点击 ...

  6. url字符长度限制解决办法

    前段时间,同事往系统上传相关文档,发现输入失败,找到了我了. 开始以为数据库字段属性问题,修改后未解决随调试系统,发现没有走到后台程序,发现 ajax没有传值,各种测试问题情况,后来同事发现是url字 ...

  7. 【Java每日一题】20161205

    package Dec2016; import java.util.HashSet; public class Ques1205 { public static void main(String[] ...

  8. linux下怎么进入本机mysql

    sudo /etc/init.d/mysql startmysql -u xxxx -p*****mysql >_

  9. 关于 ul 嵌套 li 并且再嵌套 a 的 BUG

    在写网页的过程中,总是写完了这一套,样式出了问题又去找问题废了好长时间总结一下写法以下是结构 经常会出现 li 里面与文字不在一个高度上 <div class="indicators& ...

  10. layui switch 开关监听 弹出确定状态转换

    不废话,直接上图: 原始状态:   点击确定: 点击取消或者X 代码: <!doctype html> <html lang="en"> <head& ...