
杂七杂八—贪心
Ezereal
这个作者很懒,什么都没留下…
展开
-
POJ 3253 Fence Repair
POJ 3253题目的大致意思为:有一块长木板,要经过n-1次切割将其切成n块FJ想要的木板,对于每块木板,没切割一次,将会消耗和这条木板长度值相等的金钱,问最少需要多少钱,可将木板切成自己想要的n块。题解:由题目易知:开销合计应该是木板长度乘以节点深度(看了一张将切木板过程描述为树的图会很清晰),最短板与次短板为兄弟,由此可以慢慢将最短板和次短板合成,插入数组,直到剩下最后一个元素,原创 2015-08-15 16:07:04 · 464 阅读 · 0 评论 -
Codeforces Round #353 (Div. 2)E. Trains and Statistic(ST表+贪心)
题意:有n个车站,每个车站有一个可达区间[i+1,ai],问所有车站的最小换站距离之和。分析:设i为起点,k为[i+1,a[i]]中a[k]最大的车站编号,则对于任意j>ai,选择从k换站一定是最好的。#include #include #include #include #include #include #include #include #include #原创 2016-10-03 19:39:45 · 343 阅读 · 0 评论 -
HDU 5903 - Square Distance (贪心+dp)
题意: 给一个字符串t ,求与这个序列刚好有m个位置字符不同的由两个相同的串拼接起来的字符串 s, 要求字典序最小的答案 分析: 把字符串折半,分成0 - n/2-1 和 n/2 - n-1 dp[i][j] 表示 第i位及之后的总代价为j可不可行 从第 n/2-1 位推回第 0 位, 若dp[0][m] = 1,则存在转载 2016-10-01 14:32:04 · 408 阅读 · 0 评论 -
Wunder Fund Round 2016 D. Hamiltonian Spanning Tree(贪心+dp)★ ★ ★
转载自:http://blog.youkuaiyun.com/lwt36/article/details/50614467题意:N≤2×105个点的完全图,边权为y 现给定其中N−1条边,改变其权值为x,保证这个N−1条边形成树 试求出一条任意起点权值最小的哈密顿路分析:首先对于x>y的情况,我们总有可以走不是树边的办法,除了星形图必须要走一条树边 构造转载 2016-08-26 19:49:06 · 543 阅读 · 0 评论 -
Codeforces Round #339 (Div. 2) D.Skills(贪心)
转载自:http://dirtytao.com/codeforces-round-339-div-2/题意:一共n个技能,最大等级都为A,当前等级已给出。现在有m个技能点,需要通过这些技能点使“战斗力”最大化战斗力=满级技能数Cf + 最低技能等级Cm,输出最大化的战斗力和对应的技能等级。思路:先将所有技能等级和位置都记录下来,按照等级从小到达进行排序,然后求出前缀转载 2016-08-25 21:34:45 · 365 阅读 · 0 评论 -
CROC 2016 - Elimination Round (Rated Unofficial Edition) E. Intellectual Inquiry 贪心 构造 dp
题意现在给你n,k和长度为m的串你需要构造一个长度为n+m的串,使得其中不同的子序列最多,输出数量。题解:构造题假设我们构造出来了,我们怎么去统计呢?dp[i]表示以i结尾的不同子序列数量,显然dp[i]=sigma(dp[j])+1,i!=j观察可以知道其实dp[i]=前面所有不同子串数量-以i结尾的子串统计知道了,我们怎么去构造呢?转载 2016-09-12 12:16:18 · 404 阅读 · 0 评论 -
uva 11134 Fabled Roo
题意:n*n的棋盘上放n辆车,任意两辆不互相攻击,并且第i俩在给定的矩形内题解:用贪心做,每次尽量放左边的坐标,如果是纵坐标则尽量放下方的坐标,然后不断进行更新操作即可。#include#include#include#include#includeusing namespace std;const int maxn=50001;struct point{ int原创 2015-09-23 10:21:16 · 349 阅读 · 0 评论 -
POJ 1065 Wooden Sticks
题意:我们要处理一些木棍,第一根的时间是1分钟,另外的,在长度为l,重为w的木棍后面的那根的长度为l’, 重量w’,只要l 并且w ,就不需要时间,否则需要1分钟,求如何安排处理木棍的顺序,才能使花的时间最少。题解:贪心,首先按照长度重量从小到大排序一遍,然后做如下操作:选取当前没有被标记的最小的木棍,记录下它的长度和重量为x,y,然后向后处理,满足长度重量均大的做个标记,更新x,y,原创 2015-08-22 13:56:56 · 363 阅读 · 0 评论 -
POJ 2431 Expedition
题目大意:有n个加油站,每个加油站的加油的油量有限,距离终点都有一个距离。一个卡车的油箱无限,没走一个单元要消耗一单元的油,问卡车到达终点的最少加多少次油。题解:可以认为,在到达加油站时,就获得一次在之后任何时候都可以加Bi单位汽油的权利。由此,可以利用优先队列,放置经过的加油站可加的Bi单位汽油,需要时取出队头元素即可完成贪心贴一份别人的代码。。。原创 2015-08-15 16:47:01 · 432 阅读 · 0 评论 -
Codeforces Round 374 (Div 2)D Maxim and Array 【贪心】
【题意】n个数,我们可以做k次操作,每次选定一个数,+x或-x,在这种条件下,让你求出怎么操作,可以使得乘积最小【分析】显然,如果负数个数为奇数,我们只需要使得所有数符号不变的条件下,绝对值尽可能大(从绝对值较小者开始递增)如果负数个数为偶数,我们要先使得一个绝对值最小的数变号(非负->负 或 负->非负),然后再做上面的操作#include#include#inc转载 2016-10-18 12:44:56 · 507 阅读 · 0 评论