
2016专题训练5(贪心进阶)
文章平均质量分 61
金金金金鑫
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDU 1257 最少拦截系统
题意: 给你n个依次飞来的导弹高度,问你需要多少套系统才能拦截所有的导弹。 思路: 正解应该是求有几个最长下降子序列,dp来做。我这里是直接模拟一遍,开数组存每套系统当前能射的高度。 #include const int MAX=100005; int n,a,b[MAX]; int main(){ while(~scanf("%d",&n)){ int cnt=0; for原创 2016-07-27 18:45:12 · 197 阅读 · 0 评论 -
Codeforces 268E Playlist
题意: 有n首长度为l[i]的歌,每首歌Manao有p[i]的概率喜欢。在听歌时,若Manao听到了一首不喜欢的歌他会再听完这首歌后返回去听之前所有喜欢的歌。问Manao听完这n首歌的时间期望最大是多少。听歌的顺序由我们来安排。 思路: 对于两首歌a、b来说,我们有先听a再听b和先听b再听a的顺序选择,那么我们选择的依据是选一个对答案贡献最大的顺序,两种顺序对答案的贡献如何求呢?很简单。只有原创 2016-07-27 18:52:42 · 391 阅读 · 0 评论 -
UVALive 7146 Defeat the Enemy
题意: 你有n个攻击力为A,防御力为D的兽人,敌人有m个攻击力为EA,防御力为ED的兽人,两个兽人在对战时同时攻击对方,当攻击力高于对方的防御力时,即可杀死对方。你的兽人只能用一次。问你在杀死所有敌人的前提下你的兽人最多能剩多少。 思路: 将我们的兽人按攻击力A从大到小排列,敌人按防御力D从大到小排列,然后枚举每只敌人,将能杀死他也就是攻击力高于他的兽人防御力丢到一个multiset中,对于原创 2016-07-27 18:46:16 · 395 阅读 · 0 评论 -
FZU 2088 最长队名
题意: 给你n个名字,问你字典序最小的名字组合是什么。 思路: 写个string的比较函数,然后sort一遍。 #include #include #include using namespace std; const int MAX=10005; int n; string s[MAX]; bool cmp(string a,string b){ return a+b<b+a; }原创 2016-07-27 19:05:55 · 369 阅读 · 0 评论 -
POJ 3304 Segments
题意: 给你n条线段,问你是否存在一条直线穿过所有的线段。 思路: 枚举线段的两个端点(x1,y1)、(x2,y2)做一条直线,该直线方程为,然后利用式子来判断线段(x1,y1)-(x2-y2)是否与直线相交。 #include const int MAX=105; struct Segment{ double x1,x2,y1,y2; }seg[MAX]; struct Poin原创 2016-07-27 20:58:11 · 235 阅读 · 0 评论 -
FZU 1911 Construct a Matrix
题意: 定义S(n) = (F1 + F2 + … + Fn) % m,现在给你n、m要你构造S(n)*S(n)的矩阵,要求矩阵内元素只能由-1、0、1组成,而且每行、每列的和均不能相同。 思路: 首先,有公式∑Fi = F(i+2) - 1(你把它拆开就能知道了)。然后我们就能利用矩阵快速幂来求S(n)了。然后就是如何构造这个矩阵。 #include #include struct原创 2016-07-27 21:09:34 · 319 阅读 · 0 评论 -
HDU 3466 Proud Merchants(超值白解释)
题意: 有n个商品m块钱,给出买每个商品所花费的钱P、钱包里需要至少Q才有资格买、商品的价值V。问你如何购买商品的价值最大。 思路: 看完题目很自然就想到了01背包。但是这里有Q的限制即再枚举价钱的过程中只能枚举到Q(因为题目保证了Q>=P)。一开始以为Q比较小枚举得范围比较多,所以就按Q从小到大排序去跑01背包,结果wrong了。然后我就开始乱搞了,先按Q+P排序了一发,还是wrong,然原创 2016-07-27 19:06:51 · 353 阅读 · 0 评论