
ACM_贪心
羁绊残阳
四川大学计算机科学与技术
展开
-
Coderforces 508B 简单贪心
背景:1——WA:有一出少了break,还是惧怕时间没有自己出数据看看的错!思路:fi全是奇数,输出-1,else if 全部偶数都大于最后一位数,让最右边的偶数和最后一位数交换;else 让最左边的比最后一位数打的偶数与最后一位数交换!#include#includechar str[100009];int main(void){ while(~scanf("%s",str)原创 2015-01-28 14:50:11 · 670 阅读 · 0 评论 -
poj 3111 Status List (二分 + 贪心 最大化平均值)
@(K ACMer) by 题解工厂题意:有n个东西,每个东西的价值为x重量为y,从中选取k个东西,求价值重量比得最大值t.分析:典型的最大化平均值问题.如果不仔细思考容易按照贪心的思想去做,贪心是简单但是要基本确定他是对的再做!这里贪心就不对. 要满足:∑x / ∑y>=t\sum x \ / \ \sum y >= t 有:∑x−y∗t>=0\sum{x - y * t} >= 0 这里在原创 2015-09-16 00:54:50 · 482 阅读 · 0 评论 -
Codeforces596C Wilbur and Points(贪心)
@(K ACMer)题意: 给你一个点集,每个点的weight为(y−x)(y - x),你需要给出这些点的一个排列,这些点满足:如果y2>=y1且x2>=x1y2 >= y1 且x2 >= x1,就必须让,就必须让(x2,y2)排在排在(x1,y1)后面.显然满足这个点集可能有多个排列满足这个条件.然后给你一个weight的排列:后面.显然满足这个点集可能有多个排列满足这个条件. 然后给你一原创 2015-11-16 17:25:51 · 646 阅读 · 0 评论 -
hdu5526 贪心
/**********************jibancanyang************************** *Author :jibancanyang *Created Time : 四 4/14 11:35:23 2016 *File Name : hdu.cpp *Problem: 贪心 *Get:如果前面的数总是能整除后面的数,那么就是直接贪原创 2016-04-14 14:52:49 · 340 阅读 · 0 评论 -
Codeforces Round #352 (Div. 2) C
Problem: 几何 + 贪心 Analyse: 这个题就是贪心的思路,但是思维容易有缺陷,少考虑一个人不走或者误写为两个人都不走的情况. 思路一定要完备了再动手写代码,而且思路要写在纸上!/**********************jibancanyang************************** *Author* :jibancanyang *Crea原创 2016-05-12 12:51:41 · 271 阅读 · 0 评论 -
Codeforces Round #352 (Div. 2) D 二分贪心两头 + 细节
Problem: Analyse: - 好的思维就是把左右端点分开来考虑. - 显然对左端点和右端点,都来二分答案贪心判断的求解,找到k步操作它们各自能到达的位置. - 有一个细节就是k很大的时候,左右端点会交叉,这时候我们就要判断在相交点是否可以差值为0了…./**********************jibancanyang************************** *Au原创 2016-05-12 14:56:47 · 332 阅读 · 0 评论 -
cf665c 简单贪心
/**********************jibancanyang************************** *Author :jibancanyang *Created Time : 三 4/20 23:23:24 2016 *File Name : cf665c.cpp *Problem:贪心 *Get:贪心大凭借自觉产生,但要使用要尽可能证明其原创 2016-04-21 11:08:17 · 763 阅读 · 0 评论 -
Codeforces Round #364 (Div. 2) E. Connecting Universities 贪心 + dfs
分析强行把这个树,转换为有根树,然后dfs一次,求出以当前节点作为根节点的子树一共包含多少个大学。 然后枚举树上的每一条边,通过这条边把树的节点划分为两部分S和T,S是这条边下端点的子树的点集合,T是全部点减去S的集合。然后这条边对最大路径和的贡献最大是:min{u[S],u[T]}min\{u[S],u[T]\},其中u[S],表示以S集合中有大学的点集的个数,可以根据第一次dfs的结果求得。每原创 2016-07-23 10:41:56 · 354 阅读 · 0 评论 -
SCU2016-01 E题 贪心
/** 简单贪心一下就好了 **/#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#include <string>#include <cmath>#in原创 2016-07-05 21:37:42 · 390 阅读 · 0 评论 -
SCU2016-01 F贪心
Analyse: 因为500x+2y500x + 2y这个公式的巨大偏向性,我们会优先满足时间。 这样遍历整个任务,给任务安排机器。我们维护一个集合,集合里装的是所有还没有用的 比能完成当前任务时间的机器,然后每次在里面选优先级能满足当前任务的最小的任务并从集合中删去就可。Get: 想想法的时候不要先代码实现,先尽量抽象,会有更多思路./**********************jiban原创 2016-07-05 21:58:02 · 292 阅读 · 0 评论 -
SCU2016-02 E 动态贪心
Problem: Analyse: 这是一道颇容易考虑漏的贪心题。 这里有两种策略都是较为优秀的: 1. 两个最小的过去,最小的回来,两个最大的过去,次小的回来。 2. 最小的带最大的过去,最小的回来,最小的带次大的过去,最小的回来。 这种两种策略之后,局面都变成了一个类似最初的样子,陷入一个递归。 我们每次局面开始都去判断这两种策略哪个更好就可以了。 Get: 贪心很容易分析错,原创 2016-07-07 00:07:31 · 228 阅读 · 0 评论 -
hdu5073 贪心 + 公式拆解
分析:我来就大胆猜了一个很有道理的结论,一定是连续的n−kn - k个不变,然后扫一遍计算。很巧的一个贪心。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#include <queue>#include <set>#include <map>#inc原创 2016-09-19 22:54:07 · 324 阅读 · 0 评论 -
poj 2456 Aggressive cows (二分+贪心) (最大化最小值)
@(K ACMer) by 题解工厂题意:给n个数,让你选择其中m个数,让相邻数的最小值最大.(即最大化最小值问题).分析:典型的贪心 + 二分组合.注意这个组合的出现,对于不容易直接得出结果的问题,二分的查找结果,贪心得验证结果是标配!Code:#include <iostream>#include <cstdio>#include <cmath>#include <algorithm>原创 2015-09-15 22:21:44 · 523 阅读 · 0 评论 -
Codeforces 460C Present (贪心 + 二分)
@(K ACMer) by 题解工厂 [TOC]题意:有一排花,你有m次浇花的机会,每次浇花的范围是w,且浇一次,花长高一个单位.问m次浇花之后,最矮的花,高度最大为多少.分析:这题是比较典型的最大化最小值问题,如果直接去求最后的最小最大高度是多少,是决没有一点可行法的. 这类问题的解决办法就是对最小值进行二分 ,对可行性进行贪心, 这里二分的思想很容易理解,主要是说明贪心的正确性.根据二分函原创 2015-09-08 11:43:04 · 838 阅读 · 0 评论 -
GCJ 2008 Round 1A A 排序贪心
题意:给你两个维数相同的向量,它们之中的元素可以任意交换位置,求它们内积的最大值。思路:乍一看此题摸不着什么头脑,只是凭借直觉感觉一个升序一个降序求内积即可。这样的感觉有时是对的,有时是错的,如果实现复杂的话比赛中就不该冒这个险。最好简单的证明一下。 证明:先讨论二维向量的情况对于按升序排列的(x1,x2)(x1, x2)按升序排列的(y1,y2)(y1, y2),显然恰与思路想法相反,其内积减去原创 2015-08-01 09:33:11 · 754 阅读 · 0 评论 -
Coderforces 509B
背景:开始没有仔细想,后来@liu_jc 说简单遂1Y思路:找出最大堆的鹅卵石数为max,最小堆数为min。如果max-min>=k,则成立。 证明:对最大堆编号为:a1,a2,a3~amin-1,amin~amax .对最小堆编号为:b1,b2~bmin. 让a1和b1,a2和b2,......,amin和bmin颜色一样。原创 2015-02-01 14:57:50 · 609 阅读 · 0 评论 -
hdu 1009
背景:贪心吧。看到会长说说说他也退役了,感伤,这几天感冒学dp无力,就来水水贪心。学习:1.逻辑错误,始终还是会有,对数组的处理能力需要加强,别人都是用结构体,而我是用了一个三列的数表来处理问题,看来对结构体还从未用过。2.期间对性价比的排序用了选择排序的思想,看来算法充分理解后会自己变了用才是境界,比如快速排序中用一个key来记录数据而不是多开一个数组是很好的。#includedo原创 2014-11-25 23:30:32 · 609 阅读 · 0 评论 -
HDU 1257 ac了!
是昨天校赛的A题,当时没做原创 2014-11-16 21:39:15 · 582 阅读 · 0 评论 -
hdu 1052 田忌赛马加强
背景:由于前些天做了贪心的题目就准备刷点贪心看看,不过原创 2014-11-19 20:42:45 · 746 阅读 · 0 评论 -
coderforces 507A 贪心简单
背景:比赛时明显小看了第一题的难度,就想的一心ac,结果wa了三次,!!!!!!比赛就乱了!!要稳住,多给时间看题!!!思路:排序从最小的开始依次来减。但是要记录之前的位置,因为最终输出的是位置。我的记录方法是,把未排序之前的数组复制一份为sstr,对str排序之后,想要知道str中某个#include#includeusing namespace std; int main(原创 2015-01-24 16:11:11 · 739 阅读 · 0 评论 -
poj 3617 贪心
背景:第一次没有考虑到相等的情况,wa了,改正后re了几次。。。思路:贪心思想,但是当两边都相等的时候选哪一边才是关键,这是我的处理方法是,继续对2和n-1个字符比较,如果2小就从左边开始,n-1小就从右边开始,如果还是相等就继续比较2和n-2........书上的思想也是类似原理。我的代码:#include#include#includeusing namespace std;原创 2015-04-10 11:23:17 · 622 阅读 · 0 评论 -
poj 3253 哈夫曼树
背景:开始自己想了一个贪心思路,结果是错的!!原创 2015-04-10 17:08:07 · 610 阅读 · 0 评论 -
poj 3069 贪心
背景:1Y,但是思考的时候并没有充分思考好思路再写,而是有点含糊的边写边想,这样不好,一定要思路已经十分明确了再写。思路:从一个没有被覆盖的点开始,在以它为中心半径为r的区域内,至少有一个点标记,那么就选择,距离它最远的点。标记这个点之后,算出下一个没有被标记的点,重复以上操作即可。这里把最后一个数据的后一个数调为INF是解决之后一个数的良好方法。贪心策略往往是十分高效的方法,这需要十分良原创 2015-04-10 15:44:04 · 634 阅读 · 0 评论 -
Google codejam Qualification Round 2015 B 巧妙枚举结果 + 贪心
背景:想了好久只想到用深搜的指数级别枚举办法来过了小数据,大数据自然超时,后来看了解题报告,才过。 思路:当前所有盘子中,煎饼个数最多的盘子里有n个煎饼,i 从 1 … n 枚举分裂之后的煎饼最多盘子里的个数,然后用贪心的方法计算要达到当前状态所需的最少分裂步数 k ,最后用时就是 i + k ,求出所有用时中最小的即可 感悟:这个题的精华之处是所有最终状态最多只有1000种,对于每种最终状态所原创 2015-04-13 21:12:40 · 488 阅读 · 0 评论 -
poj 3253 哈夫曼树
背景:开始自己想了一个贪心思路,结果是错的。其实这个题是哈夫曼树的思想,贪心只是哈夫曼树的证明和构造思想。 哈夫曼树:一种带权最短二叉树(也就是所有叶子节点的权重乘以深度的和最小),在实际中是用来做最高效信息编码的。信息的频率就是权重,一个频率很低的数,它的编码就应该长,树的深度就应该大。实际信息编码会根据信息字符的频率来构建一个哈夫曼树,已达到最高效。本题和哈夫曼树是一个很好的契合,解决本题原创 2015-04-26 09:03:35 · 949 阅读 · 0 评论 -
GCJ 2009 Round2 A 构造贪心策略
题意: 给你一个n∗nn*n的元素只为0或1的矩阵,要把该矩阵通过行交换变为上三角矩阵,且交换方式只能为相邻行交换。问最小的交换步数是多少?思路: 首先这个行的利用价值就是最右边的1位置是多少,直接把行抽象为最右边1的数字即可。注意:这里WA了一发,没有注意数字要初始化为0。无论多么简单,写完之后检查代码且保证逻辑没有一丝错误十分重要! 这个题主要的是构造贪心的法则:题中只需要满足第一行的数字原创 2015-08-01 11:44:42 · 835 阅读 · 0 评论 -
Intel Code Challenge Final Round (Div. 1 + Div. 2, Combined) D. Dense Subsequence 贪心 + RMQ
分析:固定长度为mm的区间不断右移动,只要这个区间内没有一个被选的元素就选择其中一个最小的,利用ST表的RMQ来做到。 这样求出必须要选择的最大的字母的次数,然后比它小的都要选。#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <vector>#include <queue原创 2016-10-09 17:50:37 · 472 阅读 · 0 评论