codevs 2382 [CSTC2007] 挂缀 贪心
题目:
http://codevs.cn/problem/2382/
这道题很难;
思路:
设a挂缀承受能力为ca,重量为wa,
b挂缀承受能力为cb,重量为wb,
设x为a,b下面的挂缀总重量;
若a在b上面更好(剩余承受能力更多),即:a.c-b.w-x > b.c-a.w-x;
移项得 a.c+a.w > b.c+b.w;
令d=(承受能力+重量)
所以,我们需要对每种挂缀的d进行排序;
然后,我们发现这仅仅只是一个贪心的方向;
若a.d>b.d,则a未必在b上面,因为a的承受能力可能比b小;
结合题目要求,最终输出最小重量;
有没有DP的感觉?
但是,这显然不是DP,因为数据范围太大,显然是小于O(nlogn)的做法;
所以,还要考无敌的贪心;
维护一个堆,像http://blog.csdn.net/qq_36312502/article/details/78249623那样做就可以了;
注意我们由小及大,所以考虑从下往上组成这个挂缀,这样就可以由大的更新小的了;
题外话:
这题我连WA五遍,然后改了半个小时;
最后发现没有将调试时写的代码去干净,QAQ!
堆的基本操作为O(logn),最多执行n次,排序为O(nlogn),
所以总复杂度为O(nlogn);
总结:
1.这是一类贪心题型,即在当前答案不变的情况下,尽可能使花费变小,让以后的状态更优;
2.细节!细节!去干净调试代码!
#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
using namespace std;typedef long long ll;const ll MAXN=400001;
ll cnt=0,sum=0,n;
struct hh {ll c,w,d;}ma[MAXN];bool operator < (hh a,hh b)
{return a.w < b.w;
}
priority_queue<hh>q;bool cmp(hh a,hh b)
{return a.d < b.d;
}void calc()
{for(ll i=1;i<=n;i++){if(ma[i].c>=sum)cnt++,sum+=ma[i].w,q.push(ma[i]);else{if(q.empty()) continue;hh u=q.top();if(u.w > ma[i].w)q.pop(),sum-=u.w,sum+=ma[i].w,q.push(ma[i]);//因为i.d>u.d,而i.w<u.w,所以i.c>u.c,所以不用担心i无法承受u下面挂缀的情况;}}return;
}void solve()
{scanf("%lld",&n);for(ll i=1;i<=n;i++){scanf("%lld%lld",&ma[i].c,&ma[i].w);ma[i].d=ma[i].c+ma[i].w;}sort(ma+1,ma+n+1,cmp);calc();cout<<cnt<<endl<<sum<<endl;
}int main()
{solve();return 0;
}
codevs 2382 [CSTC2007] 挂缀 贪心相关推荐
- 【codevs 2382】挂缀
题目描述 Description "珠缀花蕊,人间几多酸泪"-- 挂缀在很早就被人们作为一种装饰品,垂坠的风韵,华丽摇曳的摆动,展现出一种与众不同的优雅与高贵.而我们的主人公小Q, ...
- Codevs 2382 挂缀
题目描述 Description "珠缀花蕊,人间几多酸泪"-- 挂缀在很早就被人们作为一种装饰品,垂坠的风韵,华丽摇曳的摆动,展现出一种与众不同的优雅与高贵.而我们的主人公小Q, ...
- 挂缀codevs2382
题目描述 Description "珠缀花蕊,人间几多酸泪"-- 挂缀在很早就被人们作为一种装饰品,垂坠的风韵,华丽摇曳的摆动,展现出一种与众不同的优雅与高贵.而我们的主人公小Q, ...
- codevs地鼠游戏(贪心)
1052 地鼠游戏 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 题目描述 Description 王钢是一名学习成绩优异的学生,在平时的学习中,他总能 ...
- [BZOJ4319][cerc2008]Suffix reconstruction(贪心)
=== === 这里放传送门 === === 题解 这题发题解的时候纠结了半天挂什么tag..后缀数组?这哪里用后缀数组了..暴力?感觉好敷衍..最后还是决定挂上贪心的tag好了... ATP一开始看 ...
- 诗与远方:无题(四十八)
写这首诗时,想着找到一个女生可以一起看日出,一起牵着手看日落,一起去公园赏花,一起享受着音乐,可以一起去看场演唱会,海枯石烂,地老天荒的爱情,就这样陪着你,但是都没有,只是自己在想,如同做梦一样: 七 ...
- Autodesk.ArtCAM.Premium.2017.Suite.build110.Multilang.Win64 1DVD
Camtek PEPS v5.3.14 MultiLanguage-ISO 2CD(铣削.三维曲面铣削.车削.5轴激光切割.6轴管材切割.线切割软件) Gemvision.com产品: Digital ...
- 【贪心】【codevs】1214 线段覆盖
http://codevs.cn/problem/1214/ 我去这个题...wa的我都没脾气了... 我写while(~scanf("%d", &n))竟然是不对的... ...
- codevs 2612 最有分解方案 (贪心)
/* 数字不重复 将一个正整数分解成若干的整数的和 数字不重复 且数字不相同 保证不重复的话 贪心策略是从2开始分 然后把最后剩下的数均匀分到后面 证明嘛 这里写的可能不是很严谨 对于一个n 如果我们 ...
最新文章
- 技术图文:Numpy 一维数组 VS. Pandas Series
- Python编程神器Jupyter Notebook使用的28个秘诀(附代码)
- 关于龙芯的争吵我都无语了
- CentOS7 Apache调优之开启deflate压缩模块
- 设计模式(四)--代理模式
- nltk book的下载
- java 类说明,java基础类型说明
- php tostring(),【php】“__toString()”方法使用,php__tostring
- ffmpeg基础流程:音频处理
- HDU1150Machine Schedule(二分图最大匹配的DFS解法)
- react WangEditor 编辑器阿里云OSS上传图片
- Java表格Table冻结前几列或者前几行,其余行或列自由滑动。
- 打字教程新手篇-指法练习的重要性和注意事项
- tibco常用命令记录
- 手机连接不上电脑的移动热点ip配置失败
- OneNote笔记本分类方法
- wamp出现拒绝访问
- mysql配置文件生效测试
- html导航栏横向展开,横向三级展开的CSS菜单
- 联想集团是一家在信息产业内多元化发展的大型企业集团
热门文章
- android 系统儿童锁,儿童锁-家长助手
- modelsim 安装路径存在空格导致不能正常使用
- springboot整合阿里云视频点播服务Vod——实现视频上传、删除、播放
- CTF——AWD模式小总结
- 咪咕音乐的下载音乐存储路径(MAC)
- python将图片转换成动漫,python实现图片转换成素描和漫画格式
- ISO3834国际焊接认证简介
- 双语电子书epub格式
- 1月第4周安全回顾 移动安全受关注 黑客威胁公共设施
- 学校计算机机房网络设备,[学校计算机机房的维护]学校计算机机房硬件设备清单...