
贪心
Rem_Inory
这个作者很懒,什么都没留下…
展开
-
【题解】洛谷 P1190 接水问题(贪心 模拟)
这个题思路还是很好想的。对于当前m个水龙头的所有人,找到其接水时间最短的那一个,答案+=那个时间,然后将m个水龙头前所有人的时间减去那个时间,将下一个接水的那个人放到那个位置 重复上述操作。注意需要n-m次,因为到了n-m+1次时就没有人等待接水了,这时我们应当给答案加上在接水的人当中时间最长的值。我的代码略显复杂。。不过思路还是比较明显的。 #include<cstdio>...原创 2018-07-23 21:45:08 · 629 阅读 · 0 评论 -
【题解】洛谷 P1199 三国游戏(贪心)
这道题给我的第一感觉就是贪心,选出每一行的最大默契度的那个武将,电脑肯定会选择和那个默契度匹配的另一个武将,这时候我们能获得的最大默契度就是该行次大默契度的武将,对于每一行的次大默契度比较出最高的,就是能获胜的最大默契度。注意我们一定能战胜电脑,因为电脑是按照我们的策略办事,能获得的最大默契度也就是次大的,但次大的已经被我们选了,所以不需要判断能不能获胜。#include<cstdio...原创 2018-07-23 21:47:35 · 380 阅读 · 0 评论 -
【题解】洛谷P1233 木棍加工(贪心)
这个题给的标签是dp,然而有很简单的贪心策略可以解决,类似导弹拦截问题。首先结构体排序长度,然后求其最长不上升子序列的个数就可以了。遍历整个数组,如果没被访问过答案就+1,设置序列最小值为当前的宽度,然后从i+1到n循环,如果比它小并且没被访问过,就给其打上标记,并将最小值下放,最后输出答案即可。#include<cstdio>#include<algorithm&g...原创 2018-07-17 20:49:05 · 563 阅读 · 1 评论 -
【题解】洛谷P2279 消防局的设立(dfs/贪心)
这道题虽然在洛谷上归类为动态规划(树形dp),然而思考后我们可以用贪心来解决这个问题。由于我们得到的是一个树形结构,所以我们可以模拟出这么一棵树来,然后通过dfs求出树每一个叶子结点的深度(根节点深度最小为1)。注意用dfs求深度要记录下结点的父亲结点,后面有用。因为消防局可以扑灭和它所在城市距离为2的城市的火灾,所以我们贪心,将求出的最深的节点找到,然后通过fa数组寻找其爷爷结点,并将其标记...原创 2018-07-13 22:13:26 · 389 阅读 · 0 评论 -
【题解】NOIP2012 提高组day1 T2 国王游戏(贪心 高精)
下面给出贪心做法的证明: left rightk x yp1 x1 y1 或 针对这种情况 我们得到ans1=max(x/y1, x*x1/y2)p2 x2 y2 left rightk x yp...原创 2018-07-14 21:13:28 · 323 阅读 · 0 评论 -
【题解】洛谷P1281 书的复制(dp)
https://www.luogu.org/blog/cccx2016/solution-p1281动态规划+贪心1、f[i][j]存的是前i本书分给第j个人,记录前缀和,初始化f[i][1]数组。2、三重循环更新f数组,k代表最后一个人拿第一本书的编号,前后比较最大值与之前答案最小值更新f数组。3、输出答案。使用贪心,因为要求前面的人尽量少抄写,所以我们可以记录读入数据之和来更新...原创 2018-08-10 14:15:22 · 460 阅读 · 0 评论 -
【题解】洛谷P1967 货车运输(最大生成树 倍增)
前排提醒,对于倍增数组可以开大。。但千万不能开小,否则结果一定不对。。在这里卡了2h。。。可以发现有一些权值较小的边是不会被走过的。正如样例中的第三条边,就算有其他的很多条边,这条边无论如何也是不会被走过的。于是我们想到了可以将图中这样的边去掉,按照这个思路我们便想到了构造最大生成树,将其余的边去除。得到了这样一个树之后,我们便考虑如何求出两个节点之间最小边权的最大值(即为题中的最大载重)...原创 2018-08-08 20:18:46 · 323 阅读 · 0 评论 -
【题解】洛谷P2678 跳石头(二分)
1-1e9二分答案,设其为最短距离。判断如果该距离可以就向上二分(单调递增,求最大值),注意判断mid+1可以避免边界问题。判断函数统计移走石头个数,如果相邻石头之间距离比要的最短距离还小就移走。移走石头个数小于M就返回true#include<cstdio>#include<iostream>#include<algorithm>using n...原创 2018-09-16 10:06:50 · 546 阅读 · 0 评论 -
【题解】洛谷P2354 [NOI2014] 随机数生成器(贪心 模拟)
题面很长 但这道题最大的难度在于贪心和卡常前面一大堆随机数怎么搞出来完全可以直接模拟,注意该long long该取模的地方要做到。然后我们就到了字典序最小的那一部分。这里我们可以设两个数组L[x]与R[x],代表第x行最左边能取第几列、最右边能取第几列。初始化为1和m。然后我们从小到大枚举矩阵里的数,如果这个数所在的列满足它在所在的行内的L[x]到R[x]区间范围内,那么这个数就可以被选择,然...原创 2018-10-14 11:08:53 · 409 阅读 · 0 评论