贪心
SC.ldxcaicai
我很菜=_=
展开
-
LOJ#3095. 「SNOI2019」字符串(for循环)
传送门很显然可以把颜色相同的连续段压起来,然后O(n)O(n)O(n)贪个心。代码:#include<bits/stdc++.h>#define ri register intusing namespace std;const int N=1e6+5;char s[N];int n,sig=0,ct[N],frt=0,bck,ans[N];int main(){ #...原创 2019-08-21 21:47:14 · 165 阅读 · 0 评论 -
2018.11.07 NOIP模拟 分糖果(贪心)
传送门考虑 n = 2 时的情况:假定两个人分别为(a, b),(c, d),则当且仅当min(a,d) ≤ min(b,c)时,把(a, b)放在前面更优,否则把(c, d)放在前面更优然后把n = 2 的结论进行扩展。我们定义第 i 个小朋友比第 j 个小朋友小,当且仅当 min(ai,bj) <min(aj,bi),以这个规则进行排序,时间复杂度 O(nlogn)。这样得到的新队...原创 2018-11-07 19:18:28 · 369 阅读 · 0 评论 -
2018.11.01 bzoj4325: NOIP2015 斗地主(贪心+搜索)
传送门原来一直以为是一道大模拟。没想到是一道搜索+最优性剪枝如何搜最优呢?我们考虑怎么最快出完。大概是应该尽量出当前能出出去最多的吧。于是我们选择优先出顺子。这样做有什么好处呢?我们会发现除了顺子以外的牌都能够直接算最少需要出几轮。因此把顺子出完之后更新答案就行了。于是出牌优先级:顺子>四带二>四带一>三带二>三带一>对子>单牌代码:#i...原创 2018-11-01 21:29:49 · 192 阅读 · 0 评论 -
2018.10.27 loj#6035. 「雅礼集训 2017 Day4」洗衣服(贪心+堆)
传送门显然的贪心题啊。。。考试没调出来10pts滚了妙的一啊直接分别用堆贪心出洗完第iii件衣服需要的最少时间和晾完第iii件衣服需要的最少时间。我们设第一个算出来的数组是aaa,第二个是bbb,然后令ccc数组是bbb的一个任意排列。于是要求minminmin{maxmaxmax{a1+c1,a2+c2,...al+cla_1+c_1,a_2+c_2,...a_l+c_la1+c1,...原创 2018-10-27 16:50:41 · 497 阅读 · 0 评论 -
2018.10.27 codeforces402D. Upgrading Array(数论+贪心)
传送门唉我觉得这题数据范围1e5都能做啊。。。居然只出了2000考完听zxyzxyzxy说我的贪心可以卡但过了?可能今天本来是0+10+00+10+00+10+0只是运气好T1T1T1骗了100pts100pts100pts吧233.下面讲讲贪心:令wi=∏i=1kpiaiw_i=\prod_{i=1}^kp_i^{a_i}wi=∏i=1kpiai令A=∑aipi是好质数,B...原创 2018-10-27 16:42:46 · 198 阅读 · 2 评论 -
2018.10.31 NOIP模拟 一串数字(数论+贪心)
传送门把每一个数aaa质因数分解。假设a=p1a1∗p2a2∗...∗pkaka=p_1^{a_1}*p_2^{a_2}*...*p_k^{a_k}a=p1a1∗p2a2∗...∗pkak然后可以转化成a′=p1a1mod3∗p2a2mod3∗...∗pkakmod3a&amp;#x27;=p_1^{a_1mod3}*p_2^{a_2mod3}*...*p_k^{a_kmod3}...原创 2018-10-31 19:16:26 · 149 阅读 · 0 评论 -
2018.10.26 NOIP模拟 瓶子 (dp/贪心)
传送门正解是dp并不想去想了。自己yy了一个贪心拿了95pts95pts95pts,唯一没过的点还只有一个地方错了,面向数据变成之后过啦!所以我讲讲如何贪心。考虑到最后都只会合并成一种颜色,所以我们直接枚举变成哪种,然后让其它的全部强制直接变成那一种就行了。欢乐95pts95pts95pts代码(加了特判)...原创 2018-10-26 16:02:31 · 170 阅读 · 0 评论 -
2018.10.21 codeforces1071B. Minimum path(dp+贪心+bfs)
传送门唉考试的时候写错了两个细节调了一个多小时根本没调出来。下来又调了半个小时才过。其实很简单。我们先dpdpdp出最开始最多多少个连续的aaa.然后对于没法继续连续下去的用贪心+bfsbfsbfs来弄就行了。技不如人,告辞。代码:#include&lt;bits/stdc++.h&gt;using namespace std;int n,k,mx[2005][2005],ma...原创 2018-10-21 23:46:21 · 333 阅读 · 0 评论 -
bzoj3252: 攻略(长链剖分+贪心)
传送门长链剖分好题。题意:给一棵带点权的树,可以从根节点到任一叶节点走kkk次,走过的点只能计算一次,问kkk次走过的点点权值和最大值。思路:考虑将整棵树带权长链剖分,这样链与链之间是不会重复选择的。然后每条链都对应一种方案,我们贪心选择前kkk大即可。代码:#include<bits/stdc++.h>#define ri register intusing na...原创 2019-01-19 16:27:22 · 292 阅读 · 0 评论 -
bzoj5158 Alice&Bob(拓扑排序+贪心)
传送门短代码简单题。题意简述:对于一个序列XXX,定义其两个伴随序列a,ba,ba,b,aia_iai表示以第iii个数结尾的最长上升子序列长度,bib_ibi表示以第iii个数开头的最长下降子序列长度,现在给出aaa序列,问bbb序列所有数加起来最大值是多少。思路:首先发现bbb序列就是把这个序列反过来之后得到的X′X&amp;amp;#x27;X′的aaa序列,因此贪心证明一波可以发现:对...原创 2019-01-20 14:55:08 · 217 阅读 · 0 评论 -
hdu5195 DZY Loves Topological Sorting(贪心+线段树)
传送门题意简述:给出一张DAGDAGDAG,要求删去不超过kkk条边问最后拓扑序的最大字典序是多少。思路:贪心帮当前不超过删边上限且权值最大的点删边,用线段树维护一下每个点的入度来支持查询即可。注意要在选点的时候更新后继的入度代码:#include<bits/stdc++.h>#define ri register intusing namespace std;inl...原创 2019-01-22 18:54:44 · 214 阅读 · 0 评论 -
bzoj4198: [Noi2015]荷马史诗(哈夫曼树)
传送门建出kkk叉哈夫曼树然后贪心即可,注意维护深度。代码:#include<bits/stdc++.h>#define ri register int#define fi first#define se secondusing namespace std;const int rlen=1<<18|1;inline char gc(){ stati...原创 2019-08-21 20:42:54 · 161 阅读 · 0 评论 -
CSP-S模拟 环球巡演(hash表+贪心)
传送门把所有关键点提出来处理,然后分成相邻两个数分别贪心计算答案最后加起来。现在把问题转化成了如下模型:给你一个010101序列,你可以进行如下几种操作(四种操作代价不同):删去一个1删去一个0删去一个1,并允许在其后面删去一个0删去一个0,并允许在其后面删去一个1然后比比四种操作的代价讨论一下即可。代码:#include<bits/stdc++.h>#def...原创 2019-07-25 18:15:35 · 242 阅读 · 0 评论 -
CSP-S模拟 电话节(构造)
传送门貌似跟图没啥关系啊。。。随便找出一种生成森林出来,可以通过归纳法证明任意一棵子树最多有一个特殊点没有被匹配。然后就做完啦。代码:#include<bits/stdc++.h>#define ri register int#define fi first#define se secondusing namespace std;const int rlen=1&l...原创 2019-07-25 18:11:54 · 148 阅读 · 0 评论 -
LOJ#3158. 「NOI2019」序列(贪心模拟费用流)
传送门神题,蒟蒻博主只能写O(n4)O(n^4)O(n4)暴力dpdpdp(才不告诉你卡常之后貌似能过40pts40pts40pts呢)40pts40pts40pts代码:#include<bits/stdc++.h>#define ri register intusing namespace std;typedef long long ll;const int rlen...原创 2019-07-19 13:53:55 · 615 阅读 · 6 评论 -
bzoj3322: [Scoi2013]摩托车交易(kruskal重构树+贪心)
传送门题意咕咕咕思路:先把所有可以列车通的缩成一个点,然后用新图建立kruskalkruskalkruskal重构树。这样就可以倒着贪心模拟了。代码:#include<bits/stdc++.h>#define ri register int#define int long long#define fi first#define se secondusing n...原创 2019-03-28 21:45:50 · 165 阅读 · 0 评论 -
bzoj4567: [Scoi2016]背单词(trie+贪心)
传送门题意:给你n个字符串,不同的排列有不同的代价,代价按照如下方式计算(字符串s的位置为x):1.排在s后面的字符串有s的后缀,则代价为n^2;2.排在s前面的字符串有s的后缀,且没有排在s后面的s的后缀,则代价为x-y(y为最后一个与s不相等的后缀的位置);3.s没有后缀,则代价为x。求最小代价和。思路:显然把所有字符串倒序建一个trietrietrie树出来。然后在上面贪心...原创 2019-03-25 18:32:15 · 121 阅读 · 0 评论 -
NOIP训练 匹配(match)(贪心)
题意简述:思路:直接考虑把人和物品都看成二维平面上面的a,ba,ba,b两类点,然后一个aaa和bbb匹配的条件是xa≤xb&&ya≤ybx_a\le x_b\&\&y_a\le y_bxa≤xb&&ya≤yb,要求最后选出的bbb的横坐标之和最小。这样的话,我们把a,ba,ba,b两类点分别按照xxx...原创 2019-03-25 16:45:24 · 200 阅读 · 0 评论 -
bzoj4813: [Cqoi2017]小Q的棋盘(贪心)
传送门考虑最后所有走过的点构成的树,显然除了最长链走一遍以外每条轻链都走两遍。于是求一波最长链搞一搞就完了。注意几个小细节特判qwq代码:#include<bits/stdc++.h>#define ri register int#define fi first#define se secondusing namespace std;const int rlen=1...原创 2019-03-11 18:21:56 · 179 阅读 · 0 评论 -
2018.10.21 codeforces1071A. Cram Time(贪心构造)
传送门直接先看最多能够凑出几个。然后可以得到一个结论就是如果保证所有页数之和是小于等于A+BA+BA+B的一定都对应着一种合法方案。如何构造?我们对于第一天的AAA个小时,从大向小选,如果当前的能选就选,不能选的就分给第二天。这样一定能构造出合法解。代码:#include<bits/stdc++.h>using namespace std;inline int rea...原创 2018-10-21 22:43:07 · 192 阅读 · 0 评论 -
2018.10.20 NOIP模拟 蛋糕(线段树+贪心/lis)
传送门听说是最长反链衍生出的对偶定理就能秒了。本蒟蒻直接用线段树模拟维护的。对于第一维排序。维护第二维的偏序关系可以借助线段树/树状数组维护逆序对的思想建立权值线段树贪心求解。代码...原创 2018-10-20 16:29:20 · 206 阅读 · 1 评论 -
2018.09.30 bzoj2288:生日礼物(贪心+线段树)
传送门线段树经典题目。每次先找到最大子段和来更新答案,然后利用网络流返回的思想把这个最大字段乘-1之后放回去。代码:#include&amp;lt;bits/stdc++.h&amp;gt;#define N 100005#define lc (p&amp;lt;&amp;lt;1)#define rc (p&amp;lt;&amp;lt;1|1)#define mid (T[原创 2018-09-30 09:37:06 · 253 阅读 · 0 评论 -
2018.09.16 bzoj1086: [SCOI2005]王室联邦(贪心)
传送门 就是给树分块。 对于一个节点。 如果它的几棵子树加起来超过了下限,就把它们分成一块。 这样每次可能会剩下几个节点。 把它们都加入栈中最顶上那一块就行了。 代码:#include<bits/stdc++.h>#define N 1005using namespace std;inline int read(){ int ans=0; ch...原创 2018-09-16 16:25:48 · 195 阅读 · 0 评论 -
2018.09.16 atcoder Garbage Collector(贪心)
传送门 昨晚打比赛的时候不是很机智啊。 这道题贪心就能过了。 我们可以发现一个明显的结论,每次选的垃圾的距离从大到小排序之后,每个距离对答案的贡献的系数是5,5,7,9,11…也就是最远的是5,其余都是2*rank+1。 这样就可以根据每次选几个垃圾来贪心。 代码:#include<bits/stdc++.h>#define ll long long#define...原创 2018-09-16 15:36:15 · 253 阅读 · 0 评论 -
2018.09.08 NOIP模拟trip(最长链计数)
差不多是原题啊。 求最长链变成了最长链计数,其余没有变化。 这一次考试为了保险起见本蒟蒻还是写了上次没写的辅助数组。 代码:#include&amp;lt;bits/stdc++.h&amp;gt;#define N 50005#define M 200005#define mod 1000000007#define ll long longusing namespace ...原创 2018-10-11 23:36:26 · 158 阅读 · 0 评论 -
2018.09.08 NOIP模拟eat(贪心)
签到水题啊。。。 这题完全跟图论没有关系。 显然如果确定了哪些点会被选之后顺序已经不重要了。于是我们给点按权值排序贪心从大向小选。 我们要求的显然就是∑i(a[i]−(n−i))∑i(a[i]−(n−i))\sum _{i} (a[i]-(n-i)) 当这个贡献非正时停止枚举。 然后就没了。 代码:#include&amp;lt;bits/stdc++.h&amp;gt;...原创 2018-10-11 23:34:43 · 123 阅读 · 0 评论 -
2018.08.29 NOIP模拟 movie(状压dp/随机化贪心)
【描述】小石头喜欢看电影,选择有 N 部电影可供选择,每一部电影会在一天的不同时段播 放。他希望连续看 L 分钟的电影。因为电影院是他家开的,所以他可以在一部电影播放过程中任何时间进入或退出,当然他不希望重复看一部电影,所以每部电影他最多看一次,也不能在看一部电影的时候,换到另一个正在播放一样电影的放映厅。 请你帮助小石头让他重 0 到 L 连续不断的看电影,如果可以的话,计算出最少看几 ...原创 2018-10-11 23:31:08 · 238 阅读 · 0 评论 -
2018.08.18 NOIP模拟 travel(贪心)
Travel 题目背景 SOURCE:NOIP2015-SHY4题目描述 小 A 要进行一次旅行。这回他要在序号为 1 到 n 的 n 个城市之间旅行。这 n 个城市之间共有 m 条连接两个城市的单行公路,对于第 i 条公路的风景有一个评分 ai。小 A 有一个要求:挑选旅行路线时经过某条路时看到的风景比上一条经过的公路的风景评分更高。小 A 想看到尽可能多的风景,请你告诉他他能找到的最...原创 2018-10-11 23:18:47 · 382 阅读 · 0 评论 -
2018.08.09洛谷P3959 宝藏(随机化贪心)
传送门 回想起了自己赛场上乱搜的20分。 好吧现在也就是写了一个随机化贪心就水过去了,不得不说随机化贪心大法好。 代码:#include&lt;bits/stdc++.h&gt;using namespace std;inline int read(){ int ans=0; char ch=getchar(); while(!isdigit(ch))ch...原创 2018-08-09 23:01:32 · 372 阅读 · 0 评论 -
2018.07.20 atcoder Largest Smallest Cyclic Shift(贪心)
传送门 题意:给你x个a,y个b,z个c,显然这些字符可以拼成若干字符串,然后求这些字符串中最小表示法表示出来的最大的那一个。解法:贪心思想,用multiset维护现在拼成的字串,每次取一个最小的和一个最大的拼在一起,最后剩下的就是答案。代码如下:#include&amp;lt;bits/stdc++.h&amp;gt;using namespace std;int a,b,c;multise...原创 2018-07-20 14:42:50 · 416 阅读 · 0 评论 -
2018.09.17 atcoder Tak and Hotels(贪心+分块)
传送门一道有意思的题。一开始想错了,以为一直lowerlowerlower_boundboundbound就可以解决询问,结果交上去TLE了之后才发现时间复杂度是错的。但是贪心思想一定是对的,每次向前尽量推进一定可以得到最优解。于是我想起了一道叫做弹飞绵羊的题,感觉这道题可以类比。码了一会一直WA感觉不太对,发现有一个细节写错了233。A了之后在csdn上翻了翻题解。发现都是倍增优化...原创 2018-09-17 23:52:13 · 220 阅读 · 0 评论 -
2018.09.23 atcoder Boxes and Candies(贪心)
传送门一道挺有意思的贪心。从1到n依次满足条件。注意要特判第一个数已经大于x的情况。但是如何贪心吃呢?如果靠左的数没有越界,我们吃靠右的数。原因是下一次靠右的数就会成为靠左的数,相当于多贡献了一次。然后貌似要开long long代码:#include<bits/stdc++.h>#define N 100005#define ll long longusing ...原创 2018-09-23 20:42:57 · 370 阅读 · 0 评论 -
2018.09.24 bzoj4977: [[Lydsy1708月赛]跳伞求生(贪心+线段树)
传送门线段树好题。这题一看玩我就想贪心。先把a,b数组排序。然后我们选择a数组中最大的b个数(不足b个就选a个数),分别贪心出在b数组中可以获得的最大贡献。这时可以用线段树优化。然后交上去只能过一个点(雾调了很久都没有发现错误点。于是搜题解。发现大家的做法都跟我不一样233。但我不能放弃。就在这时我发现有可能每次贪心出的最大贡献可能是负数233。于是我们把每次的决策都记下来...原创 2018-09-24 21:46:09 · 261 阅读 · 0 评论 -
2018.10.08 NOIP模拟 斐波那契(贪心+hash/map)
1.1 description斐波那契数列又称兔子数列,可以通过以下方式产生:一开始只有一只兔子,一个月之后这只兔子每个月会繁殖出另一只兔子。之后每只兔子出生后都按照以上规则繁殖。我们把每个月的兔子的数量作为数列中的数就可以得到斐波那契数列。现在草原上有 n 只兔子排成一排,每只兔子有一个繁殖能力 ai。小 F 想把这些兔子分组,要求一个组内的兔子必须是连续的一段。而且因为兔子们不太喜欢兔子数...原创 2018-10-11 23:47:24 · 195 阅读 · 0 评论 -
2018.10.04 推销员(贪心+set)
描述阿明是一名推销员,他奉命到螺丝街推销他们公司的产品。螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户。螺丝街一共有N家住户,第i家住户到入口的距离为Si米。由于同一栋房子里可以有多家住户,所以可能有多家住户与入口的距离相等。阿明会从入口进入,依次向螺丝街的X家住户推销产品,然后再原路走出去。阿明每走1米就会积累1点疲劳值,向第i家住户推销产品会积累Ai点疲劳值。阿明是...原创 2018-10-04 23:47:28 · 126 阅读 · 0 评论 -
2018.10.04 codeforces1060D. Social Circles(贪心)
传送门一道神奇的贪心。考虑每次加入一个人,他要么新构成一个圈,要么利用之前已有的空位。而不论如何决策,增加的贡献只跟当前左右l,rl,rl,r的最大值有关,因此我们只需保证每次取得的max(l,r)max(l,r)max(l,r)最小就行了。因此我们可以将数组l,rl,rl,r排序,每次增加max(li,ri)+1max(l_i,r_i)+1max(li,ri)+1就可以了。代码:...原创 2018-10-04 21:21:31 · 1193 阅读 · 0 评论 -
2018.09.21 atcoder An Invisible Hand(贪心)
传送门简单贪心啊。这题显然跟t并没有关系,取差量最大的几组买入卖出就行了。于是我们统计一下有几组差量是最大的就行了。代码:#include&lt;bits/stdc++.h&gt;#define N 100005using namespace std;inline int read(){ int ans=0; char ch=getchar(); while(!isdigit...原创 2018-09-21 21:15:59 · 301 阅读 · 0 评论 -
2018.10.01 NOIP模拟 购买书籍(贪心+STL)
描述L的书籍被M偷了以后伤心欲绝,决定再购买一些回来,现在有 N 本书可以买,每本书的价格是 a[i]元。现在L总共有 M 元,以及 K 张优惠券。 对于每本书,如果使用一张优惠券,则可以用b[i]的优惠价格购买。 注意每本书只能使用一张优惠券,只能购买一次。L想知道自己最多可以购买几本书?输入第一行三个整数 N, K, M接下来 N 行,每行两个整数,表示 a[i]和 b [i]。...原创 2018-10-11 23:38:42 · 358 阅读 · 0 评论 -
2018.10.01 NOIP模拟 卡牌游戏(贪心)
描述L最近喜欢上了一个卡片游戏,游戏规则是: 2个人一共拿2n张卡片,编号1…2n,每个人n张,然后进行n轮出牌,每轮2个人都打一张牌,,点数大的玩家每次获1分L可以预测到对方要打牌的顺序。同时,L有一次机会选择了某个时间点,从那个时候开始,每回合点数少者获胜。请你帮助L获得最大的分数输入第一行是1个整数n接下来n行表示,对手每次的出牌,根据这些数字,你一定知道了L手上的牌的吧输出...原创 2018-10-11 23:37:25 · 461 阅读 · 0 评论 -
2018.09.19 atcoder AtCoDeer and Rock-Paper(贪心)
传送门sb贪心啊。显然能选帕子就选帕子。首先假设第一个人全出石头。考虑把一些石头修改成帕子。这样贡献只增不减,加起来就是答案。代码:#include<bits/stdc++.h>#define N 100005using namespace std;char s[N];int n,delta=0,ans=0;bool col[N];int main(){ s...原创 2018-09-19 22:05:53 · 328 阅读 · 0 评论