
贪心
PoPoQQQ
这个作者很懒,什么都没留下…
展开
-
BZOJ 3671 NOI2014 随机数生成器 贪心+暴力
题目大意:。。。。。有点长自己看吧首先既然是排序后的序列字典序最小,那么一定要选尽量小的数字走然后T是1~m*n的序列 所以不存在重复(一开始我居然把这个条件看漏了)好的这题贪心每次选择没有被标记的最小点,然后把左下方和右上方都标记掉(记得标记重复时break,不然就挂了)注意5000*5000的数组开两个int就是极限了 开多了妥妥MLE 所以T数组记得重复利用暴力跑了3原创 2014-09-01 15:40:11 · 2153 阅读 · 0 评论 -
BZOJ 2666 cqoi2012 组装 贪心
题目大意:给定数轴上的m个点,共有n种颜色,要求在数轴上选定一个点,使这个点到每种颜色最近的点的平方和最小初始将所有颜色最左侧的点作为最近点,然后不断选择【当前点与同种颜色下一个点的中点最靠左的点】进行替换,并更新ans理性证明见http://www.cnblogs.com/jianglangcaijin/p/4204478.html下面来个感性证明:这不是显然么- -考虑将组原创 2015-03-30 21:49:23 · 1528 阅读 · 0 评论 -
BZOJ 1110 POI2007 砝码Odw 贪心
题目大意:给定n个砝码和m个背包,保证对于任意两个砝码都有一个是另一个的正整数倍,求最多拿走多少砝码http://hzwer.com/4761.html大概想到了进制拆分但是没想到具体怎么做。。。我还是太弱了。。。#include #include #include #include #define M 100100using namespace std;int n原创 2015-03-24 16:35:31 · 1509 阅读 · 0 评论 -
BZOJ 3721 PA2014 Final Bazarek 贪心
题目大意:给定n个数,多次询问选择k个数使和为奇数的最大和首先将所有数排序对于每个询问,如果最大的k个数之和是奇数,那么答案显然是这k个数的和如果最大的k个数之和是偶数,那么我可以将后k个数中最小的偶数换成前n-k个数中最大的奇数,或者将后k个数中最小的奇数换成前n-k个数中最大的偶数二者取最优即可 无法如此做则输出-1#include #include #includ原创 2014-11-25 16:55:28 · 1823 阅读 · 0 评论 -
BZOJ 4029 HEOI2015 定价 数位贪心
题目大意:定义一个数的荒谬程度为去掉末尾所有00后的数字数量∗2*2(若末尾为55则荒谬程度减掉11),求[l,r][l,r]区间内荒谬程度最小的数字(若多个相同取最小) 从高位往低位贪心即可。 注意500的荒谬程度比100低#include <assert.h>#include <cstdio>#include <cstring>#include <iostream>#include原创 2015-04-29 11:07:08 · 1804 阅读 · 0 评论 -
BZOJ 4027 HEOI2015 兔子与樱花 树形贪心
题目大意:给定一棵有根树,每个点上有一些樱花,现在要求删除一些节点,删除节点的樱花和子节点都会连到父节点上,要求每个节点的樱花数+子节点数不超过mm,求最多删多少个节点这数据范围也只能贪心了吧= = 令fif_i为以节点ii为根的子树中能删除的最多节点(ii节点不删),gig_i为删除最多节点的情况下ii号节点的最小负重 那么首先对于每个节点我们对于所有的子节点为根的子树尽量删,然后考虑如何删除原创 2015-05-05 19:35:03 · 1791 阅读 · 2 评论 -
BZOJ 1124 POI2008 枪战Maf 贪心
题目大意:给定nn个神枪手,每个神枪手瞄准一个人,以一定顺序开枪,问最少和最多死多少人首先考虑最多 对于每个联通块: 如果这个连通块只有一个人,那么这个人自杀,死亡人数为11 如果这个连通块是一个环,那么可以活下来一个人,死亡人数为size−1size-1 否则除了叶节点之外其他人都可以死,死亡人数为size−cnt叶节点size-cnt_{叶节点}接下来考虑最少 首先叶节点一定不能死原创 2015-06-22 14:52:18 · 2113 阅读 · 0 评论 -
BZOJ 1150 CTSC2007 数据备份Backup 堆+贪心
题目大意:给定一个长度为n−1n-1的序列,要求选出kk个不相邻的数使得和最小 费用流显然能跑,而且显然过不去- - 考虑用堆模拟费用流 一个错误的贪心是每次取最小,这样显然过不去样例 我们把【每次取最小】改为【每次选择一个区间取反】,用堆来维护这些区间即可 每次取出最小的区间,然后将两边合并 (比如现在堆里有[1,3][4,4][5,5])这三个区间,我取走了[4,4]并计入答案,那么原创 2015-06-23 10:56:57 · 2097 阅读 · 0 评论 -
codeforces 432E Square Tiling 贪心
题目大意:给定一个n∗mn*m的矩阵,要求用正方形砖块覆盖,使得任意两块同颜色的正方形砖块不相邻且字典序最小枚举每一块砖,如果这个位置为空,就填入字典序最小的砖块,然后将边长一格格拓展 如果当前右侧位置可以填入字典序更小的砖块,就不拓展 否则判断能否拓展并拓展#include <cstdio>#include <cstring>#include <iostream>#include <al原创 2015-05-19 10:56:31 · 1471 阅读 · 0 评论 -
BZOJ 2525 Poi2011 Dynamite 二分答案+树形贪心
题目大意:给定一棵树,有一些点是关键点,要求选择不超过mm个点,使得所有关键点到最近的选择的点距离最大值最小 二分答案,问题转化为: 给定一棵树,有一些点是关键点,要求选择最少的点使得每个关键点到选择的点的距离不超过limitlimit 然后我们贪心DFS一遍 对于以一个节点为根的子树,有三种状态:0.这棵子树中存在一个选择的点,这个选择的点的贡献还能继续向上传递 1.这棵子树中存在一个未原创 2015-06-06 16:44:09 · 2083 阅读 · 0 评论 -
BZOJ 2667 cqoi2012 模拟工厂 贪心
题目大意:现在你有一个工厂,初始生产力为11,每一时刻你可以进行如下操作: 1.将生产力提高1 2.生产一些产品,数量等于当前生产力的数值 现在你有nn个订单,每一份有一个交易时间tt,一个商品数量gg和一个价格mm,可以接或者不接,如果接就要在tt时刻操作之前减少gg的商品数量,然后得到mm的钱 求最大收益跪shanest大爷。。。 由于n≤15n\leq15,爆枚接受哪些订单 每次C原创 2015-07-04 21:19:26 · 2027 阅读 · 3 评论 -
BZOJ 2072 POI2004 MOS 动态规划+贪心
题目大意:过桥问题我们考虑利用时间最小的两个人倒运,把时间大的人依次送过去有两种方式:1.时间最小的人和时间最大的人过去,然后时间最小的人把火把拿回来2.时间最小和第二小的两个人过去,然后时间最小的人把火把拿回来;接着时间最大和第二大的两个人过去,时间第二小的人把火把拿回来为了保证最优 运输应该不外乎这两种形式那么令f[i]表示当前没有过桥的人还剩i个时的最短时间 DP即可原创 2015-03-09 14:38:21 · 1701 阅读 · 0 评论 -
BZOJ 2563 阿狸和桃子的游戏 贪心
题目大意:给定一张无向图,每个点有点权,每条边有边权,两个人轮流选择点,若一条边的两端点被选择则这条边被选择,两人都想自己的得分-对手的得分最大,求最终先手得分-后手得分考虑先手选择每个点对答案的影响一个点如果不选,本身对答案的贡献是-w一个点如果选,本身对答案的贡献是w一条边如果两个端点都不选,对答案的贡献是-c如果两个端点中只选择一个,对答案的贡献是0如果两个端点都选,原创 2015-03-20 18:07:18 · 3093 阅读 · 0 评论 -
BZOJ 3668 NOI2014 起床困难综合症 贪心
题干一堆废话。。题目大意:给定n次操作(与,或,异或),在0~m中选择一个数,使这个数经过n次操作后得到的值最大丰年好大水 AC如土分如铁。。这尼玛根本就是水题好不 枚举选择数字的每一位 分三种情况讨论:1.该位取0时经过n次操作结果取1 这自然是最理想的情况 必须选择02.情况1不满足 该为取1时经过n次操作结果取1 且取1后值不超过m 这样我们也选择13.上两种情况不满原创 2014-09-01 09:25:49 · 4648 阅读 · 1 评论 -
BZOJ 1692 队列变换 贪心+后缀数组
题目大意:给定一个字符串,每次取头或者尾放在新字符串里,求字典序最小的新字符串首先如果两边的字符不一样 那么肯定要选择小的放在新字符串里但如果两边一样 比如CCBACC 肯定从尾取比较优 原因是CCA比CCB要小于是我们把原串反写接在后面变成CCBACC@CCABCC 然后跑一遍后缀数组 每次就能O(1)比较两个子串的大小了时间复杂度O(nlogn)#include#incl原创 2014-11-13 14:50:56 · 2016 阅读 · 0 评论 -
BZOJ 1029 JSOI2007 建筑抢修 贪心+堆
题目大意:n个建筑需要抢修,第i个建筑需要T1时间抢修,必须在T2时间之前抢修完毕,求最多能抢修多少建筑首先我们对T2排序 然后依次修理 但是这样贪心显然是不正确的 比如说这组数据:510 1010 202 212 212 21贪心只能修理前两个,而实际上最多可以修理4个于是我们考虑修正贪心算法比如说这组数据,当我们枚举到3的时候,虽然已经无法修理更多了原创 2014-10-28 16:39:11 · 3120 阅读 · 0 评论 -
BZOJ 2097 Exercise 奶牛健美操 二分答案+树形DP+贪心
题目大意:给定一棵树,可以删掉k条边,求删掉后森林中所有树直径的最大值的最小值最大值最小,典型的二分答案此题我们二分树的直径,每次二分DFS一次,对于每个节点统计出所有子树删边后的dis,排序,贪心删掉最大的,直到最大的两个子树相加不会超过二分的答案为止时间复杂度O(nlog^2n)老子的二分居然写挂了。。。桑不起啊啊啊啊#include#include#include#原创 2014-10-13 20:37:18 · 1776 阅读 · 0 评论 -
BZOJ 2460 BeiJing2011 元素 贪心+高斯消元
题目大意:给定一些元素,每个元素有两个值a和b,现在需要选出一些元素,在不存在a值异或和为0的子集的情况下使b之和最大可以用拟阵证明贪心的正确性(我不会证,同学会)于是我们将b值排序,从大到小插入动态维护线性基即可#include #include #include #include #define M 1010using namespace std;struct ab原创 2015-01-09 18:33:26 · 1926 阅读 · 0 评论 -
BZOJ 1528 POI2005 sam-Toy Cars 堆+贪心
题目大意:有n个玩具,都放在架子上,地板上能放k个,要玩p次玩具,如果不在地板上就要去架子上拿,地板满了要放回去,求最少操作次数贪心思想:每次放回玩具时选择下次玩的时间最靠后的玩具放回去可以用堆来模拟这一贪心过程#include #include #include #include #define M 500500using namespace std;typedef pa原创 2014-12-12 12:44:38 · 2074 阅读 · 1 评论 -
BZOJ 2802 Poi2012 Warehouse Store 堆+贪心
题目大意:有n天,早上进货中午卖,可以选择卖或者不卖,问最多可以卖出多少人首先贪心的思想是如果当前能卖就卖但是这样不一定是最优的比如说我第一天来一个人把所有的库存都买走了 然后后面基本没有补给 后面的人都饿死了因此我们维护一个大根堆来记录我们都卖出了多少份如果有一个人买不到 我们去大根堆里寻找有没有买的比他多的 如果有 把之前的人取消 卖给这个人这样虽然不能增加答案 但是可原创 2014-12-11 20:36:33 · 1317 阅读 · 0 评论 -
BZOJ 2430 Poi2003 Chocolate 贪心
题目大意:给定一个巧克力,怎么切看题目吧我实在写不动了= =首先每条线被切至少一次在此基础上一条线每被切一次就多付出一份代价故每个交叉点上用权值较大的线切权值较小的线比较优说白了就是大的先切然后小的后切 贪心的证明我说不明白了大家意会吧QAQ一天之内写了整整十道题也是够受的了QAQ#include #include #include #include #de原创 2015-02-24 21:31:30 · 1574 阅读 · 0 评论 -
BZOJ 3728 PA2014Final Zarowki 堆+贪心
题目大意:给定n个灯泡和n个房间,每个灯泡有一个功率,每个房间有一个照亮的最小功率,可以换k个灯泡,求照亮所有房间的最小功率将灯泡的功率和房间的最小功率排序,从大到小扫描每个房间对于一个房间,首先将能照亮这个房间的灯泡都加入堆如果堆为空则花掉一次换灯泡的机会换一个功率为这个房间的最小功率的灯泡否则取走功率最小的灯泡照亮这个房间,并将灯泡功率与房间最小功率的差值加入另一个堆结束时原创 2015-03-03 16:58:53 · 1927 阅读 · 0 评论 -
BZOJ 3829 Poi2014 FarmCraft 树形DP+贪心
题目大意:给定一棵树,从1号节点出发对树进行欧拉遍历,每到达一个点这个点就开始装MC,每个点装MC的时间不同,最后回到1号节点装MC,求所有人都能联机的最少时间令f[x]为对第x个节点进行欧拉遍历的时间,g[x]为对第x个节点进行欧拉遍历并完成所有节点的装机的最小时间那么在每个节点以什么顺序遍历每棵子树呢?我们发现装机多出来的时间 即g[x]-f[x]可以用来遍历其它子树 那么显然要从原创 2015-03-04 08:23:14 · 2140 阅读 · 0 评论 -
BZOJ 4723 POI2017 Flappy Bird
题目大意:给定一个愤怒的小鸟,如果当前位置为(x,y)(x,y),按一下之后下一时刻会飞到(x+1,y+1)(x+1,y+1),否则会飞到(x+1,y−1)(x+1,y-1),求走到终点最少要按多少次贪心预处理f[i]f[i]表示第i...ni...n个柱子中a[i]−x[i]a[i]-x[i]的最大值,显然如果我在穿过第i−1i-1个柱子后的某一时刻y−x<=f[i]y-x<=f[i],那么我就G原创 2016-12-12 12:16:43 · 1423 阅读 · 0 评论