贪心
Joey丶sunk
古今成大事者 不惟有超世之才 亦必有坚忍不拔之志
展开
-
UVA - 1346 Songs 简单贪心
要说的就是题意,给定的公式中 s[ i ] 看做 下标 i 就好, 再要说的就是分析下公式就能知道满足要求的方法是: 时间长度 L 短的, 频率 F 高的 往前放,也就是 L / F 越小越往前放,排序检索就好了#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#原创 2017-08-17 09:31:15 · 209 阅读 · 0 评论 -
Codeforces Round #375 (Div. 2) D - Lakes in Berland dfs+贪心
本场详细题解见:https://blog.csdn.net/xiang_6/article/details/83549528题意&思路见上述链接 #include<bits/stdc++.h>using namespace std;#define out fflush(stdout)#define fast ios::sync_with_stdio...原创 2018-10-30 22:19:06 · 113 阅读 · 0 评论 -
Codeforces Round #508 (Div. 2) C. Gambling 贪心
题意:两个人 A,B分别拥有 a[], b[] 两个序列,每个人还分别拥有 ans1,ans2 两个财富值,初始为0;他们做游戏:每一轮A先开始,可以选择从a[] 序列选择一个值放入自己的ans1(然后这个值被去掉),或者去掉B的序列中的某个值,然后轮到B,他也这样做,然后他们每个人都想让自己的ans 减去对方的 ans尽量大;问最后的ans1-ans2 是多少 思路:考虑...原创 2018-09-07 13:43:17 · 278 阅读 · 0 评论 -
HDU-6438 Buy and Resell 贪心+优先队列+原题
题意:给定n天,每天有个价格,可以买一个物品,可以把手中的物品卖掉 思路:codeforces 一个题跟这个题很像,贪心+优先队列:https://blog.csdn.net/xiang_6/article/details/78156338看完那个题,我们只需要解决最少买卖次数就好了;手动模拟队列的实现过程会发现,整个问题就是一些上升序列对价值的转移,上篇中我们将两个新的比...原创 2018-08-25 19:33:18 · 1165 阅读 · 0 评论 -
HDU - 5037 Frog 贪心+初值 2014 ACM/ICPC Asia Regional Beijing Online
题意:在一片河塘中,有只青蛙从0点开始,要跳到m点,这条线上起初有n个荷叶,每次青蛙最大能跳k米现在让你添加一些荷叶,让他能跳到m点,问最大的跳跃次数,注意,青蛙每次采取最优策略(尽量少跳) 思路:青蛙采取最优策略的话就是每次选能跳到的最远点跳,队友存在的荷叶,我们没办法做手脚只有在青蛙没法往前跳,需要我们添加荷叶的时候,我们贪心的选择一些位置,让他多跳一些假如青蛙跳到...原创 2018-08-21 20:53:54 · 169 阅读 · 0 评论 -
UVALive - 7146 Defeat the Enemy 贪心+思路详解
题意:给定我方n个人,敌方m个人,每个人有攻击力a和防御力b,两个人战斗时,某方攻击力大于等于另一方,那么就能把对方杀死,同样也可能被杀死;每个人只能战斗一次现在要我方n个人中选一些人杀死敌方m个人,问我方最大存活人数思路:比较明显的贪心,,下面是推理思路首先只考虑 把对方全部杀死,那么就是我方按照攻击力从大到小排序,敌方按照防御力从大到小排序,这样一一对应看是否能把对方消...原创 2018-08-15 10:21:04 · 559 阅读 · 0 评论 -
Codeforces Round #503 Div. 2 C - Elections 暴力+贪心
题意:给定n个选民,m个政党,然后n行表示每个选民本来所选的政党p和让他选1号政党的花费问:1号政党赢得选举(票数最多)的最小花费是多少 思路:首先我们会往贪心方面想,但是因为涉及到当前选择哪个人不一定是最优的,如样例二,可能选另一个就可以代替之前选的两个而获得胜利;但是我们要是知道1号政党以多少票获得胜利,我们就可以贪心的得到 其最小花费;其实能想到枚举1号政党赢...原创 2018-08-12 09:32:24 · 809 阅读 · 1 评论 -
UVALive - 7147 World Cup 贪心(思路题)
题意:给定n个人,选m个人晋级,只有胜负平三种关系,分别得分A,B,C,大小关系不限定思路:这个题真的考验思路,首先我们要从正常的比赛观念中跳出来,贪心的进行处理首先假设他们按照最后的得分大小排好了顺序,那么我们要求的最大不晋级分数ans1和最小晋级分数ans2就分别是第 m+1 个人和第 m 个人的分数,因为胜负是同时产生和消亡的,就像黑洞周围产生的阴阳粒子,所以我们交换...原创 2018-08-14 17:06:08 · 152 阅读 · 0 评论 -
Codeforces Round #374 (Div. 2) D. Maxim and Array 贪心+优先队列
题意:给定 n 个整数,有 k 次机会可以使任意某个数增加或减少 x问使得最后n个数乘积最小的序列是什么思路:首先要想到序列中可能存在负数负数为负数时:整个序列乘积为负,要是序列乘积更小,我们可以找一个负数-x,也可以找一个正数+x这时候就要考虑找哪个数:假设有m个正数,ans = a1*a2*....*am 如果要选择一个数-x,让这个式子变小,我们暴力每一个数的话...原创 2018-08-09 10:16:35 · 172 阅读 · 0 评论 -
Codeforces Round #513 D. Social Circles 贪心
CF: greedy math *1900; 题意:给定n个人,每个人坐下以后,左边要有l[i]个座位,右边要有r[i]个座位;一个人一张桌子时可以把左右两边看作重合;思路:一开始想了个假算法,首先对于i这个人 l[i] == r[i] 时候,可以直接把他放在单独的一张桌子上,因为思考发现他和别的人一起坐也不会优化答案; 然后按照左右两边大小分成两组,一个是r[i]...原创 2018-11-09 21:11:49 · 203 阅读 · 0 评论 -
Codeforces 1070C - Cloud Computing 思路+线段树+贪心 (2018-2019 ICPC, NEERC)
CF:*2000 题意:有n天,每天需要用k个cpu, 然后给定m个计划,对于每个计划包含 L, R, c, p 表示,从第L天到第R天期间,每天你都可以选用c个cpu,每个cpu的花费为p; 问n天的最小花费;(当某天不能得到k个cpu时,就把能选的全选)思路:首先按暴力的思路选择,肯定是对于某一天 优先选择价格p小的cpu,这样没错,但是复杂度不允许;然后我想到了把m...原创 2018-11-05 15:19:19 · 468 阅读 · 0 评论 -
Codeforces Round #555 (Div. 3) E - Minimum Array 贪心
思路:首先找大于等于n的,最小的,没有的话就找最小的#include <bits/stdc++.h>#include <iostream>using namespace std;typedef long long ll;const int maxn = 2e5 + 7;int n;int a[maxn];multiset<int>...原创 2019-05-01 17:20:48 · 151 阅读 · 0 评论 -
Codeforces Round #555 (Div. 3) C2 - Increasing Subsequence (hard version) 贪心模拟
类似于C1,从两边先选小的,如果一样大的话,那接下来选的只能是某一边连续的一段,这样的话分别从两边开始选,最后看哪个结果最优注意判断是否合法#include <bits/stdc++.h>#include <iostream>using namespace std;typedef long long ll;const int maxn = ...原创 2019-05-01 17:05:53 · 356 阅读 · 0 评论 -
Codeforces Round #555 (Div. 3) C1 - Increasing Subsequence (easy version) 贪心模拟
直接模拟从左右两边分别选的过程先选小的,不会出现一样大的,选的时候判断是否大于已经选过的#include <bits/stdc++.h>#include <iostream>using namespace std;typedef long long ll;const int maxn = 2e5 + 7;int n;int a[maxn];...原创 2019-05-01 17:00:53 · 368 阅读 · 0 评论 -
Codeforces Round #555 (Div. 3) B - Long Number 贪心
为了保证最优,从左边开始遍历,把第一个能交换的开始交换连续的一段#include <bits/stdc++.h>#include <iostream>using namespace std;typedef long long ll;const int maxn = 10 + 7;int n;string s;int a[maxn];void...原创 2019-05-01 16:58:18 · 304 阅读 · 0 评论 -
CodeForces-867C Ordering Pizza 贪心+优先队列
题意:第一行给定n,m;n表示有n个人,m表示一张饼可以分成多少片接下来n行表示n个人的信息,每行输入s,a,b;s表示这个人要吃s片饼,第一种类型的每片获得欢乐值a,第二种类型的每片获得b;问保证他们吃的的大饼的‘’张数‘’最少的情况下,获得的最大欢乐值是多少; 注意“张”和“片”的关系,思路:首先要知道最少需要的大饼张数是多少,这个数量是 所有人需要的饼的数量加和÷每张...原创 2019-04-06 11:36:58 · 221 阅读 · 0 评论 -
牛客练习赛32 A题:Phrase String 贪心
题意:给定v,k 构造一个长度为v的二进制数(二进制的形式),至少包含k个1,并且是回文的,要求值尽量小思路:首先是回文的,所以只考虑一半就行了还有开头必须是1,所以左边一部分的1尽量往后(→)放; #include<bits/stdc++.h> using namespace std;typedef long long ll; const l...原创 2018-12-01 21:00:48 · 188 阅读 · 0 评论 -
Educational Codeforces Round 54 (Rated for Div. 2) A B C D E题解
这些题目挺有意思,起码我都错过,可能这两天精力有点不足,脑子不太够用??? A题链接:http://codeforces.com/contest/1076/problem/A题意:给定一个字符串,最多可以删掉一个字符,使得字典序最小;思路:首先跟原串比较的话,某一个字符大于后面相邻的字符的话,删去这个字符,显然这样字典序就会变小了,我们也知道,如果有多个这样的字符对的话,删掉第一个...原创 2018-11-13 12:37:12 · 234 阅读 · 2 评论 -
Educational Codeforces Round 54 D - Edge Deletion 图+贪心+dijkstra
题意:给定n个点,m条边的无向连通图,定义d[j]为1号结点到j结点的最短距离让你删去一些边,让边数剩余最多为k条,如果删边前后的两个图中d[j]相同的话,那j结点就是good点,给定的边编号1~m,现在让你给出一种删边方案,是的good点尽量多;思路:单原点最短路,我们知道剩下的边数e,最大是min(n-1, k); 其实不用管剩余多少条边,按照dijkstra求最短路的...原创 2018-11-13 12:01:28 · 275 阅读 · 0 评论 -
HDU - 6300 Triangle Partition 贪心
题意:给定3*n个点,构造n个三角形,要求任意两个三角形没有重叠,输出n个三角形的点的标号;不存在三点共线思路:不存在三点共线的话,只要按照x坐标排序后,相邻的三个点一定跟后面点组成的三角形不重叠,所以不用求凸包; #include <iostream>#include <cstdio>#include <cmath>#...原创 2018-07-24 17:28:11 · 151 阅读 · 0 评论 -
蓝翔杯-翻硬币 贪心
思路:找到两个串对应不相同的位置,可以知道,要是想变成一样的,得两个不同的位置同时往中间变换得到,花费是之间的距离可以知道这样的话,相邻的两个位置得到一个花费;#include<bits/stdc++.h>using namespace std;const int maxn = 1e3 + 7;char s[maxn], t[maxn];int main() { s...原创 2018-05-17 21:23:10 · 232 阅读 · 0 评论 -
UVALive - 7464 Robots 贪心+递归
递归处理: 把先把花费时间多的那种往花费时间少的那个上面传,如果传完了 就单独 分别往 base 传和自身传#include #include #include #include #include #include #include #include #include #include #include #include using namespace s原创 2017-10-28 18:31:07 · 258 阅读 · 0 评论 -
CodeForces - 867E Buy Low Sell High 贪心+优先队列
根据题意可以想到 找所有正序的对,先找最小和最大的,本想着 线段树维护来着,,,这里的做法是优先队列保存最小值,遇到大于优先队列堆顶的元素 ans 加上差值,然后这个元素入队两次贪心的做法之所以有他的正确性,就是入队两次的元素,一次相当于本身,另一次相当于传递前一个值找到最大的差值(也就是答案) #include<bits/stdc++.h>using nam...原创 2017-10-03 21:16:51 · 957 阅读 · 3 评论 -
CodeForces - 867C Ordering Pizza 贪心
其实是贪心,开始没看清题意,把 a b 两种披萨分开进行背包。。。。贪心的话就是,先选取 a b 中最有幸福值的那个,然后分别储存差值,最后看分别选取的 a b 两种是不是最少选取的披萨数,不是的话进行调节,看看把 部分a换成b 还是反过来减少的幸福值更少#includeusing namespace std;typedef long long ll;const in原创 2017-10-03 19:22:58 · 655 阅读 · 0 评论 -
POJ - 3659 Cell Phone Network 最小支配集(树的) 贪心算法
给定的是一棵无向树要求他的最小支配集这里用的是贪心的算法,进行树的后序遍历#include#include#include#include#includeusing namespace std;const int maxn = 10000+7, INF = 0x3f3f3f3f;int n, ans;vector a[maxn];bool vis[maxn]原创 2017-09-20 15:50:36 · 572 阅读 · 0 评论 -
HDU - 6205 card card card (贪心)2017 ACM/ICPC Asia Regional Shenyang Online
昨天2017 ACM/ICPC沈阳网络赛的 1012 当时3分钟出思路,写完交上不对,,看不到什么错误,赛后知道 TLE,但是 一样的代码,赛后交上就过了简单说一下思路, d 数组记录花费,贪心从左往右 num += d [ i ] ,保证num 非负,sum 记录卡片数目(a [ i ] ),更新最大卡片数 ans#include #include #incl原创 2017-09-11 22:14:03 · 680 阅读 · 0 评论 -
UVALive - 7752 Free Figurines (Gym - 101173F ) 贪心(套娃嵌套)
要把某一个套娃从某一个中拿出来,往另一个中放的时候,也要把另一个的外围全部拿开这样我们以 a [ ] 为当前套娃的状态,,先扫一遍 a [ ] ,把不合状态的套娃全部拿出来,然后按照给定的状态相互嵌套就是了#include #include #include #include #include #include #include #include #include #in原创 2017-08-31 10:29:34 · 307 阅读 · 0 评论 -
伪原创 Gym - 101201I Postman
贴一个队友写的代码 23333手动滑稽---------------------------------------------------------------其实这题挺水,首先预处理,,使每个点的数目小于他能带的最大的数目 ((因为某个点的数目大于他能带的最大值的话,这个点至少要单独跑 几 趟的剩下的那些 分别从两边贪心处理,每次尽量带满 他能带的 max 值原创 2017-09-23 10:06:32 · 408 阅读 · 0 评论 -
Gym - 101201C Cameras 贪心+伪滑动窗口
算是贪心算法吧首先预处理,存在 ** 的点赋值为 1,其他的为 0 然后用一个 “滑动窗口” 记录左右边界 以及内部的 sum 也就是 **个数#include #include #include #include #include #include #include #include #include #include #include #include原创 2017-09-23 10:02:58 · 348 阅读 · 0 评论 -
HDU - 1003 Max Sum O(n)求最大区间和 贪心
练习 JAVA ==O(n)求最大区间和,算是贪心吧//package first;//import java.math.*;import java.util.*;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in)原创 2017-10-12 19:09:15 · 378 阅读 · 0 评论 -
HDU - 1009 FatMouse' Trade 贪心
为了得到更多的那个东西,需要 J [ i ] / F [ i ] 的值尽量大定义结构体排序就好了,,#include #include #include #include #include #include #include #include #include #include #include #include using namespace s原创 2017-10-25 18:56:16 · 235 阅读 · 0 评论 -
Codeforces Round #480 (Div. 2) C - Posterized 贪心
题意:给定一个序列A,(ai:【0,255】),可以组合其中连续的一些数,这些数个数不能超过m;这些数可以以最小的数作为key问这个序列A对应的字典序最小的 key 序列是啥;思路:贪心的想法,从左到右,对于当前数a[i],如果已经合入某个组,那直接输出其key;否则:为了字典序最小:我们找到它前面(包括它)的第m个数,从这个数往后找是否有一个数还没加入某个组,或者加入的某个组能够包含a[i],那...原创 2018-05-10 07:32:07 · 188 阅读 · 0 评论 -
Codeforces Round #451 (Div. 2) D - Alarm Clock 双指针+贪心
#include#include#include#include#include#include#include#include#include#include#include#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out freopen("out.txt", "w", st原创 2017-12-18 07:24:24 · 214 阅读 · 0 评论 -
SGU - 449 Dendrograms 并查集+贪心构造
题意:比较难理解,直到我看题解之前,都没能得出明确的题意。总结题意后得到: 给出m个集合,每个集合中的元素必须挨着,因为原题说 首先要保证结构清晰,也就是说集合之间不能有交叉的连线;思路:虽然我没能弄清具体的题意,但是也想到了从最下面对集合进行并查集操作,每个集合保证字典序最小即可,从下往上实现并查集操作可以达到结构清晰的目的,不会出现相交的情况,(其实也会有某个元素同时在多个原创 2017-11-27 13:55:52 · 331 阅读 · 0 评论 -
ZOJ - 3956 Course Selection System 贪心-背包思想
题意:题目给定了公式;给定了 n 个 h 和 c思路:我们可以知道的是 要选这个的话,这个 h 要大于 c,(虽然大于c不一定是正数)这样就有个 “贪心策略”了,就是对于一些 c 的和,我们尽量选择使得 h 的和尽量大的一些;因为我写的时候已经知道是背包了,,可能思路上会简单点:一看c的和最大才 5e4,背包的维度就是一维,dp[ i ] 表示选择的c的和为原创 2017-12-03 21:29:51 · 189 阅读 · 0 评论 -
Educational Codeforces Round 33 (Rated for Div. 2) D. Credit Card
题意:看了好久才明白==给定n个数ai,是n天银行卡存钱取钱的变化(正数存钱,负数取钱),当ai = 0 时,查询账户余额,这个人不想在查询的时候看到他的账户余额是负数,所以之前的每一天它可以 另外手动 往里面存钱,问 最少的手动存钱次数,思路:首先,用 now 表示当前银行账户,每次跟 最高额度d 比较,可确定答案是否为 -1;当ai = 0 的时原创 2017-12-02 14:39:37 · 267 阅读 · 0 评论 -
牛客练习赛7 B购物
题意:略思路:贪心,题意换一种理解方式就是:每天要选一个,这一个可以从包括这一天的之前的任意一天选(选过的不能选),再附加考虑 k² 这个条件,每次选花费最小的一个#include#include#include#include#include#include#include#include#include#include#include#原创 2017-12-02 13:01:29 · 239 阅读 · 0 评论 -
Codeforces Round #446 (Div. 2) B Wrath
更新往前击杀最大值,,On#include#include#include#include#include#include#include#include#include#include#include#define PI acos(-1.0)#define in freopen("in.txt", "r", stdin)#define out freopen原创 2017-11-18 11:57:27 · 203 阅读 · 0 评论 -
CodeForces - 620C Pearls in a Row 贪心+set
贪心做法 从前往后扫,遇到出现过的就记录下来,重新往后扫思想:后面留下的串越长,越有可能划分成更多的串ps : 开始看错题意了,以为是 以同样的数划分,那样的话就是出现次数最多的数划分#include#include#include#include#include#include#include#include#include#include#i原创 2017-11-02 17:38:05 · 236 阅读 · 0 评论 -
PAT 甲级 1038 Recover the Smallest Number (30 分) 贪心排序
题意:给定n个字符串,只包含数字,用所有的字符串组成一个大的字符串,要求去掉前导零后字典序最小思路:经典贪心问题,不是简单的按照字典序排序,因为两个字符串长度不同会影响他们组合后的字典序,对于两个字符串s,t, 通过比较st 和 ts 的字典序,就能知道他们顺序了#include<bits/stdc++.h>#include<cstring&...原创 2019-09-03 14:14:29 · 130 阅读 · 0 评论