题目:

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] 挂缀 贪心相关推荐

  1. 【codevs 2382】挂缀

    题目描述 Description "珠缀花蕊,人间几多酸泪"-- 挂缀在很早就被人们作为一种装饰品,垂坠的风韵,华丽摇曳的摆动,展现出一种与众不同的优雅与高贵.而我们的主人公小Q, ...

  2. Codevs 2382 挂缀

    题目描述 Description "珠缀花蕊,人间几多酸泪"-- 挂缀在很早就被人们作为一种装饰品,垂坠的风韵,华丽摇曳的摆动,展现出一种与众不同的优雅与高贵.而我们的主人公小Q, ...

  3. 挂缀codevs2382

    题目描述 Description "珠缀花蕊,人间几多酸泪"-- 挂缀在很早就被人们作为一种装饰品,垂坠的风韵,华丽摇曳的摆动,展现出一种与众不同的优雅与高贵.而我们的主人公小Q, ...

  4. codevs地鼠游戏(贪心)

    1052 地鼠游戏  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 钻石 Diamond 题目描述 Description 王钢是一名学习成绩优异的学生,在平时的学习中,他总能 ...

  5. [BZOJ4319][cerc2008]Suffix reconstruction(贪心)

    === === 这里放传送门 === === 题解 这题发题解的时候纠结了半天挂什么tag..后缀数组?这哪里用后缀数组了..暴力?感觉好敷衍..最后还是决定挂上贪心的tag好了... ATP一开始看 ...

  6. 诗与远方:无题(四十八)

    写这首诗时,想着找到一个女生可以一起看日出,一起牵着手看日落,一起去公园赏花,一起享受着音乐,可以一起去看场演唱会,海枯石烂,地老天荒的爱情,就这样陪着你,但是都没有,只是自己在想,如同做梦一样: 七 ...

  7. Autodesk.ArtCAM.Premium.2017.Suite.build110.Multilang.Win64 1DVD

    Camtek PEPS v5.3.14 MultiLanguage-ISO 2CD(铣削.三维曲面铣削.车削.5轴激光切割.6轴管材切割.线切割软件) Gemvision.com产品: Digital ...

  8. 【贪心】【codevs】1214 线段覆盖

    http://codevs.cn/problem/1214/ 我去这个题...wa的我都没脾气了... 我写while(~scanf("%d", &n))竟然是不对的... ...

  9. codevs 2612 最有分解方案 (贪心)

    /* 数字不重复 将一个正整数分解成若干的整数的和 数字不重复 且数字不相同 保证不重复的话 贪心策略是从2开始分 然后把最后剩下的数均匀分到后面 证明嘛 这里写的可能不是很严谨 对于一个n 如果我们 ...

最新文章

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

热门文章

  1. 4.20 视频面试字节_光大银行_神策
  2. 怎么用U盘制作原版系统启动盘
  3. 计算机课教学日志,计算机教学研修日志.doc
  4. C语言课设分享:图片加载
  5. C++打印图片的方法
  6. python基础(一)
  7. 符号在excel中的引用_如何在Excel工作表中添加表情符号
  8. 78㎡网络机房动环监控及告警方案
  9. Coding中UML建模问题释疑
  10. CCjump解决:在微信中访问app下载链接提示“已停止访问该网页”