--------【贪心算法】
文章平均质量分 70
liuyanfeier
acmer
展开
-
Hdu3363 贪心
题意:给一个字符串只由”H”和”T”组成,可以在字符之间做切割,问是否可以在切割之后将T和H分别平分成两份。若能,输出需要切割的刀数以及分别在第几个字符处做切割;若不能,输出-1. 这道题目比较不好想,但要是想出来了就比较简单了。一开始没什么思路,觉得怎样都不容易写,后来看了大神的分析才恍然大悟。 只要能想明白这道题目最多字需要切两刀,就基本上可以解出来了。 证明如原创 2015-08-12 20:01:20 · 808 阅读 · 0 评论 -
51nod1432 贪心
上船问题。排序之后枚举最大重量就可以了。#include #include #include #include #include #include #include #include using namespace std ;#define mem(a) memset(a,0,sizeof(a))#define inf 100000005int c原创 2016-03-19 13:08:43 · 276 阅读 · 0 评论 -
51nod 1191(贪心+优先队列)
有N只兔子,每只有一个血量B[i],需要用箭杀死免子。有M种不同类型的箭可以选择,每种箭对兔子的伤害值分别为D[i],价格为P[i](1 特别说明:1、当箭的伤害值大于等于兔子的血量时,能将兔子杀死;2、血量B[i],箭的伤害值D[i],箭的价格P[i],均小于等于100000。分析:贪心+优先队列。将兔子排序之后在将弓箭按伤害值排序,之后从大到小枚举兔原创 2016-03-22 16:33:57 · 404 阅读 · 0 评论 -
51nod 1182(简单贪心)
约翰认为字符串的完美度等于它里面所有字母的完美度之和。每个字母的完美度可以由你来分配,不同字母的完美度不同,分别对应一个1-26之间的整数。约翰不在乎字母大小写。(也就是说字母F和f)的完美度相同。给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25分配给a,这样整个字符串完美度为77。简单题,直接统计每个字符出现的次数然后依次从大到小赋值26,2原创 2016-03-22 17:04:48 · 317 阅读 · 0 评论 -
51nod 1163 (贪心+优先队列)
有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励。在结束时间之前完成该任务,就可以获得对应的奖励。完成每一个任务所需的时间都是1个单位时间。有时候完成所有任务是不可能的,因为时间上可能会有冲突,这需要你来取舍。求能够获得的最高奖励。分析:首先可以将所有完成时间截止日期大于n的任务的截止日期置为n,这是因为遍历完所有的任务只需要n步,所以只需要的时间为n,当截止日期大于n的时原创 2016-03-23 20:10:46 · 603 阅读 · 0 评论 -
51nod 1117(贪心+优先队列)
一位老木匠需要将一根长的木棒切成N段。每段的长度分别为L1,L2,......,LN(1 木匠发现,每一次切割花费的体力与该木棒的长度成正比,不妨设切割长度为1的木棒花费1单位体力。例如:若N=3,L1 = 3,L2 = 4,L3 = 5,则木棒原长为12,木匠可以有多种切法,如:先将12切成3+9.,花费12体力,再将9切成4+5,花费9体力,一共花费21体力;还可以先将12切成4+8,原创 2016-04-05 21:22:24 · 372 阅读 · 0 评论 -
51nod1099 贪心
有N个任务需要执行,第i个任务计算时占R[i]个空间,而后会释放一部分,最后储存计算结果需要占据O[i]个空间(O[i] 例如:执行需要5个空间,最后储存需要2个空间。给出N个任务执行和存储所需的空间,问执行所有任务最少需要多少空间。题目意思刚开始有点不懂,但是又好像懂了就开始写。然后知道肯定是排序,一开始觉得是按照r排序,r越大越先执行这样看好像是需要的空间最原创 2016-04-06 11:18:41 · 433 阅读 · 0 评论 -
51nod 1428 (贪心+优先队列)
有若干个活动,第i个开始时间和结束时间是[Si,fi),同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室? Input第一行一个正整数n (n <= 10000)代表活动的个数。第二行到第(n + 1)行包含n个开始时间和结束时间。开始时间严格小于结束时间,并且时间都是非负整数,小于1000000000Output一行包含一个整数表示原创 2016-04-08 11:23:17 · 660 阅读 · 0 评论 -
hdu 5661 异或
两个区间,(a,b)和(c,d),数据范围为long long ,在这俩个区间里面各选取一个数字求异或,求最大的异或值。官方题解:考虑从高位到低位贪心,对于每一位,如果x,y只有唯一的取法,那么只能这么取;否则贪心地必须使答案的这一位等于1。如果x,y都是0,1都能取,则设这是从右向左数第len位,因为x,y能取的值一定都是连续的一段,因此x,y的后len位都能取0原创 2016-04-25 17:11:41 · 478 阅读 · 0 评论 -
51node1091 线段的最长交集(贪心)
X轴上有N条线段,每条线段包括1个起点和终点。线段的重叠是这样来算的,[10 20]和[12 25]的重叠部分为[12 20]。给出N条线段的起点和终点,从中选出2条线段,这两条线段的重叠部分是最长的。输出这个最长的距离。如果没有重叠,输出0。排序之后直接贪心就可以了。#include #include #include #include原创 2016-05-02 15:24:43 · 1070 阅读 · 0 评论 -
Hdu1009 贪心
解题报告题意:题目真长,看不怎么懂。就是说有n个房间,每个房间都有avaBean这种东西,每个房间东西的质量为Ji,需要支付的钱为Fi。问在总钱数为M的前提下,最多可以得到avaBean的质量是多少。这道题目比较简单,将每个房间的avaBean按单价排序然后在用钱去买即可。#include #include#includeusing namespace std;struct原创 2015-08-12 19:59:15 · 385 阅读 · 0 评论