BZOJ3728 PA2014Final Zarowki

贪心题目

然而我的贪心又是错的,但是这一次至少大体思路对了

我的错误思路:

把数组分别排序,然后一一对应,如果小就换,最后如果还有机会,就在剩下的大的选择差值最大的减去

正确思路:

将\(p\)数组排序,对于每个数,都找到小于等于他的最大的数,然后把他们的差值扔到堆里

找最大的数可以利用两个数组排序之后的单调性或者直接暴力上multiset去解决

如果最后还有超过\(k\)个房间没有被匹配,说明无解

否则就换成对应功率的灯泡

有过还有剩余机会

就把堆中的对应的数抹平

#include<cstdio>
#include<iostream>
#include<queue>
#include<algorithm>
#include<cstring>
#include<cctype>
#include<set>
#include<vector>
#include<ctime>
#include<cmath>
#define LL long long
#define pii pair<int,int>
#define mk make_pair
#define fi first
#define se second
using namespace std;
const int N = 5e5 + 3;
int p[N];
int w[N];
multiset <int> s;
priority_queue <int> q;
int n,k;
LL ans;
inline int read(){int v = 0,c = 1;char ch = getchar();while(!isdigit(ch)){if(ch == '-') c = -1;ch = getchar();}while(isdigit(ch)){v = v * 10 + ch - 48;ch = getchar();}return v * c;
}
int main(){multiset<int>::iterator it;n = read(),k = read();for(int i = 1;i <= n;++i) p[i] = read();for(int i = 1;i <= n;++i){w[i] = read();s.insert(w[i]); }sort(p + 1,p + n + 1);for(int i = 1;i <= n;++i){it = s.upper_bound(p[i]);if(it == s.begin()) continue;it--;ans += p[i];q.push(p[i] - *it);s.erase(it);} if(s.size() > k){printf("NIE\n");return 0;}for(it = s.begin();it != s.end();it++){ans += *it;k--;q.push(0);}while(k != 0){ans -= q.top();q.pop();k--;    }printf("%lld\n",ans);return 0;
}

转载于:https://www.cnblogs.com/wyxdrqc/p/11401335.html

BZOJ3728 PA2014Final Zarowki相关推荐

  1. c语言判断获取位置字符,C语言 · 判定字符位置

    Linux终端打印命令使用介绍 常用linux打印命令 日常使用中或shell脚本中linux终端打印命令有echo和printf.  echo命令 功能说明:显示文字.语 法:echo [-ne][ ...

  2. [颓废史]蒟蒻的刷题记录

    QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...

  3. BSOJ 2423 -- 【PA2014】Final Zarowki

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

  4. 【BZOJ4209】西瓜王

    Description 西瓜王xgw最近喜欢上了玩星际争霸,很神的他尤其喜欢玩神族.有一天他生产了非常多的高阶圣堂和黑暗圣堂,并把他们排成了一条直线. 但是他觉得这些东西奇形怪状的很不好看,于是他想把 ...

最新文章

  1. 考研国家线罕见大幅上涨,12个学科涨幅10分以上,超300万人将落榜
  2. 第一届河北工业大学程序设计竞赛校赛 【个别题的解析】
  3. CVPR 2018 目标跟踪相关论文
  4. 鲲鹏云HCIA知识总结(二)
  5. Unity 音频优化方案
  6. python 创建文件_Python入学首次项目,新手必看,简单易操作
  7. 安卓工控主板运行时会自动重启_工控主板在工业自动化中的应用
  8. Lengauer-Tarjan算法--支配树构造(bzoj 2815: [ZJOI2012]灾难)
  9. HCIE Security 二层攻击防范 备考笔记(幕布)
  10. 线性调频信号学习笔记
  11. CAD如何绘制带有弧形的箭头
  12. 我的世界租赁服自定义服务器,我的世界租借服务器(我的世界技巧教程 租赁服务器玩家间传送功能)...
  13. 四六级考试中的计算机类文章,四六级英语考试进入机考时代
  14. The Fool 傻子
  15. 工业级ADSL有线路由器/远程视频监控专用路由器
  16. HTML编程(网页的基本标签)
  17. halcon修改图像的灰度值02
  18. Win10台式电脑网线正常但连不上网。
  19. ftp服务器下载,绿色版ftp服务器下载,以及ftp上传工具使用指南
  20. MobaXterm如何修改字体

热门文章

  1. JDK8启动时,参数传递过程
  2. OpenJDK8-u302-b03哪里去也?
  3. Migrate Project to Gradle? This project does not use the Gradle build system
  4. jogamp-env.xml:48: Unsupported Java version: 11. Make sure that the version of the Java compiler is
  5. File /usr/local/lib/python3.5/site-packages/dateutil/rrule.py, line 55 raise ValueError
  6. 管理感悟:提倡撞钟的工作态度
  7. 买手机数据线特别要注意的地方
  8. rabbitmq python高性能开发_RabbitMQ工作队列实现高性能任务的负载分发[Python实例]...
  9. java中窗口怎么添加动态图_java 点击按钮在窗口中加载图片
  10. 鼠标被计算机无法识别怎么办,win7系统usb鼠标无法识别怎么解决 电脑usb鼠标无法识别解决方法...