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 如果我们 ...
最新文章
- ceph-bluestore-tool基本使用
- 删除Add-On表字段后不能激活
- 1023:坑爹的黑店
- nginx配置官网yum源
- 在线修改Schema
- 未来十年,你的人生目标在哪里?
- 蓝桥杯 ADV-189 算法提高 连接乘积
- Hive map阶段缓慢,优化过程详细分析
- matlab符号运算实验,数学实验6--Matlab符号运算.pptx
- 【面向代码】学习 Deep Learning(一)Neural Network
- 【Tableau server日常维护9.0】window server2016 Tableau server保姆教学安装
- 外贸业务员每天必做的事情!
- 用计算机控制操作照相机,摄影教程:用电脑控制相机远程拍摄
- python获得股票数据并画图
- 解决火车头7.6版本无法采集部分https网站处理方法
- PN532和控制器之间的交互
- c++知识点大全(基础与提高)
- 【科普】日期(Date)、时间(Time)、时间戳(Timestamp)、GMT(格林威治时间)、UTC、CST(夏令时)、ISO都是什么鬼?
- 电视android已停止运行是什么意思,智能电视提示应用停止运行怎么办?当贝市场三招解决...
- SpringBoot集成shiro框架