![](https://img-blog.csdnimg.cn/20190918140145169.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法基础-杂类
文章平均质量分 63
算法基础
ZSJZ_liuzian
这个作者很懒,什么都没留下…
展开
-
GDKOI 2021 提高组 Day1 第一题 割(贪心+二分图染色)
GDKOI 2021 提高组 Day1 第一题 割题目大意给出一种方案使nnn个点mmm条边分成两部分,两部分之间的边数≥m2\ge\frac{m}{2}≥2m。n≤105,m≤2∗105n\le10^5,m\le2*10^5n≤105,m≤2∗105题解没用的边删去后,剩下的部分是一张二分图,考虑贪心染色。DFS的过程中,每到一个未染色的点,统计与它相邻的点的颜色,将它自己染为较少的那种,令这些点有sss个,即边共sss条,这样可以保证连出的边≥s2\ge\frac{s}{2}≥2s原创 2021-01-31 20:39:11 · 162 阅读 · 0 评论 -
JZOJ 6085. 【GDOI2019模拟2019.3.26】要换换名字(二分+Trie+二分图匹配)
JZOJ 6085. 【GDOI2019模拟2019.3.26】要换换名字题目大意给出nnn个由小写字母组成的字符串,每个串用它的某个非空子序列替代它,求使得替代后所有串互不相同的最长串最小长度。若不存在则输出−1-1−1。1≤n,len≤3001\le n,len\le3001≤n,len≤300题解先二分答案,给每个串找出长度小于midmidmid的nnn个子序列,如果不足nnn个则找出所有子序列。任意找nnn个即可,因为只要有nnn个就能使得不出现重复。既然已经找出来了每个串替换为什原创 2021-03-31 16:06:03 · 227 阅读 · 0 评论 -
NOI Online 2021 #1 T3 岛屿探险(CDQ分治+Trie)
NOI Online 2021 #1 T3 岛屿探险题目大意nnn座岛屿编号为1−n1-n1−n,每个岛屿有两个值ai,bia_i,b_iai,bi。qqq次询问,给出l,r,c,dl,r,c,dl,r,c,d,求编号在[l,r][l,r][l,r]中的岛屿满足a⨁c≤min(b,d)a\bigoplus c\le \min(b,d)a⨁c≤min(b,d)的数量。n,q≤105,1≤a,b,c,d≤224−1n,q\le10^5,1\le a,b,c,d\le2^{24}-1n,q≤105,原创 2021-03-27 22:31:10 · 1256 阅读 · 4 评论 -
JZOJ 6652. 【2020.05.27省选模拟】序列(贪心+序列翻转)
JZOJ 6652. 【2020.05.27省选模拟】序列题目大意问给出的NNN个MMM的排列,按从头到尾依次加到序列首或尾的规则,共同能得到的新排列的个数,并给出字典序最小的方案。询问有多组。T≤50,N,M≤1000,∑m≤5000T\le50,N,M\le1000,\sum m\le5000T≤50,N,M≤1000,∑m≤5000题解先加入队列的数位置不好确定,但最后加入的数一定只能再两端,不妨考虑从后往前推。这样一来每个时刻已经构成的排列是一段前缀和一段后缀,记录指针Li,Ri原创 2021-03-02 21:15:07 · 273 阅读 · 0 评论 -
JZOJ 6957. 【2020.01.19冬令营模拟】板凳(前缀和+二分)
JZOJ 6957. 【2020.01.19冬令营模拟】板凳题目大意长为mmm的序列,初始有若nnn位置为111,其余为000,每次找到最长且靠左的一段全000序列,将该段中间位置修改为111,qqq次询问求第xxx次修改的位置。n,q≤105n,q\le10^5n,q≤105,m≤1014m\le10^{14}m≤1014题解首先要发现一个重要的性质,每个段中间位置修改后会被分成两段,尽管这两段长度可能相差111,但这两段再继续分割下去每一层的长度也只有两种可能的取值,也就是不同的段长最多原创 2021-01-28 21:50:56 · 102 阅读 · 0 评论 -
JZOJ 6931. 【2020.12.26冬令营模拟】T3(二分)
JZOJ 6931. 【2020.12.26冬令营模拟】T3题解考虑每条边的贡献拆开来看,那么式子可以用基本不等式化简求得最大值,但会发现每个点的贡献会算重,可以把每个点的贡献平均分给每条边。但这样子的正确性是无法保证的,不过有20分的特殊数据可以保证其正确性。另外,求最大值可以直接用三分。通过移项可以发现,当答案确定后,每个点拆给与其相连的边的比例系数确定,通过是否能够合理分配和单调性证明后可以直接使用二分解决。代码#include<cstdio>#include<c原创 2021-01-07 21:20:39 · 134 阅读 · 0 评论 -
NOIP 2020 T3 移球游戏(构造+分治)
NOIP 2020 T3 移球游戏题解如果能想到一个个位置复原的话,可以拿到前404040分。方法其实并不难,只要能想到要这么做,相当于考虑如何交换任意两个位置,借助空柱操作即可。正解的方向很清晰,毕竟题目的部分分给了很明显的提示,容易想到,可以用分治,把左右各自归类,然后递归下去,此时的问题是如何实现归类,也就是如何实现部分分中的n=2n=2n=2。先大概捋一捋过程:左右两区间各一个指针从左往右,将当前指针指向的两列中,较多的一种颜色复原,并将其对应的指针后移,以此类推。如何时间复原较多颜原创 2020-12-15 20:29:20 · 642 阅读 · 0 评论 -
COI 2020 Pastiri(贪心)
COI 2019/2020 Pastiri题目大意一棵大小为NNN的树上有若干只羊,求能看守所有的MMM只羊的最少牧羊人数量及任意一种方案。牧羊人xxx能看守羊yyy,当且仅当disposx,posy=min(disx,posi)(i∈[1,m])dis_{pos_x,pos_y}=min(dis_{x,pos_i})(i\in[1,m])disposx,posy=min(disx,posi)(i∈[1,m]),其中posipos_iposi表示iii所在位置。题解这题要用到一种贪原创 2020-12-02 21:49:17 · 254 阅读 · 0 评论 -
2020“图灵杯”趣味网络邀请赛 B. 回文串(构造+二分)
2020“图灵杯”趣味网络邀请赛 B. 回文串题解第一档部分分存在kkk使得m=k(k+1)/2m=k(k+1)/2m=k(k+1)/2起到了很大提示作用(其实没有的话也十分容易想到),回文串最多必然是所有字符相同,此时需满足m=k(k+1)/2(k∈Z)m=k(k+1)/2(k\in Z)m=k(k+1)/2(k∈Z),则答案为kkk个aaa;不满足时,可以尽可能增大kkk的值,使总长度接近mmm,中间再用两个字符bcbcbc隔开,然后剩下的部分再找到最大的kkk,继续做下去直到mmm剩余000。原创 2020-11-29 20:21:42 · 221 阅读 · 0 评论 -
JZOJ 6860. 【2020.11.14提高组模拟】鬼渊传说(前缀和+指针)
JZOJ 6860. 【2020.11.14提高组模拟】鬼渊传说题解这题要用到图论中的欧拉定理,即V−E+F=2V-E+F=2V−E+F=2,其中VVV为点数,EEE为边数,FFF为面数(包括整个图形以外的部分),可以用归纳法证明,对任意连通平面图成立。那么在这题里把黑格看成点,可以通过判断欧拉定理是否成立来判断是否只有一个连通块。设四元环(相邻的四格构成的正方形)个数为SSS,显而易见F=S+1F=S+1F=S+1,因为网格图中的面只能是四元环(除了整个图形以外的部分),则有V−E+S=1V-E原创 2021-01-07 20:12:12 · 216 阅读 · 0 评论 -
Atcoder Grand Contest 023D - Go Home(贪心)
Atcoder agc023_D - Go Home题目大意一条路上有NNN幢房子,每幢房子住有XiX_iXi个人,最初汽车从某个地点SSS出发,装着所有的人,汽车每次走一个单位,向左或向右由所有人投票决定,少数服从多数,如果汽车到达了自己所住的房子则下车。每个人都会尽可能使自己尽早到达,求最晚到达的人的到达时间。N≤105N≤10^5N≤105题解第一眼以为维护前缀和后缀和,每次最最贪心地判断左右哪边人多久往哪边走,但一看样例就会发现这样是错的,也就是说,对于每个人而言,不一定每次都原创 2020-09-23 22:12:14 · 154 阅读 · 0 评论 -
Codeforces 578E. Walking!(贪心+线段树)
Codeforces 578E. Walking!题目大意给出一个长度为NNN字符串SSS,由’L’和‘R’组成,求一个NNN的排列PPP,使得SPi≠Spi+1S_{P_i}≠S_{p_{i+1}}SPi=Spi+1,也就是说要满足选择的相邻两个都不相同,同时要最小化pi>pi+1p_i>p_{i+1}pi>pi+1的个数,也就是使排列相邻的两个数前一个大于后一个的数量最少。数据保证有解。N≤1∗105N≤1*10^5N≤1∗105题解观察样例再自己原创 2020-09-18 22:32:20 · 133 阅读 · 0 评论 -
AtCoder Grand Contest 029C - Lexicographic constraints(二分+栈)
ATCoder agc_029C - Lexicographic constraints题目大意给出一个长为NNN的序列AAA,最小化能构造NNN个字符串满足严格字典序升序且第iii个字符串的长度为AiA_iAi的字符集大小。N≤2∗105N≤2*10^5N≤2∗105Ai≤1∗109A_i≤1*10^9Ai≤1∗109题解最早想的是从左往右直接贪心尽可能小地构造,但是会发现有些时候不能确定怎样才最优。比如当前Ai=Ai+1=3A_i=A_{i+1}=3Ai=Ai+1=3,构造到原创 2020-09-18 22:17:09 · 225 阅读 · 0 评论 -
JZOJ 3162. 【GDOI2013模拟2】旋转(推式子+差分)
JZOJ 3162. 【GDOI2013模拟2】旋转 (Standard IO)题目DescriptionAlice和Bob发明了一个新的旋转游戏。首先,Bob给定NNN个数组成的序列,并把该序列平均分配成若干个块,每块正好包含KKK个数(KKK能整除NNN)。第一块由第111到第KKK个数构成,第二块由第K+1K+1K+1个数到第2K2K2K个数构成,以此类推。接着,Bob要求Alice...原创 2019-02-15 22:05:02 · 233 阅读 · 0 评论 -
倍增 思想与操作
倍增倍增是把时间复杂度为O(n)O(n)O(n)的一个操作变为O(log2n)O(log2n)O(\log_2n)的操作。 它与分治的思想类似,时间复杂度也类似。 它们的区别如下: 分治是将一个问题分成若干个子问题,最后的答案由子问题的答案合并得到。 倍增是将一个需要执行多次的操作分解,操作的结果直接由两个子操作的结果得到。例子最常见的例子就是在树上倍增。 每个询问要求节点...原创 2018-08-19 21:46:21 · 275 阅读 · 0 评论 -
JZOJ 5168. 冲击哥(贪心)
JZOJ 5168. 冲击哥题目DescriptionInputOutputSample Input1 3Sample OutputABAData Constraintn,m≤100题解首先要明确题目的要求,可以理解成在矩阵中填上字母,使得相邻的相同字母连成的图形必须是正方形,满足字典序最小。同时,所谓的“从上到下,从左到右”指的是:ABCAAAABC不是A...原创 2018-10-06 21:53:53 · 242 阅读 · 0 评论 -
JZOJ 6307. 安排(归并排序+分治)
JZOJ6307. 安排题目DescriptionInputOutputSample Input61 3 5 6 4 21 2 3 4 5 6Sample Output42 33 62 54 5Data ConstraintHint题解这是一道奇妙的题!!!!!定义:交换两个数时,若这两个数分别是这段区间的最大值和最小值,则称此交换为合法的。最暴...原创 2019-08-20 19:10:38 · 195 阅读 · 0 评论 -
JZOJ 4211. 【五校联考1day2】送你一颗圣诞树(分治)
JZOJ 4211. 【五校联考1day2】送你一颗圣诞树题目Description再过三个多月就是圣诞节了,小R想送小Y一棵圣诞树作为节日礼物。因为他想让这棵圣诞树越大越好,所以当然是买不到能够让他满意的树的,因此他打算自己把这棵树拼出来。现在,小R开始画这棵树的设计图纸了。因为这棵树实在太大,所以他采用了一种比较方便的方法。首先他定义了m+1m+ 1m+1棵树T0T0T0到TmTmTm...原创 2019-01-25 21:18:34 · 463 阅读 · 2 评论 -
JZOJ 100048. 【NOIP2017提高A组模拟7.14】紧急撤离(分治+状压DP)
JZOJ 100048. 【NOIP2017提高A组模拟7.14】紧急撤离题目Description某日, 敌军对某村落展开攻击,所幸我情报部门提前预知了消息,村民兵武装连夜组织村民快速转移,为此他们需要赶往地道入口。已知村庄形成了 N * M 的方格网络,周围被封锁,无法穿行。其中有些方格没有敌军占领,可以进入,有些方格已经被敌军渗透,不能进入。由于敌军的步步紧逼,民众只能向行或列增大的地...原创 2018-12-17 21:56:33 · 228 阅读 · 0 评论