
贪心
mis_deer
Make_myself.
展开
-
[POJ 2376] Cleaning Shifts (区间贪心)
POJ - 2376 给定一个区间,要求用最少的区间将其覆盖典型的区间贪心问题 首先将区间按左端点排序,然后考虑覆盖区间最左未覆盖位置 选择能覆盖此点,且右端点最靠右的区间覆盖它 要注意特判是否有合法解,如果途中无法覆盖某点, 或者所有区间都用完了也不能覆盖完即无解#pragma comment(linker, "/STACK:102400000,102400000")#includ原创 2016-05-26 18:26:29 · 231 阅读 · 0 评论 -
[HDU 5821] Ball (贪心)
HDU - 5821 给定一列球,每种球有一个颜色,同一颜色的球无区别 每次选择一个区间,任意排列其中的球 问是否能从初始的排列变成给定的一个排列首先有一个很重要的性质,就是同种颜色的球 最终排列的相对顺序是不变的 也就是说,颜色为 1的第一个球,最后还是在同类球的第一个 预处理出每个球在最终排列上的位置,然后对于每次操作 尽量让最终排列靠前的在区间的前面 即按最终位置原创 2016-08-11 19:25:04 · 464 阅读 · 0 评论 -
[Codeforces 460D] Little Victor and Set (构造)
Codeforces - 460D 从区间 [l,r][l,r]内选出最多 kk个数,使得他们的异或和最小YY一下发现,如果一个偶数 2x2x 和 2x+12x+1 异或,可以得到 1,挺小的 如果2x2x、2x+12x+1、2x+22x+2、2x+32x+3异或就得到了 0,这意味这 k≥4k\ge 4的时候 都只需取这样的 4个数,就能得到一个最小的 0 所以只需考虑 k<4k<4的原创 2016-08-23 10:16:47 · 278 阅读 · 0 评论 -
[HDU 5802] Windows 10 (贪心乱搞+加减凑数)
HDU - 5802 给定一个数 PP,可以对 PP进行三种操作 停顿一次,给这个数 +1,-x 其中减法操作,如果上次操作为 -x,那么这次减的数就为 2x 如果上次操作为加或者停顿,那么这次就减去 1 其中 PP最小为 0, 问最少几次能把 PP变成 QQ贪心XJB乱搞 如果 P≤QP\le Q,直接不停地 +1即可 如果 P>QP >Q,那么先不断地减,直到再原创 2016-08-05 11:40:21 · 340 阅读 · 0 评论 -
[SCU 4514] Simple dp (XJBLG法)
SCU - 4514 给定 N个点,每个点的权值表示以此点为根的子树中节点的个数 每个非叶子节点至少有两个儿子,问给定的 N个点能否组成满足条件的树这题我是贪心构造,虽然正确性无法保证 但由于N比较小,最多24,所以难以构造数据把我卡掉直观感觉权值大的点在树上的位置尽量靠上 先将点从小到大排序,然后从大到小选择根 然后在小于它的为标记的点中选择它的儿子, 保证儿子的权值尽可能大,原创 2016-05-23 13:29:21 · 571 阅读 · 0 评论 -
[POJ 1201] Intervals (区间贪心选点)
POJ - 1201 有数轴上的若干个区间,要求从数轴上选最少的点, 使得第 i个区间内至少有 c_i个点对区间右端点排序,可以发现尽量选右边的点比较优 然后用树状数组维护一下区间内点的数量, 如果未达到要求,则从右端点开始向左选择未选择的数 由于选的数必然是连续的,所以可以记录一下某个选区的左端点位置 当碰到上一个选区的右端点时,直接跳过时间复杂度 O(N*log(N))#pr原创 2016-05-21 21:37:03 · 444 阅读 · 0 评论 -
[POJ 1862] Stripies (贪心)
POJ - 1862 有若干个生物,有自己的质量,两个生物碰撞后, 生成一个新的生物质量为 2*sqrt(m_1*m_2)贪心策略是尽可能地让大的生物先碰撞 这样较大的数可以被多次开方 由于 N比较小,生成的新生物冒泡排序一下就好了#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#incl原创 2016-05-26 19:09:09 · 476 阅读 · 0 评论 -
[POJ 3040] Allowance (贪心)
POJ - 3040 FJ手中有若干面值的货币,小面值的货币能被大面值的整除 每周他要给奶牛发不少于 C的工资,问最多能发几周首先大于 C的面值都先发掉 然后优先发剩下的大面额的货币,当超过时 将最后一个大面额的用尽可能小的货币代替#pragma comment(linker, "/STACK:102400000,102400000")#include <cstdio>#incl原创 2016-05-26 19:05:35 · 298 阅读 · 0 评论 -
[POJ 3190] Stall Reservations (区间贪心)
POJ - 3190 给定若干个区间,问至少要分成几组 使得同组的区间互不重叠典型的区间贪心问题 贪心的策略就是对左端点排序,然后依次选择安排 记录一下每个隔间最右端点的位置,然后用最小堆维护一下 当前区间尽可能地放到最右点最小的组里 如果这组依旧放不进去,就没有隔间能放得进去了 所以就要为其申请一个新的隔间 否则就把它安排到这个隔间里,并且更新此隔间最右端点#pragma原创 2016-05-26 18:37:37 · 296 阅读 · 0 评论 -
[POJ 1328] Radar Installation (区间贪心)
POJ - 1328 给定若干个 x轴上方的点,要求最少的圆,使得每个点都被圆覆盖 其中圆心在 x轴上,半径为 D有一个很直接的贪心思路,就是先考虑最左边未覆盖的点 在覆盖它的情况下,尽量把圆向左移。 这个做法是错误的,因为圆并不是矩形,例如以下数据 Input: 2 3 0 0 1 3 Output: 1正确的做法是预处理出覆盖每个点的圆心的范围原创 2016-05-26 18:28:53 · 236 阅读 · 0 评论 -
[HDU 5881] Tea (贪心)
HDU - 5881 有一壶水和两个杯子,每次只能从壶里往杯子里倒水 杯子中的水量是可见的,壶中的水量是不可见的 但是可以知道壶里的水倒完了没有 开始壶中的水量在 [L,R][L,R] 中,要求将水到入杯中 并且最后壶中的水量不超过 1,两个杯子的水量差不超过 1贪心,由于我不知道壶中有多少水,但我知道下限 于是先向一个杯子中倒入 L−12+1\frac {L-1}原创 2016-09-18 01:15:43 · 1360 阅读 · 1 评论