
贪心
bestFy
世界上最最最渣的oier.
展开
-
codeforces790A - Bear and Different Names
题面在这里题目大意:就是说有一个长度为n的名字序列,然后告诉你每连续m个里有没有重复的,有重复的就是NO,没有重复就是YES。让你构造一个合法的名字序列。一个简单的贪心思想,前m-1个赋值为1~m-1,每次有重复的就让他等于这m个的第一个,这样就不会对后面有影响。如果没有重复的就再新建一个。/*************************************原创 2017-11-17 20:46:00 · 312 阅读 · 0 评论 -
Codeforces Round #471 (Div. 2)
比赛链接QAQ终于补完了这场的题。。感觉后面几题还都挺好的就写个(非常)简略的总结叭。A. Feed the cat简单贪心+模拟。#include<bits/stdc++.h>#define rep(i,x,y) for (int i=(x); i<=(y); i++)#define ll long longusing namespace std;...原创 2018-03-27 23:23:41 · 505 阅读 · 0 评论 -
bzoj4388: JOI2012 invitation(线段树+堆)
题面在这里 代码题。。题意有 nnn 个男生, mmm 个女生。给出 kkk 条关系,每个关系形如 ai,bi,ci,di,tiai,bi,ci,di,tia_i,b_i,c_i,d_i,t_i ,表示 [ai,bi][ai,bi][a_i,b_i] 的男生和 [ci,di][ci,di][c_i,d_i] 的女生是好朋友,幸福指数为 titit_i。现在选择了一个男生 CCC 加入...原创 2018-03-13 15:14:52 · 343 阅读 · 0 评论 -
loj#2324. 「清华集训 2017」小 Y 和二叉树(贪心+分类讨论)
题面在这里题意:给出一棵每个点度数不超过3的无根树,节点编号为111~nnn 你需要确定根和每个节点的左右儿子,使其成为一棵二叉树。 问所有可得到的二叉树中中序遍历字典序最小的树的中序遍历。 n≤1,000,000n≤1,000,000n ≤ 1,000,000做法:这题似乎当时集训队全场ac 首先找出一个最小的度≤2≤2\le2的点作为最左边的拐角点,也就是中序遍历的第一...原创 2018-03-06 00:39:15 · 439 阅读 · 0 评论 -
ARC#058F Iroha Loves Strings(贪心+字符串处理+dp预处理)
题面在这里 这题网上找不到题解啊。。于是我就自己对着某大佬的ac代码看了inf小时后终于(假装)懂了。。题意小C有NNN个字符串s1,s2,s3,...,sNs1,s2,s3,...,sNs_1, s_2, s_3, ..., s_N,并且他准备选择一些字符串顺次连接起来。问所有能得到的字符串中长度为KKK的字典序最小的。N≤2000,K≤104N≤2000,K≤104N ≤ 200...原创 2018-03-09 16:04:09 · 939 阅读 · 1 评论 -
codeforces3B - Lorry
题面在这里题意:有一些物品,体积为1或2,每个物品有一个价值。 现在总共只能放体积为m的物品,问最大的价值。做法:显然是贪心。 先说两个正常一点的策略。 1.你先能取多少2就取多少2,然后再把一些价值大一些的1两个一组和2换。 2.直接枚举取多少个2计算一下。然后来说我的策略QAQ。 首先按照单位价值排序,即你把体积为1的价值×2,然后按照新的价值排序。 然原创 2018-01-10 11:35:21 · 334 阅读 · 0 评论 -
bzoj4319: cerc2008 Suffix reconstruction
题面在这里题意:给出sa[]数组,求原字符串,字符都是’a’~’z’所有小写字母。做法:qaq此题乱入。。。 其实是个贪心,涉及到了一点点的后缀数组。考虑两个后缀suf(p1)" role="presentation" style="position: relative;">suf(p1)suf(p1)suf(p1)和suf(p2)" role="presentati原创 2018-01-25 18:28:17 · 293 阅读 · 0 评论 -
bzoj1106: [POI2007]立方体大作战tet
题面在这里题意:给2*n个编号为1~n的数,编号为i的都有两个,每次可以交换相邻两个数,如果有两个相同的数相邻就消去。并且剩下的数字会合并,有可能会产生连锁反应。 问最少几次操作能把所有的都消去。做法:贪心。 一个非常直接的想法,每次遇到一个数,假如之前出现过就不断交换和之前那个抵消。 正确性证明如下: 1. 假如有这样的情况 1 2 …. 2 1,显然先消去2比先原创 2018-01-05 13:43:25 · 256 阅读 · 0 评论 -
bzoj4391: [Usaco2015 dec]High Card Low Card
题面在这里题意:有2*n张牌,编号为1~2n,两个人各拿n张。现在A知道B n轮出的牌。 规定前1~i轮编号大的人胜,后i+1~n轮编号小的人胜。 问选择恰当的i,A最多能胜几轮。做法:记f[i]表示前i轮中A最多能胜的轮数,g[i]表示后i~n轮中A最多能胜的轮数 答案就是max(f[i]+g[i+1])(0=i=n)max{(f[i]+g[i+1])}(0现在原创 2018-01-02 16:04:54 · 297 阅读 · 0 评论 -
codeforces865D - Buy Low Sell High
题面在这里题意:有n天,每天有股票,价格不全相同。 现在每天你可以选择买进一只股票,卖出一只股票,或什么也不做。 卖出一定要在有股票的前提下。 问最多可以收益多少。做法:你要卖出肯定是之前买的价钱要小于卖出的价钱。 于是我们可以把价钱都扔到一个小根堆里。每次假如当前的钱大于堆顶,就把堆顶弹出,答案减去堆顶,加上当前的钱数,代表买了之前那天的股票,在今天卖出。 并且,你要把这天的钱数x pu原创 2018-01-03 18:04:36 · 402 阅读 · 0 评论 -
bzoj4391: [Usaco2015 dec]High Card Low Card
题面在这里题意:有2*n张牌,编号为1~2n,两个人各拿n张。现在A知道B n轮出的牌。 规定前1~i轮编号大的人胜,后i+1~n轮编号小的人胜。 问选择恰当的i,A最多能胜几轮。做法:记f[i]表示前i轮中A最多能胜的轮数,g[i]表示后i~n轮中A最多能胜的轮数 答案就是max(f[i]+g[i+1])(0<=i<=n)max{(f[i]+g[i+1])}(0<=i<=n)现在来考虑如何计原创 2018-01-02 16:06:09 · 231 阅读 · 0 评论 -
bzoj1046: [HAOI2007]上升序列
题面在这里做法: 先预处理出f[i]f[i]表示第i个数字开始的最长上升子序列长度。这个相当于倒着求一遍最长下降子序列。 然后贪心。对于每一个询问lenlen,我们从左到右扫描,若当前的f[i]>=lenf[i]>=len且ai>lasta_i>last,则输出这个数并更新为lastlast,然后len−−len --。直到len=0len=0为止。话说O(nlogn)O(nlogn)的lisl原创 2017-12-15 13:48:44 · 229 阅读 · 0 评论 -
bzoj1034: [ZJOI2008]泡泡堂BNB
题面在这里排序+贪心。贪心策略就是说,对于a[],b[]分别维护两个指针,然后最弱的能打过就打最弱的,打不过的话,最强的能打过就打最强的,还是打不过的话就拿a[]最弱的打b[]最强的。然后这个是最好成绩。最差成绩就是把a,b反一反然后做出b的最好成绩,那么2*n-ans就是a的最差成绩。/*******************************************原创 2017-11-16 22:30:42 · 270 阅读 · 0 评论 -
bzoj1029: [JSOI2007]建筑抢修
题面在这里贪心是显然的吧。一个想法就是考虑按结束时间排序,然后能修就修,不能修就不修。但是明显是错的qwq。。因为你可以舍弃一些之前的来完成更多的任务。所以我们应该是舍弃掉之前做过时间最长的,正确性显然。然后用堆维护一下即可。/************************************************************* Problem原创 2017-11-16 21:56:34 · 276 阅读 · 0 评论 -
Codeforces Round #480 (Div. 2)
比赛链接彻底沦为要么过不掉pp要么就FST的智障选手。A. Links and Pearls看余数是否为0即可。#include&lt;bits/stdc++.h&gt;#define rep(i,x,y) for (int i=(x); i&lt;=(y); i++)#define per(i,x,y) for (int i=(x); i&gt;=(y); i--)#d...原创 2018-05-09 21:23:23 · 445 阅读 · 1 评论