![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
贪心
pubgoso
这个作者很懒,什么都没留下…
展开
-
hdu6000Wash 贪心
题目链接洗衣和烘干是可以独立考虑的,先计算出n件衣服的最小洗完时间。,然后再让最后洗好的衣服用最快的烘干机 烘干。#pragma GCC optimize(2)#pragma GCC optimize(3)#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N = 1e6 + 10;#define fi first#define se second#define pb push_原创 2020-11-29 11:55:51 · 157 阅读 · 1 评论 -
Educational Codeforces Round 96 (Rated for Div. 2) F. Realistic Gameplay
题目链接思路:dp:dpidp_idpi 表示第i波怪物来之前至少要准备的子弹数量。在第i波怪物来之前,最多有k发子弹,在li,ril_i,r_ili,ri期间最多能换k(ri−li)k ( r_i-l_i)k(ri−li)的子弹。我们倒着枚举每波怪兽,第i波至少需要aia_iai子弹,如果第i波怪物和第i+1波怪物连在一起,那么还需要额外的dpi+1dp_{i+1}dpi+1子弹来使得第i+1波怪物也能全打完。中间判一下-1的情况。如果有解的话:最后在算的时候正着枚举,初始有k原创 2020-10-12 20:57:33 · 282 阅读 · 0 评论 -
Grakn Forces 2020 E.Avoid Rainbow Cycles
思路:考虑环上所有边不同色,即,每种颜色任意出一条边,构成的图都是无环的。我们将每个集合的点连向一个集合源点,共m个集合源点,每个点都往包含该店的集合源点连边,那么这就是一个并查集的过程,可以很轻松的知道什么时候会产生环,那么在这之前将点都排好序,就可以贪心的删除最优点了。#pragma GCC optimize(2)#pragma GCC optimize(3)#include <bits/stdc++.h>using namespace std;typedef long lon原创 2020-10-04 15:30:13 · 115 阅读 · 0 评论 -
Codeforces Round #673 (Div. 2) E. XOR Inverse
思路:考虑按这个数组建立01字典树,那么在插入每个数的时候,逆序对的产生会发生在:这一位是0,且1的那个兄弟节点有已经插入的数 的时候。那么我们可以在建树的时候算出逆序对的个数。建完树之后,我们要贪心的选择x的每个二进制位选0还是1,因为对于字典树来说,每个节点的两个子树的逆序对是不会被祖先节点的0/1影响的,那么我们先找到每一位放0/1的时候逆序对的个数。这样就能贪心的找到每一位放什么更优了,期间逆序对的个数也可以顺便算出来。#pragma GCC optimize(2)#pragma GCC原创 2020-10-03 13:32:22 · 218 阅读 · 0 评论 -
Benelux Algorithm Programming Contest 2019 A. Appeal to the Audience
思路:显然,每个人至少上场一次。一个 显然 的性质,挂在同一个节点上的所有叶子,只能有一个叶子能额外上场。我们需要让能力大的人上场次数最多。那么我们在dfs的时候 需要让出场次数最多的叶子接着出场。然后从大到小分配给按能力从大到小排序的球员。#include <bits/stdc++.h>using namespace std;typedef long long LL;...原创 2020-03-22 15:52:47 · 302 阅读 · 0 评论 -
Panasonic Programming Contest 2020 E - Three Substrings
思路:枚举三个串的相对位置,check一下合法性,取一个最小答案。每个合法的情况的答案计算:统计一下A串左右各有多长即可。#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N = 2e5 + 10;#define fi first#define se second#def...原创 2020-03-17 16:37:43 · 171 阅读 · 0 评论 -
Educational Codeforces Round 82 (Rated for Div. 2) D. Fill The Bag
题目链接大意:给你一些2的幂次数,问你最少分解几次可以用一些2的幂次数得到n。分解指的是:2x−>2∗2x−1,x≥02^x->2*2^{x-1},x\geq02x−>2∗2x−1,x≥0思路:把n按二进制拆分,从小到大枚举每一位1:先看低位能不能凑齐,否则从高位拆。细节见代码:(写的比较复杂,理解是很好理解的)#include <bits/stdc++.h>...原创 2020-02-17 12:20:28 · 320 阅读 · 0 评论 -
Codeforces Round #561 (Div. 2) D. Cute Sequences(数学+贪心)
题目链接题目大意:思路:构造一个这样的序列。特判一下答案长度在1,2的情况。我们假设有解,且长度为kkk,那么显然我们可以得到一个等式:1.设bbb数组为每次加的值,b1=0b_1=0b1=02.∑i=1k−12k−i−1∗bi+bn+A∗2k−2=B\sum_{i=1}^{k-1}2^{k-i-1}*b_i+b_n+A*2^{k-2}=B∑i=1k−12k−i−1∗bi+bn...原创 2019-12-27 16:44:19 · 238 阅读 · 0 评论 -
2019-2020 ICPC, NERC, Southern and Volga Russian Regional Contest J. The Parade(二分+贪心)
题目链接大意:给你一个组士兵,告诉你身高iii的人数aia_iai,让你放在kkk行,使得每行人数相同且每行中士兵身高差不超过111,问你最多能放多少士兵满足条件。思路:二分每行人数。证明:如果xxx满足的话,显然可以把每行都去掉相同的人数使得[1,x][1,x][1,x]都满足。遍历nnn个人,先把上一个身高的士兵没用完的看能不能和当前身高的放满一行,再放当前身高的。如果最后放的行数比...原创 2019-12-19 20:20:47 · 290 阅读 · 0 评论 -
2019-2020 ICPC, NERC, Northern Eurasia Finals J. Just Arrange the Icons(贪心+数学)
题目链接大意:给你一个序列,表示所有物品的种类,让你用最少的箱子装下所有物品,大小任意但需满足:箱子中必须只能装一种数,且必须装满活着差一个装满。 物品的大小都为1。思路:显然,我们要枚举一些大小来获得答案,那么我们用一个集合和储存合法答案,然后check所有的答案来获得一个符合所有物品的箱子大小。初始的集合显然要从出现最少的种类获得。主要的地方就是check是否合法了。//p[1] ...原创 2019-12-19 15:43:13 · 548 阅读 · 0 评论 -
Codeforces Round #601 (Div. 1) A. Feeding Chicken(贪心+构造)
题目链接大意:给你一个矩形,让你把矩形分成k个联通块,联通块内的R数的最大最小值相差最小,输出构造方案。思路:蛇形填数的方式填即可。#include <bits/stdc++.h>using namespace std;typedef long long LL;const int N = 1e2 + 10;#define fi first#define se seco...原创 2019-12-19 15:22:34 · 182 阅读 · 0 评论 -
Codeforces Round #363 (Div. 2) D. Fix a Tree(greedy+dsu)
题目链接大意:给你一个序列,让你改动最少的元素使得可以构成一个有根树。a1,a2.....ana_1,a_2.....a_na1,a2.....an表示iii节点的父亲节点,有且只有一个节点i=aii=a_ii=ai.输出改动次数和改动后的序列。思路:如果开始构不成树的话,必然存在环,同时也可能是有多个联通块,我们要做的就是把环去掉,把所有的联通块连在一起。我们由于要保证改动次数...原创 2019-11-05 13:43:22 · 138 阅读 · 0 评论 -
2019-2020 ICPC, Asia Jakarta Regional Contest E. Songwriter(贪心)
题目链接大意:给你一个序列aaa,让你构造序列bbb满足以下条件bi>bi+1,if(ai>ai+1)b_i>b_{i+1},if(a_i>a_{i+1})bi>bi+1,if(ai>ai+1)bi<bi+1,if(ai<ai+1)b_i<b_{i+1},if(a_i<a_{i+1})bi<bi+1,if(ai...原创 2019-11-04 15:06:38 · 326 阅读 · 0 评论 -
CF457B. Distributed Join
题目链接大意:有两个数组a,b,你可以把任何一个数组的任何一个位置的元素复制到任何一个数组的任何一个位置,你需要使得两个数组中的任意两个位置(分别来自两个数组)都存在于一个相同的位置,复制的代价是元素值,问最小代价?思路:显然我们有两种策略:1.把一些位置都复制到一个位置上,那么这些位置就都满足2.对于一个数组的一个位置来说,每次选择把自己复制到另一个数组的某个位置,或者把另一个数组的某个...原创 2019-09-26 18:54:53 · 285 阅读 · 0 评论 -
Codeforces Round #450 (Div. 2) C. Remove Extra One
题目链接题意:让你去掉一个数,使得剩下的数的record最多,当1≤j&lt;i的aj&lt;ai1 \leq j&lt; i的a_j&lt;a_i1≤j<i的aj<ai时aia_iai为recordrecordrecord数。解法:遍历数组每个数,记录最大和次大值,用cntcntcnt数组记录,移除某个数后造成的recordrecordrec...原创 2019-03-11 18:55:32 · 157 阅读 · 0 评论 -
Codeforces Round #449 (Div. 2) D. Ithea Plays With Chtholly
题目链接交互题。题意:给你三个数n,m,k.让你完成至多m次互动,每次给你一个q,让你从n个位置选一个位置放这个数,覆盖已经放过的数。让你再m次使得n个位置的数不递减,达到直接退出。解法:暴力,如果q小于c/2的话,从前往后找,若当前位置没有数或者比q大的话,就直接放再这个位置上,大于c/2的话就从后往前找,若当前位置没有数或者比q小的话就直接放。如果每个位置都有数的话说明放完了。#in...原创 2019-03-11 21:03:10 · 113 阅读 · 0 评论 -
Codeforces Round #545 (Div. 2) C. Skyscrapers 离散化+贪心
题目链接给你一个n∗m的矩阵res,让你输出一个n∗m的矩阵a,这个矩阵满足:给你一个n*m的矩阵res,让你输出一个n*m的矩阵a,这个矩阵满足:给你一个n∗m的矩阵res,让你输出一个n∗m的矩阵a,这个矩阵满足:ai,j代表第i行第j列的元素,通过减小res之后,使得第i行,第j列的所有元素的最大值a_{i,j}代表第i行第j列的元素,通过减小res之后,使得第i行,第j列的所有元素的最...原创 2019-03-12 11:33:30 · 229 阅读 · 0 评论 -
Codeforces Round #501 (Div. 3) D. Walking Between Houses
题目链接题意:给你三个数n,k,sn,k,sn,k,s,让你构造一个长度为k的数列,使得相邻两项差值的绝对值之和为sss,∑i=1na[i]−a[i−1],a[0]=1\sum_{i=1}^na[i]-a[i-1],a[0]=1∑i=1na[i]−a[i−1],a[0]=1。思路:遍历每一步,找到当前能走的步数的最大可能,然后走就好了。写这个博客是因为看cf的时候,有个远古题没补。。好像...原创 2019-03-19 13:43:13 · 74 阅读 · 0 评论 -
codeforces508E. Arthur and Brackets(贪心)
题目链接大意:给你n个区间,第iii个区间[li,ri][l_i,r_i][li,ri]表示和第iii个左括号相匹配的右括号和这个左括号距离的范围。让你输出一种合法的序列。思路:对于每一个右括号,和他相匹配的左括号肯定是离得最近的左括号。那么我们用栈进行模拟。对每个左括号先压入栈中,然后每次讨论栈顶元素,看是否可以放右括号,即栈顶元素的位置与放置右括号的位置满足这个左括号的区间要求。如果已...原创 2019-05-05 14:01:11 · 129 阅读 · 0 评论 -
hdu6592 Beauty Of Unimodal Sequence(树状数组+贪心)
题目链接大意:给你一个数组,让你求出最长的 字典序最大和最小的(先升后降)单峰子序列思路:考虑dpL[i][0]表示a[i]一定取,序列a[1..i]的最长上升子序列长度。L[i][0]表示 a[i]一定取,序列a[1..i]的最长上升子序列长度。L[i][0]表示a[i]一定取,序列a[1..i]的最长上升子序列长度。L[i][1]表示a[i]一定取,序列a[1..i]的最长单峰子序列长...原创 2019-08-03 11:14:47 · 450 阅读 · 0 评论 -
hdu6586 String(贪心)
题目链接大意:给你一个字符串,让你找出长度为k的子序列满足每个字符出现次数的区间满足所有限制。思路:先倒着处理一遍字符串,然后贪心选k次,每次从a−za-za−z判断是否能选即可。细节处理一下即可:#include<bits/stdc++.h>#define LL long long#define fi first#define se second#define mp...原创 2019-07-22 21:34:25 · 190 阅读 · 0 评论 -
AtCoder Beginner Contest 138 E - Strings of Impurity(序列自动机)
题目链接大意:给你两个字符串a,b.a是可以无限复制的,现在让你找到一个长度使得这个长度的a串存在一个b的子序列。思路:如果a字符串包含所有的b中字符,那么必然有解。我们先跑一个a的序列自动机出来。然后每次贪心的匹配b串的字符,如果需要加上a串就加上,否则跳到下一个匹配的位置即可。#include<bits/stdc++.h> #define LL long long#de...原创 2019-08-19 18:04:00 · 268 阅读 · 0 评论 -
Codeforces Round #579 (Div. 3) D2. Remove the Substring (hard version)(序列自动机+贪心)
题目链接大意:给你两个字符串a,ba,ba,b,让你在a中删除一个子串,使得b仍然是新a串的一个子序列思路:我们用a正着跑一下序列自动机,然后倒着跑一次序列自动机。然后我们思考一下,假设我们删除的子串位于[l,r][l,r][l,r]这个区间,那么子序列如果分成了两部分的话,那么一部分的子序列就在[1,l)[1,l)[1,l),一部分在(r,length](r,length](r,length...原创 2019-08-17 10:43:11 · 144 阅读 · 0 评论 -
hdu6709 Fishing Master(思维+贪心)
题目链接大意:给你n条鱼每条鱼需要煮的时间,和抓一条鱼的时间k,你每次只能抓一条鱼,煮一条鱼,问你最少多久煮完所有的鱼。思路:显然我们必须花k的时间抓第一条鱼,而且煮鱼的时间是不能减少的,问题就是我们需要浪费多长时间,那么如果煮鱼的时间可以抓完所有的鱼,那么我们就不需要浪费时间,煮鱼时间内我们可以抓∑aik\sum\frac{a_i}{k}∑kai如果≥n−1\geq n-1≥n−1...原创 2019-08-27 17:38:44 · 528 阅读 · 0 评论 -
hdu6655 Just Repeat(贪心)
题目链接大意:两个人玩游戏,每回合一方可以放另一方没有放过的卡,谁最后没卡放谁输思路:每回合,出卡的人肯定要出场上最多的卡,这样可以使自己尽量多或者别人尽量少细节见代码:#include<bits/stdc++.h>#define LL unsigned long long#define fi first#define se second#define mp make...原创 2019-08-27 18:29:52 · 182 阅读 · 0 评论 -
Codeforces Round #494 (Div. 3) D. Coins and Queries(贪心
题目链接题目大意:给你n个物品,第iii个物品价值aia_iai,询问q次,问你能不能凑出价值为qiq_iqi的物品。小贪心吧。从大到小找,能拿就拿就行了。 #include<bits/stdc++.h>#define LL long long#define fi first#define se second#define mp make_pair#define ...原创 2019-03-01 15:40:17 · 133 阅读 · 0 评论