![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
题解
文章平均质量分 80
鹭天
敦立坤我是你爹
展开
-
【题解 && 拓扑思维】 C - Building Company
模拟拓扑结构,从当前队列中拥有的工位出发,将当前工位堆中能处理的工作全部处理完,同时记录一下如果当前工位是当前项目所需要的最后一个工位,那么就将当前项目所能获得的新工位放入队列中继续拓展。对于每一个项目的几个条件,我们其实可以当作一些约束,当这些约束全部满足,那么就可以加入新员工继续拓展。对于每一个项目,需要满足几个条件,对于每一个条件,表示为第i项工作需要有几个人做。对于每一项工作,我们开一个堆,记录当前工作需要的人数以及当前的项目的编号。这几个条件全部满足后,这个项目就可以收入囊下,同时获得新的员工。原创 2024-01-31 12:37:22 · 372 阅读 · 0 评论 -
【题解 && Trie树 && 字符串】 C - New but Nostalgic Problem
这个时候就没有上述的限制了(每种只能取一个),我们每种可以取若干个,同理,我们也是从小到大枚举,找到合适的那个字符(第一个字符串的和>=k的地方),而后按照上述的方式检验是否可行即可。首先,答案已经确定了至少有abc,也就是说目前挑选出的几个字符串中都是以abc打头的,可能就是abc,也可能是abc[a-z]当cnt1+cnt2>=k时,说明我们能找出至少k个字符串,使得他们的前缀是abc,这个时候答案确定。所以,在答案不改变的情况下,我们对于每种情况至多只能取出一个字符串。什么情况下,答案是abc呢?原创 2024-01-19 16:36:28 · 429 阅读 · 0 评论 -
【题解 && 优化dp】 B - Base Station Construction
我刚开始其实想从线段入手,但是发现重叠的部分根本不好处理,以至于我被卡了思路,一直到结束。这样表示显然是没问题的,因为除了第一个基站,其他基站的设立必定是存在上一个基站的。表示必须在第i个点建设基站,并且i号点之前的线段全部满足要求时所需要的最小代价。我们注意到题目要求:每一条线段上都必须要有一个基站存在。但是这个j显然不能乱找,怎么样去找这个j才是合法的呢?当dp状态设定不好的时候,我们不妨从最简单的部分出发。建基站的位置(注意,是上一个!这个j的位置显然是需要经过预处理的。一个是点,一个是线段。原创 2024-01-19 14:17:34 · 519 阅读 · 0 评论 -
【题解 && 堆】 [蓝桥杯2023初赛] 整数删除
你删除一个数之后,当前数左边和右边的两个数会加上当前这个数,你虽然把这两个数放到了堆里面,但是这个堆里面仍然存在着未加上被删数的这两个数。但是我们知道这两个数实际上已经不存在了,已经变成新的加上被删数的两个数了。如果当前数被加上了新的数,那么加入堆之后就让这个位置的时间戳+1,最后取出堆顶元素的时候只需要比较当前堆顶元素的时间戳和当前位置的实际时间戳是否相同即可。每次取出堆顶元素删除,而后将他的前一个以及后一个元素的值加上他的值就可以了。我们用堆记录当前的最小值以及当前值所在的下标。原创 2023-11-08 22:17:11 · 404 阅读 · 0 评论 -
[蓝桥杯 2022 省 A] 推导部分和
对于一个长度为N的整数数列A1A2⋯AN,小蓝想知道下标l到r的部分和il∑rAiAlAl1⋯Ar是多少?然而,小蓝并不知道数列中每个数的值是多少,他只知道它的M个部分和的值。其中第i个部分和是下标li到ri的部分和∑jliriAliAli1⋯Ari, 值是Si。原创 2023-11-05 23:07:00 · 984 阅读 · 3 评论 -
【题解 && 线段树】[蓝桥杯 2022 省 A] 选数异或
给定一个长度为n的数列A1A2⋯An和一个非负整数x, 给定m次查询, 每次询问能否从某个区间lr中选择两个数使得他们的异或等于x。原创 2023-11-02 11:29:04 · 455 阅读 · 0 评论 -
【实验五】题解
我是敦立坤的爹!!!一个整数集合中含有n个数字,每个数字都在0n的n+1个数字中有且仅有一个数字不在该集合中,请找出这个数字。原创 2023-11-01 17:02:10 · 836 阅读 · 4 评论 -
【第七章作业】题解
定义一个包括年、月、日的结构体变量,读入年、月、日,计算该日在当年中是第几天。注意闰年问题。请写一个函数days实现计算,将读入的结构体变量传递给days函数,计算后将答案返回给main函数进行输出。原创 2023-11-01 15:25:09 · 318 阅读 · 0 评论 -
【第六章作业】题解
下面代码仅供借鉴,并不是唯一正解!有些同学的方法比我巧妙的多!原创 2023-10-31 22:19:41 · 495 阅读 · 1 评论 -
【题解 && 动态规划】 Colored Rectangles
乍一看我还以为是贪心!猫 想想感觉没问题但是局部最优并不能保证全局最优比如这组数据如果按照贪心的做法,答案是20*20*2但是其实答案是19*20*4因此这道题用贪心是不对的于是我们考虑dp可以观察到这道题的n非常小只有200这就暗示我们这道题可以用n3的做法去解决那么我们就可以这样设dp状态fijk表示用三个颜色分别用了前ijk个数,所能获得的最大价值如何转移呢?考虑一次可以取两个数也就是说可以取12,23,13。原创 2023-10-03 20:08:39 · 240 阅读 · 0 评论 -
【二分答案 && dp】 Bare Minimum Difference
进一步分析我们发现这道题我们只需要关注最小值和最大值,所以每个区间的和只要介于最小值和最大值之间就可以。如果从分割区间的方式出发,这道题很难进行维护,因为分割的方式多样,每一次不同的分割都会产生不同的结果。同时注意到分割区间至少分分割出两个区间,所以我们只需要把一个区间的可能性判掉就行了。但是我们并不需要求出具体的分割方式,我们只需要去检验当前分割方式是否可行即可。枚举所有可能得最小值,而后二分我们的答案,得出我们的最大值。我们注意到对于整个序列来说,子区间的个数最多只有。这样我们就得到了合法区间的范围。原创 2023-09-08 21:52:41 · 265 阅读 · 0 评论 -
【题解】 模拟赛2
假设商品价格为x两者比较一下大小即可。原创 2023-07-22 15:57:47 · 197 阅读 · 1 评论 -
【题解】 模拟赛3题解
利用一个变量记录目前连号的个数再用一个变量记录最多的个数如果满足ai==ai−11,那么连号个数+1否则连号个数重置为1边统计边记录最大值。原创 2023-07-19 15:30:40 · 384 阅读 · 0 评论 -
【题解】 模拟赛2 题解
假设商品价格为x两者比较一下大小即可。原创 2023-07-17 11:05:00 · 250 阅读 · 2 评论 -
【滨小之旅】模拟赛1 题解
陶陶家的院子里有一棵苹果树,每到秋天树上就会结出 n个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个 t厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知 n个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度h,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。原创 2023-07-14 09:49:37 · 331 阅读 · 0 评论 -
【题解】洛谷 P2824 排序
假的题目传送门[https://www.luogu.com.cn/problem/P2824]题目描述:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p9Seo1j8-1607157810430)(C:\Users\Stuedent\AppData\Roaming\Typora\typora-user-images\image-20201201210311044.png)]Solution乍一看这道题跟CF558E长得非常像,我们能否采用解决这道题的方法来解决这道题原创 2020-12-05 16:43:46 · 229 阅读 · 0 评论 -
【题解】Fox And Jumping
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GiKCKoVM-1607157569836)(C:\Users\Stuedent\AppData\Roaming\Typora\typora-user-images\image-20201031190305068.png)]根据某个(裴蜀)定理,有以下结论: ax+by=gcd(a,b),存在一组x,y使该式成立ax+by=gcd(a,b),存在原创 2020-12-05 16:39:58 · 198 阅读 · 0 评论 -
【题解】Special Segments of Permutation
题目传送门[https://www.luogu.com.cn/problem/CF1156E]题目描述:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yRMBnIjw-1607157537449)(C:\Users\Stuedent\AppData\Roaming\Typora\typora-user-images\image-20201130210314941.png)]这是一道询问区间个数的题目,我们自然而然地想到分治。仍然是两个部分:跨中点的贡献和不跨中点的贡原创 2020-12-05 16:39:25 · 195 阅读 · 0 评论 -
【题解】Clique Problem
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sid7dZtz-1607157503377)(C:\Users\Stuedent\AppData\Roaming\Typora\typora-user-images\image-20201103083203505.png)]Solution写这篇博客的主要原因还是这道题的模型转化还是挺常见也挺巧妙的。我们考虑这个等式:∣xi−xj∣≥wi+wj|x_i-x_j|≥w_i+w_j∣xi−xj∣≥wi+wj显然这个原创 2020-12-05 16:38:53 · 178 阅读 · 0 评论 -
【题解】CF739B Alyona and a tree
题目描述:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dM1R7HPn-1607157484643)(C:\Users\Stuedent\AppData\Roaming\Typora\typora-user-images\image-20201127211106195.png)]Solution一、O(n2)O(n^2)O(n2)暴力枚举每一个点,扫一遍她的子树,合法的点累加进答案。二、O(n2)O(n^2)O(n2)暴力我们换一个角度来打暴力考虑每一个点对原创 2020-12-05 16:38:19 · 194 阅读 · 0 评论 -
【题解】Tree Painting
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4T48Ds4J-1607157443676)(C:\Users\Stuedent\AppData\Roaming\Typora\typora-user-images\image-20201104103445848.png)]Solution我们先假定1号为根节点。首先我们设f[x]f[x]f[x]表示以xxx为根的子树的贡献。不难有:f[x]=siz[x]+∑y∈son(x)f[y]f[x]=siz[x]+\sum_{y原创 2020-12-05 16:37:48 · 270 阅读 · 0 评论 -
【题解】 洛谷 P5686 和积和
这道题大家应该都会O(n)O(n)O(n)的做法了,这里讲一下O(nlogn)O(nlogn)O(nlogn)的做法吧。首先这道题要我们求的是所有子区间的问题,我们自然而然的想到分治做法。对于不跨过中点的,我们递归处理。而重点就是讨论跨过重点的贡献。这里先把式子给化简一下。令suman=∑i=1na[i]suma_n=\sum_{i=1}^na[i]suman=∑i=1na[i],sumbnsumb_nsumbn同样我们需要求的: ∑i=1r∑j=ir(sumaj−suma原创 2020-12-03 15:23:21 · 754 阅读 · 0 评论 -
【斜率优化】 仓库建设
题目描述:SolutionSolutionSolution一、n3dpn^3dpn3dp设dp[i]dp[i]dp[i]表示在第iii个点设立仓库的最小代价。可以通过枚举前一个设置仓库的地方进行转移:dp[i]=min{dp[j]+∑k=j+1i(xi−xk)∗pk}dp[i]=min\{dp[j]+\sum_{k=j+1}^i(x_i-x_k)*p_k\}dp[i]=min{dp[j]+k=j+1∑i(xi−xk)∗pk}...原创 2020-09-26 11:09:39 · 173 阅读 · 0 评论 -
【博弈论&&建模】 Candy Piles
题目描述:SolutionSolutionSolution我们形象的理解一下去糖果的过程是怎么样的。首先,我们将原本无序的糖果排序一下变成有序的序列,这样子能够较好的处理取出石子最多这一操作,如下://这里借用一下atcoder的官方图片,以助于理解然后我们模拟一下取糖果的效果。如果是取走石子最多的一堆,实际上相当于消除最左边的一列:如果是给每堆石子都取走一个,那么就是消除最下面的一行:因此,我们将这样的操作形象理解之后可以发现,这样的操作要么是消除最左边的一列要么是消除最底下的一原创 2020-09-26 08:50:49 · 1250 阅读 · 2 评论 -
【题解 && dp】CF82D Two out of Three
题目传送门题目描述:SolutionSolutionSolution很容易发现一个性质:不管前面选取哪些人,一定会有一个人是剩下的不被选取的。因此我们设f[i][j]f[i][j]f[i][j]表示第iii次选取之后,剩下jjj时的最少能量。由于一次只能选择两个人,而每次前面只剩下一个人,所以选择第iii个人时,前三个人只能是(i∗2)(i*2)(i∗2),(i∗2+1)(i*2+1)(i∗2+1),(j)(j)(j),自己手玩很容易证明。因此我们就可以进行转移:因为一次选222个人,所原创 2020-09-18 16:32:40 · 405 阅读 · 0 评论 -
【边双 && 题解】 CF555E Case of Computer Network
题目传送门题目描述:Solution首先有一个很显然的结论:对于一个环内的点,一定是可以相互到达的。因此,我们进行拓展:在一个边双连通分量内的点一定是可以相互到达的,因为边双一定是一个环。于是就有了初步思路:将原图用边双进行缩点,从而得到一个树形结构。对于询问的两个点,如果他们在同一个边双中,那么一定可以到达,不用考虑。我们思考不在同一个边双里的情况,即树中的两个节点。如下图:我们发现,在树中,两个节点(x,y)(x,y)(x,y)想要相互到达,只有一种方案:x−>Lca−原创 2020-09-15 10:38:29 · 181 阅读 · 0 评论 -
【题解 && dp优化】 union
题目描述:Solution我们如果选了一段区间,那么这段区间一定需要包含至少kkk个数。我们设f[i]f[i]f[i]表示选到底i个数的最大权值。设maxx[i]=maxj=1i(f[j])maxx[i]=max_{j=1}^{i}(f[j])maxx[i]=maxj=1i(f[j])然后再有一个前缀和数组sumsu msum如果不选第iii个数:f[i]=f[i−1];f[i]=f[i-1];f[i]=f[i−1];如果选第i个数,很容易得到以下的dp式子:f[i]=max(maxx原创 2020-09-14 21:29:45 · 117 阅读 · 0 评论 -
【题解 && 区间dp】 Coloring Brackets
题目传送门题目描述:Solution我们考虑一对括号能够产生的贡献。设dp[l][r][i][j]dp[l][r][i][j]dp[l][r][i][j]表示当前区间为[l,r][l,r][l,r],第lll个括号的颜色为iii,第rrr个括号的颜色为jjj的方案数。(i,j∈[0,1,2]i,j\in [0,1,2]i,j∈[0,1,2])我们设mat[i]mat[i]mat[i]表示第iii个括号匹配到的右括号的位置(其中第iii个括号为左括号),这里我们需要用一个栈去操作:接着对于问原创 2020-09-14 20:32:46 · 184 阅读 · 0 评论 -
【线段树 && 题解】 Queries
题目传送门题目描述:SolutionSolutionSolution由于数据范围中xxx的最大值也就100010001000,很容易让我们想到一些位的操作。然后题目中的单点修改、区间查询又让我们很自然的想到了线段树。所以,我们可以开十棵线段树,一次存储每一位的异或情况。在线段树中我们设置以下变量:v0:当前区间中异或和为0的子区间的个数v_0:当前区间中异或和为0的子区间的个数v0:当前区间中异或和为0的子区间的个数v1:当前区间中异或和为1的子区间的个数v_1:当前区间中异或和为1的原创 2020-09-13 20:23:20 · 141 阅读 · 0 评论 -
【题解 && 图论建模】 航空管制
题目传送门题目描述:Solution看到第一个限制,我们就能想到连边。但是,我们如果建正图,很显然对于多个关系会难以处理。因此,我们考虑建反图。如果一个序列是好的,那么必然满足逆拓扑序。我们用堆来维护当前的拓扑序。如果当前点的最晚限制是k[i]k[i]k[i],那么在当前这个点之前一定要有n−k[i]n-k[i]n−k[i]个点。用小根堆维护n−k[i]n-k[i]n−k[i],对于第一问我们不断做拓扑序即可。考虑第二问将问题转化,对于当前数xxx,它所在的位置下标最小,就是在反图原创 2020-08-24 21:12:56 · 741 阅读 · 1 评论 -
【题解 && 树上启发式合并】算法杂交详解 Lomsat gelral
前言1、什么是树上启发式合并?Dsu on tree(树上启发式合并) 用来解决这样一类问题:统计树上一个节点的子树中具有某种特征的节点数。 例如例题中的子树 x 中颜色为 c 的个数。2、如何实现?我们借鉴树链剖分的思想,先对树进行树链剖分,处理出重儿子、轻儿子等数组。而后我们就需要用这些数组对暴力进行优化(就是启发式合并!)对于常规的套路,我们枚举到每一颗子树时,用桶暴力查询,查询完之后再暴力撤销,但是这样的时间复杂度显然不够优秀。考虑优化。我们处理到一棵子树以后,优先遍历轻儿子,然原创 2020-08-18 20:58:20 · 458 阅读 · 6 评论 -
【题解 && 线段树优化DP】Pillars
题目传送门题目描述:Solution我们根据做最长子序列最长子序列最长子序列时的经验设dpdpdp状态:f[i]f[i]f[i]表示匹配了前i−1i-1i−1个数,且第iii个数必须匹配的最大长度很容易得到以下的转移式:f[i]=maxj=1i−1f[j]+1 (∣a[i]−a[j]∣>=d)f[i] = max_{j=1}^{i-1}f[j]+1\ \ (|a[i]-a[j]|>=d)f[i]=maxj=1i−1f[j]+1 (∣a原创 2020-08-17 20:24:59 · 361 阅读 · 0 评论 -
【题解 && 巧妙的判环】 Cities Excursions
题目传送门题目描述:Solution首先,很显然的是将问题离线处理,然后每个点做一遍遍历,解答以当前点为起点的问题。我的第一反应是直接遍历,若遇到环全部退掉,没遍历到的就是-1.但是后来一想,如果环退出之后当前点可能还能到达其他点,我这样的方法就会有漏洞。所以我们不得不换一个思路。我们考虑什么样的点是-1第一种,就是到达当前点的点数小于KKK,毫无疑问不行。第二种,就是当前遍历到了一个环,由环上的点遍历出去的点都是-1,因为永远也无法到达。所以这道题的麻烦之处就在于第二种的点的遍原创 2020-08-13 20:55:24 · 128 阅读 · 1 评论 -
【贪心 && 题解】 Buy One, Get One Free
题目描述:Solution首先,我们将问题转化:最少化花钱数=最大化免费显卡数最少化花钱数 = 最大化免费显卡数最少化花钱数=最大化免费显卡数于是,我们将问题转化为如何求最大化的显卡数。由于相同之间的显卡不能互相转换(意思能理解吧),所以我们需要将同价值的显卡存放在一起,并记录数量。即一个二元组(价值,数量)(价值,数量)(价值,数量)由于购买了一个显卡之后,我们可以获得价格小于他的任意显卡,所以我们需要将显卡从大到小排序一遍。对于我们免费获得的显卡,我们用一个小根堆来维护。我们考虑第i原创 2020-07-23 20:33:45 · 521 阅读 · 1 评论 -
【题解 && “反悔式”贪心】 种树
题目描述:Solution首先有一个最初的想法:将点权从大到小排序,选择前k大的点累加。但是很显然,这个算法是很容易找到反例的。所以,我们一旦选择一个点,就可以新加一个点替换当前点,当前的点权就是a[next[x]]+a[last[x]]−a[x]a[next[x]] + a[last[x]] - a[x]a[next[x]]+a[last[x]]−a[x],即相当于一次反悔操作,不要当前点,而要他左右两边的点。这个操作,可以用堆 + 链表维护。那么为什么对于一个点,要么他左右两个点不选,原创 2020-07-20 21:29:46 · 413 阅读 · 0 评论 -
【题解 && 状态压缩】 混乱的数字
题目描述:一天,抽屉从鲍勃那里得到了 n 个不同的牌子,每个牌子上都写了一个数字 ai(牌子上的数字可以相同)。高兴的抽屉把这些牌子排成一排,但他并不想牌子显得混乱。具体来说,若任意两个相邻的牌子上的数字相差超过 K,这些牌子就会显得很混乱。那么,有多少种不同的排列方案使得这些牌子显得混乱呢?两种方案不同且仅当某个牌子的摆放位置不同。Solution(由于太久没写状压的题了。。今天写一篇博客巩固一下。。)数据范围中n最多是16,而这个题目又是一个放数问题,就很显然是一个状压了。设f[S][i]f原创 2020-07-19 20:48:17 · 213 阅读 · 0 评论 -
【题解】Codechef WEASELTX
题目描述:给你一棵 n 个节点的有根树(节点),以及每个节点 i 的初始权值 a[i] 。一次操作则是指将每个节点的权值变为以其为根的子树中所有节点的权值之异或和。维护 q 个询问,每个询问则是问 T 次操作之后,根节点的权值。Solution我们先考虑一条链中节点深度为ddd的点对根节点产生的贡献。我们一个节点一个节点向上考虑,如下图:我们不难发现,这个序列其实就是一个杨辉三角的序列,于是可以用组合数得到深度为ddd的点在xxx天的贡献:Cd−1d−1+x−1\\C_{d-1}^{d-原创 2020-07-18 20:57:34 · 341 阅读 · 0 评论 -
【中位数 && 题解 && 蓝书刷题】糖果传递
题目描述:有nnn个小朋友坐成一圈,每人有a[i]a[i]a[i]个糖果。每人只能给左右两人传递糖果,传递一个糖果代价为1,求使所有人获得均等糖果的最小代价。Solution这道题所要求的是想让每个数都平均,所以我们得求出这堆数的平均数pjpjpj这道题对于每一个人而言有两个方向的状态,这个很麻烦其实我们可以把方向就看见一条,用正负性表示我们设s[i]s[i]s[i]表示第i个人给了...原创 2019-11-02 21:08:59 · 336 阅读 · 0 评论 -
【题解 && 总结】 普转提七联测 Day2
T1:有趣的数小强作为OI圈爸爸级别的人物,有一天随手AK的ZROI的J转S模拟赛。AK完了的小强闲得无聊,于是随手在纸上面写了几个看上去非常有规律的数字,555655,24444,7787,110。他觉得这些数字非常的有趣,并开心地拍起了手。于是小强定义一个有趣的数为:对于一个正整数,对于其所有的数位,当且仅当它恰好有一位与其他位不同,则称这个数为有趣的数。比如:555655,24444...原创 2019-11-02 18:04:35 · 688 阅读 · 0 评论 -
【找规律 &&蓝书刷题】 The Pilots Brothers refrigerator
题目描述:给出4×4共16个门把手,改变一个门把手(打开或关闭)需要同时改变同行同列的门把手,当所有门把手都打开时才能打开门。+代表关,-代表开。Solution说实话,我刚开看到这道题的思路就是状压dp+最短路但后面想着,这个最短路莫得办法连边。。除非一张图连个16条边出去。但这很显然不现实。那么这时候我们就要思考一个问题:如何让一个’+‘变成’-’,并且让他同行同列的点不受影响?...原创 2019-11-01 21:03:09 · 93 阅读 · 0 评论