有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
HINT

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

Sol:

/*
将手头上有的亮度a及要求的房间亮度b都降序排出来
一个个拿出要求的亮度,将大于等于它的a的值一个个丢到小根堆q里
然后看下q是否为空,如果为空说明此时要去商店拿一个亮度与当前一致的
如果q不为空,则弹出堆顶值,并将两者的差值加到一个大堆根q1中
全部做完后,如果还有名额去商店拿灯泡,则弹出q1的堆顶
*/
#include<bits/stdc++.h>
#include<cstdio>
#include<queue>
#define N 500050
using namespace std;
priority_queue<int,vector<int>,greater<int> >q;
priority_queue<int,vector<int>,less<int> >q1;
inline bool cmp(int a,int b)
{
return a>b;
}
int a[N],b[N];
int n,k,t,x;
long long ans;
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
scanf("%d",a+i);
for(int i=;i<=n;i++)
scanf("%d",b+i);
sort(a+,a+n+,cmp);//手头上的灯,降序排好
sort(b+,b+n+,cmp);//要求的灯的亮度
t=;
for(int i=;i<=n;i++)
{
while(a[t]>=b[i]&&t) //将大于第i个所要求的灯亮度的灯丢到小根堆里
q.push(a[t++]);
if(q.empty()) //如果堆为空
{
ans=ans+b[i];//使用当前亮度
if(k) //如果还可以换灯泡
k--;
else //堆中没有大于当前要求亮度的,又没办法去商店拿,于是无解
return printf("NIE"),;
}
else //说明堆中还有元素值大于当前亮度的
{
x=q.top();
q.pop();
ans=ans+x;//从小根堆中取出一个大于等于当前要求亮度的且值最小的,用上之
q1.push(x-b[i]);//差值放到大根堆中
}
}
while(k--&&!q1.empty())//如果还可以换灯泡的话
{
ans=ans-q1.top();
// cout<<"change it ans is "<<ans<<endl;
q1.pop();
}
return printf("%lld",ans),;
}

BZOJ[3728]PA2014 Final Zarowki的更多相关文章

  1. BZOJ 3721: PA2014 Final Bazarek

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

  2. bzoj 3722: PA2014 Final Budowa

    3722: PA2014 Final Budowa Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 303  Solved: 108[Submit][St ...

  3. BZOJ 3727 PA2014 Final Zadanie 树形DP

    题目大意:给定一棵树,令一个点到全部点的距离与点权的乘积之和为b[i].求每一个点的权值a[i] 首先假设给定a[i]我们能够非常轻松的求出b[i] 可是反过来怎么搞?高斯消元?30W? 考虑已知a[ ...

  4. BZOJ 3721: PA2014 Final Bazarek【乱搞】

    有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价. Input 第一行一个整数n(1<=n<=1000000),表示商品数量.接下来一行有n个整数,表示每件商品的价格,范 ...

  5. bzoj 3721: PA2014 Final Bazarek 贪心

    如果没有限制,直接取前 $k$ 大即可. 有限制,则只有几种可能:奇换偶,偶换奇. 维护奇数偶数的前缀最小值和后缀最大值即可. code: #include <bits/stdc++.h> ...

  6. 【BZOJ 3727】 3727: PA2014 Final Zadanie (递推)

    3727: PA2014 Final Zadanie Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 279  Solved: 121 Descript ...

  7. 【BZOJ3727】PA2014 Final Zadanie 树形DP

    [BZOJ3727]PA2014 Final Zadanie Description 吉丽YY了一道神题,题面是这样的:“一棵n个点的树,每条边长度为1,第i个结点居住着a[i]个人.假设在i结点举行 ...

  8. 【BZOJ3721】PA2014 Final Bazarek 贪心

    [BZOJ3721]PA2014 Final Bazarek Description 有n件商品,选出其中的k个,要求它们的总价为奇数,求最大可能的总价. Input 第一行一个整数n(1<=n ...

  9. bzoj 3728: PA2014Final Zarowki

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

随机推荐

  1. 继续死磕python

    一.数据运算 算术运算 比较运算 赋值运算 逻辑运算 成员运算 身份运算 位运算 其中左右移运算是逻辑左右移即缺失位补0,而算数右移缺失补符号位(注意逻辑运算都是补码运算即都取补码再运算,然后结果也是 ...

  2. python小实例

    一.跳动的心 love = '\n'.join([''.join([('love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0 ...

  3. 生成对抗网络资源 Adversarial Nets Papers

    来源:https://github.com/zhangqianhui/AdversarialNetsPapers AdversarialNetsPapers The classical Papers ...

  4. 树莓派上固定ip

    sudo nano /etc/dhcpcd.conf interface eth0 static ip_address=192.168.123.99/24 static routers=192.168 ...

  5. vecto容器中一些没有注意到的地方

    vector容器 vectoor是一个单口容器. vector动态增长的基本原理 当插入新元素的时候,如果空间不足,那么vector会重新申请更大的一块内存空间,将原空间数据拷贝到新空间,释放旧空间的 ...

  6. wpf socket 简单通讯示例

    源码下载地址:https://github.com/lizhiqiang0204/WPF-Socket 效果如下:

  7. js 变量类型

    变量类型分为:基础类型和引用类型 基础类型:boolean, string, number, null, undefined, symbol 引用类型: array, object typeof: 判 ...

  8. ESP8266-12F

    读者可以把ESP8266当做Arduino+WiFi功能来开发 ESP8266模块支持STA/AP/STA+AP 三种工作模式: STA 模式:ESP8266模块通过路由器连接互联网,手机或电脑通过互 ...

  9. git clone项目失败,Host key verification failed.

    在码云上创建了一个项目,配置好公钥后,克隆到我本地出现以下失败 百度了好久也没有找到解决办法,困扰了好久,后来还是百度到了, 原来是在提示 ey fingerprint is SHA256:FQGC9 ...

  10. 【hackerrank】Placements

    题目如下: You are given three tables: Students, Friends and Packages. Students contains two columns: ID  ...