
贪心
文章平均质量分 84
cillyb
这个作者很懒,什么都没留下…
展开
-
哈夫曼编码原理
哈夫曼(Huffman)编码是一种常用的压缩编码方法,是Huffman于1952年为压缩文本文件建立的。它的基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同。这些代码都是二进制码,且码的长度是可变的。举个例子:假设一个文件中出现了8种符号S0,S1,S2,S3,S4,S5,S6,S7,那么每种符号要编码,至少需要3比特。假设编码成000,001,01转载 2016-06-28 13:51:48 · 4040 阅读 · 0 评论 -
CodeChef Protecting The Poison(贪心)
题意蛇之王国是一个 N × N 的网格,他们最宝贵的藏品就是一个巨大的毒药库,存储在王国中央K × K 的区域中。保证 N 和 K 都是奇数。假设网格中 (1, 1) 为左上角,(N, N) 为右下角,那么中央的 K × K 区域的左上角格子为 ((N - K)/2 + 1,(N - K)/2 + 1)。但有贼想要盗走这些毒药。他们没法进入王国 N × N 的领地中原创 2017-05-31 20:19:35 · 368 阅读 · 0 评论 -
FZU 2252 Yu-Gi-Oh! (思维 枚举 贪心)
另一个平行宇宙的YellowStar,是一名游戏王决斗者,某一天它正在进行一场决斗,它的场面上拥有A只磁石战士a,B只磁石战士β,C只磁石战士γ。现在它要把这些怪物进行一波强力的融合,并且它知道:将磁石战士a和β融合成为磁石战士aβ,战斗力为AB将磁石战士a和γ融合成为磁石战士aγ,战斗力为AC将磁石战士β和γ融合成为磁石战士βγ,战斗力为BC由于Yello原创 2017-06-10 00:34:04 · 786 阅读 · 0 评论 -
Codeforces Round #424 (Div. 2) D. Office Keys(贪心 二分 or DP)
题意:有n个人和k把钥匙(n=n),n个人都必须拿一把钥匙去p点,一把钥匙不能多人拿。问最后每个人都到达p点最少需要多少时间。思路:对人和钥匙都排序一下,然后有两种做法:1.二分答案 贪心验证:每次尽量取左边的钥匙2.DP:转移方程:dp[i][j] = min(dp[i][j-1], max(dp[i-1][j-1], abs(a[i]-b[j])+abs(b[j]-原创 2017-07-14 23:31:17 · 510 阅读 · 0 评论 -
HDU 4442 Physical Examination (贪心)
题意:要参加一场考试,有n个科目,每个科目就是一个考试队列,每个科目队列有如下两个属性,a,b,那么该科目的消耗时间=a+b*(不在该队列排队的时间);问给出n个科目队列,求考完所有科目总耗时最少是多少。思路:假设有x y两个科目,怎样安排先后顺序呢,假设x在前, 时间为ax+ay+ax*by,假设y在前, 时间为ay+ax+ay*bx, 要让x在前的条件是ax+ay+ax*b原创 2017-07-15 23:53:35 · 334 阅读 · 0 评论 -
第七届福建省赛 FZU 2267 The Bigger the Better(贪心 后缀数组)
题意:给你两个数组,让你将这两个数组合并成一个数组,每个数组的内部顺序不能改变,让你求合并能得到字典序最大的数组。(n思路:正常的贪心的思路是用两个指针从两个开头开始比较,谁大谁先放,但是问题在于碰到两个相等的时候谁先放,思路是往后找第一个不相等的,谁的大谁先,但是这样会n^2复杂度。我们可以利用后缀数组将两个数组合并(中间位置要放0,比如 1 1 X 1 1 2比较后应该原创 2017-07-20 19:16:32 · 1020 阅读 · 0 评论 -
2017 Multi-University Training Contest - Team 1 1002 Balala Power!(贪心)
题意:给你n个由小写字母组成的字符串,让你给26个字母分配0-25,每个字符串形成一个26进制的数字,问怎么分配权值这n个数的和最大。(不能有前导0,但是单个0可以)官方题解:每个字符对答案的贡献都可以看作一个 26 进制的数字,问题相当于要给这些贡献加一个 0 到 25 的权重使得答案最大。最大的数匹配 25,次大的数匹配 24,依次类推。排序后这样依次贪心即可,唯一注意的是不能原创 2017-07-25 18:01:43 · 1446 阅读 · 8 评论 -
HDU 4427 Conquer a New Region(思维 并查集)
题意:给你n个点,n-1条带权无向边(一棵树),定义两点之间的承载能力是他们之间路径上的最小承载能力。找出一点,使得其余n-1个点到该点的承载能力之和最大。思路:因为a和b之间的承载能力是它们之间承载量的最小值,所以先将边按承载量从大到小排序。每次合并A,B两个集合时,它们之间的承载量为当前最小,假如A合并到B,则和为sum[A]+cnt[B]*w, B合并到A为sum[B]+原创 2017-07-26 13:51:52 · 423 阅读 · 0 评论 -
2017 Multi-University Training Contest 10 1010 Schedule HDU 6180 (贪心)
题意: 有若干个活动,第i个开始时间和结束时间是[Si,Ei) , 同一个教室安排的活动之间不能交叠,求要安排所有活动,最少需要几个教室? 并输出所有教室的使用时间之和,每个教室的使用时间是该教师最后一个活动结束时间-第一个活动开始时间。思路:对每个活动拆成两点,对所有点排序,On遍历一遍,碰到左端点cnt++,右端点cnt--,维护cnt的最大值即为所需的教室数量,遍历同原创 2017-08-24 20:30:02 · 399 阅读 · 0 评论 -
2017 Multi-University Training Contest 10 1008 Monkeys HDU 6178 (贪心 读入挂fread)
题意:给你一棵n节点的树,现在让你放k个猴子,可以删边,问最少可以剩余几条边,放k个猴子,满足任意一个猴子至少与一只猴子相连。2思路:我们可以知道一条边连两个节点(猴子),这样每对点连一条边是最节约边使猴子放的尽量多。现在问题就转化成就是要找可以有几对点,可以从树根开始dfs,看他有几个儿子和儿子中已经成对的个数,若两者之差>=1,即存在一个儿子能与它成对。虽然算法是O原创 2017-08-24 19:53:59 · 662 阅读 · 0 评论 -
HDU 5887 Herbs Gathering (超大01背包|dfs+剪枝|map|卡时)
题意:最多100个物品,v和w都思路:是个超大01背包。这题有好多做法,学到不少东西。1.dfs+剪枝:我们可以按性价比排序,若剩下的背包空间都以最高性价比选也比我们已知的ans小,则剪枝。2.map优化dp,见代码3.按一定贪心策略把更可能是答案的放前面排序后dfs,运行时间达到一定程度则returnif((clock()-startTime)/CLOCKS_PE原创 2017-08-28 18:06:26 · 750 阅读 · 0 评论 -
Codeforces Round #433 (Div. 2) D. Jury Meeting(思维 贪心 前后缀)
题意:有n+1个城市,从1~n号城市每个城市有一个评委要到0号城市和其他n-1个评委一起工作k天(这k天n个评委都要在),并且要把所有评委送回他原来所在的城市。现在有m个航班,只有从i号城市到0号城市,或者从0号城市到i号城市(航班到达的那天不能工作),问你最少需要花费多少钱。思路:贪心维护dp1[i] 表示第i天所有评委到达的最小花费,dp2[i]表示第i天所有评委离开的花费. 处理原创 2017-09-07 16:35:57 · 379 阅读 · 0 评论 -
2017 华东师范大学网赛 F.丽娃河的狼人传说( 贪心)
题意:方便起见,丽娃河可以看成是从 1 到 n 的一条数轴。为了美观,路灯只能安装在整数点上,每个整数点只能安装一盏路灯。经专业勘测,有 m 个区间特别容易发生事故,所以至少要安装一定数量的路灯,请问至少还要安装多少路灯。思路:按右端点排序,然后缺的路灯尽量往后放,这题数据很弱,暴力也可以过。。。比赛的时候智障了,-1的时候没有输出Case #,wa了半天。暴力代码:#incl原创 2017-05-14 17:32:15 · 468 阅读 · 0 评论 -
Codeforces Round #380 (Div. 2) D. Sea Battle (贪心)
题意:问你最少开几枪至少命中一条船。思路:枚举可能船的区间,并记录区间的末尾,不能记开头,最后区间数减去船数就是可能射空的数量,再加一就必中一条船了。代码:#includeusing namespace std;const int maxn = 2e5+5;int n, a, b, k, book[maxn], ans[maxn];char str[maxn];原创 2016-11-21 00:01:10 · 484 阅读 · 0 评论 -
51nod 1163 最高的奖励(贪心+堆)
题意:有N个任务,每个任务有一个最晚结束时间以及一个对应的奖励。在结束时间之前完成该任务,就可以获得对应的奖励。完成每一个任务所需的时间都是1个单位时间。有时候完成所有任务是不可能的,因为时间上可能会有冲突,这需要你来取舍。求能够获得的最高奖励。思路:建立一个以任务的奖金为权值的小根堆,初始堆空,用len记录堆的规模(堆中元素个数)。 对任务按截止时间 t[i] 从小到大排序,按序枚举每个原创 2017-05-10 22:57:18 · 574 阅读 · 0 评论 -
HDU - 1052 Tian Ji -- The Horse Racing(简单贪心)
Tian Ji -- The Horse RacingTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 25569 Accepted Submission(s): 7528Problem Description原创 2016-06-09 11:23:06 · 500 阅读 · 0 评论 -
POJ - 1328 Radar Installation (贪心,区间选点问题)
Radar InstallationTime Limit: 1000MSMemory Limit: 10000KTotal Submissions: 51131Accepted: 11481DescriptionAssume the coasting is an infinite straight line. Land is in转载 2016-05-18 08:46:31 · 631 阅读 · 0 评论 -
poj 3190 Stall Reservations(区间贪心,优先队列)
Stall ReservationsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 5390 Accepted: 1945 Special JudgeDescriptionOh those picky N (1 <= N <= 50,000) co原创 2016-08-15 15:33:06 · 499 阅读 · 0 评论 -
poj 3253 Fence Repair(哈夫曼)
http://poj.org/problem?id=3253Fence RepairTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 38391 Accepted: 12478DescriptionFarmer John wants to rep原创 2016-06-28 15:01:53 · 612 阅读 · 0 评论 -
Codeforces Round #377 (Div. 2) C. Sanatorium(贪心,二分)
主要是要能想到贪心策略,要尽量在后面几天考。又因为结果肯定是单调的,一个能考完的点的右边肯定是都能考完,一个不能考完的点的左边肯定是不能考完的。所以就可以用二分。代码:#includeusing namespace std;const int maxn = 1e5+5;int n, m, can[maxn], need[maxn];bool book[maxn]原创 2016-10-18 21:41:37 · 429 阅读 · 0 评论 -
hdoj 5933 ArcSoft‘s Office Rearrangement(贪心,模拟)
题目地址:点击打开链接一开始读错题,以为可以合并任意两个区间。。其实是只能合并相邻的。思路:分情况讨论,每次判断当前点是比avg大还是小,如果大的话就把多余的部分放到下一个点上,拆操作是商-1次。余数merge到下一个的操作是2次(一次拆,一次merge),如果小于平均的话就全merge到上一个去。 当然考虑当前和下一个的和能不能作为一次。代码:#inclu原创 2016-11-30 23:50:56 · 442 阅读 · 0 评论 -
hdu 5248 序列变换(二分+贪心)
题目地址:点击打开链接思路:二分套路题,二分最小代价,贪心去验证是否能变成递增序列,验证时要尽可能让每个数变得最小。代码:#include#include#includeusing namespace std;const int maxn = 1e5+5;int a[maxn], n, t, ca = 1;bool judge(int x){原创 2017-02-28 22:16:57 · 796 阅读 · 0 评论 -
CodeForces - 363D Renting Bikes(二分,贪心)
题目地址:点击打开链接题意:n个人,每个人自己有一定的钱,还有公共的预算。m辆自行车,每辆车有一定的价格。求最多能租几辆车并且用的私房钱的总数最少。思路:遇到这种题总是想不到正确的思路方向。二分车辆,然后贪心验证。最后用私房钱最少就是需要买价格最低的k辆车花费和-公共的钱,注意下不能是负数。还有注意用long long。代码:#include#include#inclu原创 2017-02-24 11:45:55 · 609 阅读 · 0 评论 -
2016 EC-Final Problem D. Ice Cream Tower(二分+贪心)
题目地址:点击打开链接题意:有N个冰淇淋球,做一个冰淇淋需要K个球,这K个球还必须满足上下相邻的下面比上面大至少两倍。先给出N个球的质量,问最多能做出多少个冰淇淋?思路:二分可以做的冰淇淋数,贪心验证是否可以堆成,将冰淇淋按从小到大排序,一层一层贪心地堆就可以了,因为这个冰淇淋如果当前不能用上,那么后续更不可能用上。代码:#includeusing n原创 2017-03-10 23:48:12 · 1196 阅读 · 0 评论 -
poj 2442 Sequence(贪心,堆)
SequenceTime Limit: 6000MS Memory Limit: 65536KTotal Submissions: 8976 Accepted: 2996DescriptionGiven m sequences, each contains n non-negative integer. Now we ma原创 2016-08-16 20:31:40 · 559 阅读 · 0 评论 -
ZOJ 3715 Kindergarten Election(枚举、贪心)
题目地址:点击打开链接做的时候根本硬是想不出怎么去贪心或者dp。 其实数据量很小,n去贪心计算得到这个数量的票数且没人的票数>=他,所需的最小花费。贴下别人的题解 : 题意: 在幼儿园里..每个小朋友投一票选举领导...得票最多的小朋友成为领导(若有多个..则多个领导)..现原创 2017-04-03 15:31:29 · 433 阅读 · 0 评论 -
HDU 5884 Sort (二分 贪心(k叉哈夫曼树))
官方题解:代码:#includeusing namespace std;typedef long long ll;const int maxn = 1e5+5;int a[maxn];int n, T;namespace fastIO { #define BUF_SIZE 1000000 //fread -> read bool IOe原创 2017-09-15 23:49:08 · 406 阅读 · 0 评论