题解
文章平均质量分 94
讲题专栏
心情想要飞
这个作者很懒,什么都没留下…
展开
-
洛谷P4778 计数交换 Counting swaps
文章目录原题链接题目分析尝试在图中操作性质的证明初步的dp超时的处理最后的问题:寻找环题目代码原题链接洛谷 P4778AcWing 212题目分析虽然要求的是方案数,但是最好还是先把至少需要几步弄好了再说。题目中每一个点都要到另一个点,不妨给这两个点连一条边。现在我给出一下样例:6:2 1 3 5 6 46:2 1 3 5 6 46:2 1 3 5 6 4我们会得到如下图:请注意,其中结点333是自环。不难发现,每一个连通块都一定是一个简单环,因为每个点都只有一个出度、一个入度。我们的目标就是通原创 2020-11-29 18:34:27 · 406 阅读 · 0 评论 -
专辑:主席树(洛谷P3834)
文章目录一个问题前言与可持久化线段树的区别线段树上第kkk小深度的思考回到原题原题代码一个问题点我前言我惊呆了!这竟然只算一个“模板”QwQQwQQwQ(我太弱了?)。正常的主席树模板应该是求序列前缀的第kkk大(小)数,而不是区间的。所以我们进入这个题之前先看看主席树正常怎么做。与可持久化线段树的区别请千万不要把这两个概念搞混了!虽然主席树的名字是乱起的,但是它是“基于权值线段树的可持久化线段树”,而并不是纯粹的可持久化线段树。主席树可以解决的问题都是关于求可持久化的排名(和平衡树有些相似),原创 2020-11-21 19:26:21 · 311 阅读 · 0 评论 -
AcWing 206 石头游戏
文章目录原题链接题目分析如何套倍增如何套矩阵乘法回到倍增题目代码原题链接AcWing 206题目分析我们发现,如果暴力来做这个题就必须一个一个时间来枚举。所以本题的时间瓶颈在于1≤t≤1081\le t\le 10^81≤t≤108。因为这个数字太大了,所以只能Θ(n)\Theta(\sqrt n)Θ(n)或Θ(logn)\Theta(\log n)Θ(logn)解决,很容易想到倍增。如何套倍增我们可以把整个问题想成一个图,则操作二就是把某个点全部的权流到另一个点去。那么操作一呢?我们可以设原创 2020-11-28 22:42:39 · 326 阅读 · 0 评论 -
AcWing 202 最幸运的数字
文章目录原题链接题目分析式子的化简无解的判断寻找第一个解寻找最优解解题代码原题链接AcWing 202题目分析看到题目,一点思路都没有。但是至少可以肯定的是,这只能是数学了。数学题怎么办?先把题目的文字描述改成数字的描述:L∣888...88L\mid888...88L∣888...88还是没有思路?再把888...88888...88888...88表示出来:L∣8×999...999L\mid8\times\cfrac{999...99}{9}L∣8×9999...99啊,又有一个999...原创 2020-11-28 14:00:14 · 1166 阅读 · 0 评论 -
CodeForces1108F MST Unification
原题链接洛谷的CF的VJ的题目描述QwQ又是被洛谷翻译按在地上摩擦的一天。。。直接引用给定一个有n个点,m条边的无向连通图,每条边有边权。 定义一次操作为:选择一条图中的边,并将其权值+1。试求最小的操作次数,使得操作后的图的最小生成树是唯一的。解题思路法一这种和最小生成树有关的题,无非就是上来先求一下最小生成树,然后再仔细钻研最小生成树的性质怎么套上来。我们得到了一个最小生成树,考虑加上一条非树边之后会如何。加上一条边后会组成一个环,根据最小生成树的性质(在这里就不详细证明了),我们原创 2020-10-30 17:40:48 · 132 阅读 · 0 评论 -
NOI Online #3 提高组 T3 优秀子序列
原题链接简洁题意要求从AAA选出子集BBB使得BBB中没有两个数按位与等于000。每个子集BBB的价值是集合内所有数的和加一的ϕ\phiϕ值。求所有子集BBB的价值之和。分析可以思考,因为要知道所有的集合BBB不容易,所以考虑计算价值相同的BBB的个数。设fif_ifi表示所有值为iii的子集BBB的数量,我们算出fif_ifi后乘上phii+1phi_{i+1}phii+1就是这个方案的价值和,把每个价值和加在一起就是答案。考虑怎么计算这个fff,我们可以把fff拆成两部分,然后一部分直接用原创 2020-10-19 18:38:29 · 209 阅读 · 2 评论 -
CodeForces1325E Ehab‘s REAL Number Theory Problem
原题链接洛谷的CF的VJ的题目描述我没办法写出更短的意思了QwQ,洛谷太强了Orz。在此只能引用:给一些数,每个的因数个数不超过777,求最少选出多少个,使得乘积为完全平方。无解输出−1-1−1。解题思路有两个突破点,否则你推死也退不出来。先把每个数分解质因数。如果某个质因数的次数是偶数那么就忽略,因为平方数每个质因数的次数就是偶数,反之就要去寻找哪个其他的数的质因数的次数也是奇数,两个一乘就变成偶数了。但是数的个数太多了,如果枚举肯定TLETLETLE。那么我们就上第一个突破点:最原创 2020-10-18 17:57:21 · 177 阅读 · 0 评论 -
Codeforces1322D Reality Show
原题链接洛谷的CF的VJ的题目描述有一堆选手,从左到右枚举每个人,当枚举到iii时可以让他上场表演获得clic_{l_i}cli的表演费,花费sis_isi。此时,如果场上有两个人iii和jjj,使得li==ljl_i==l_jli==lj,那么他俩会打一架,一个人被打死,另一个人晋一级并再表演一次,收益自然也是cli+1c_{l_i+1}cli+1,没有花费。要求选出来的选手lil_ili不上升。好像又啰嗦了解题思路先康康数据范围:The first line cont原创 2020-10-17 20:07:01 · 186 阅读 · 0 评论 -
Codefoces1202E You Are Given Some Strings...
原题连接洛谷的CF的VJ的问题描述给定出一大堆字符串,要求任意两个字符串拼在一起在ttt串中出现的个数之和。有多任意呢?只要满足这两个字符串都是这一大堆的字符串中的就行(拼起来一样的两组算两个,同一个字符串也可以拼起来)。说实话,我这概括的描述比洛谷的描述还多解决问题看到一大堆字符串要匹配,二话不说,先看漏要两个字符串拼在一起的条件,跑一遍ACACAC自动机。那么两个字符串拼到一起呢?反着跑一遍再接上不就行了嘛。怎么接上呢?记录正着匹配和反着匹配在iii结束匹配的数量,那就是小学数学——乘法原创 2020-10-15 16:28:00 · 190 阅读 · 0 评论 -
NOI Online #2 提高组 T2 子序列问题
原题链接简洁题意求一个序列的任意一个子序列组成的集合大小之和(集合过滤重复元素)。分析:这个题可以思考,要想某一个数有贡献,当且仅当它是该集合第一个出现的数。所以,可以统计一下上一个出现的位置,iii到这个位置后面都能有贡献。用ddd数组存每个aia_iai上一次出现的位置。因为aaa有点大,数组存不下,可以考虑mapmapmap或者离散化。现在,设g(r)=∑l=1rf(l,r)2g(r)=\displaystyle\sum_{l=1}^r f(l,r)^2g(r)=l=1∑rf(l,r)2原创 2020-09-26 19:54:34 · 175 阅读 · 0 评论 -
NOI Online #2 入门组 T3 建设城市
原题链接简洁题意:给定一个nnn,构造一个每个数都不大于mmm,nnn左边不下降,右边不上升,nnn最大且ax=aya_x=a_yax=ay的序列。分析:这个题可以发现,如果没有ax=aya_x=a_yax=ay的要求就是分成左右两边,mmm种高度看成盒子,要把nnn个楼放进去。可以给每个盒子手动放一个球,就变成了插板法:Cn+m−1m−1C_{n+m-1}^{m-1}Cn+m−1m−1...原创 2020-09-26 18:15:00 · 137 阅读 · 2 评论 -
NOI Online #2 入门组 T2 荆轲刺秦王
原题链接简洁题意:从SSS到TTT,单位时间可以走格子周围的八个格子,有些格子不能走,这些格子周围距离小于等于a(i,j)a(i,j)a(i,j)的格子只能用一次技能一才能走。每个时刻可以用技能二,单位时间向上下左右走ddd格。问最快多久,若多种方案则希望技能用得少,技能用的一样多则希望少用技能一,无解输出−1-1−1,反之输出时间和各个技能用的数量。分析:数据范围不大,可以用bfsbfsbfs,直到答案大于当前答案或者不能走就停止,到达TTT后对比答案并更新,周围能观察到的点就搜索覆盖。但是这样仍原创 2020-09-26 14:24:54 · 160 阅读 · 0 评论 -
NOI Online #1 入门组 T3 魔法
原题链接简洁题意求一个最短路,可以把中间至多kkk条道路的权改成负的。分析:可以发现,本题nnn的范围很小,可以用floydfloydfloyd来做。floydfloydfloyd求一边最短路,d(i,j)=min(d(i,k)+d(k,j))d(i,j)=\min(d(i,k)+d(k,j))d(i,j)=min(d(i,k)+d(k,j)),我们求出最短路后,考虑加上魔法。设f(i,j,p)f(i,j,p)f(i,j,p)为iii到jjj使用ppp次魔法的最短路。可以把一条道路改成负的,那么就原创 2020-09-26 14:04:55 · 149 阅读 · 0 评论 -
NOI Online #1 入门组 T2 跑步
PS:我真的想喷一下,这NOI Online提高组全是蓝题,入门组还有两个都是紫题QwQ原题链接简洁题意:构造一个非严格单调递减的序列使得和等于nnn,要求方案数。两个序列不一样就是不同的方案。分析:因为要求单调递减,则可以设一个当前分的数iii,从111到nnn。于是我们可以给每一种结束时间分配一个最后一次是这个时间的方案。设djd_jdj为jjj结束的方案,dj=dj+dj−id_j=d_j+d_{j-i}dj=dj+dj−i,这样就808080分了。说实话,考试的时候这样就够了,虽原创 2020-09-26 11:41:07 · 224 阅读 · 0 评论 -
NOI Online #1 提高组 T3 最小环
原题链接简洁题意:一个环上有数字,给定一个距离kkk,构造一个序列使∑i=1n(ai×ai+k)\sum^{n}_{i=1}(a_i\times a_{i+k})∑i=1n(ai×ai+k)最大。这里指的是环上加减。分析:这个题很容易想到一个策略,把两个大的相乘很明显更划算。于是能想到由111开始bfsbfsbfs,扩展出来左右两边的数,从大到小放数字。但这样很容易出现一个问题:有些永远不可能搜到!比如题目中的样例,k=3k=3k=3的情况就有一半会搜不到。有一种解决方法:标记每一位,像tar原创 2020-09-26 10:45:51 · 123 阅读 · 0 评论 -
NOI Online #1 提高组 T1 序列
原题连接简洁描述:一个数列有两种操作,一是两个数同时加或减一个数,二是两个数一个加一个减,求能不能从序列aaa变成序列bbb分析:这个题目可以发现如果两个数被赋予了操作二,则两个数可以互帮互助,可以组成和为au+ava_u+a_vau+av的任意一个组合。这时候只要bu+bvb_u+b_vbu+bv等于au+ava_u+a_vau+av即可。那么如果是操作一呢?我们可以发现,如果有两个操作一(u,v)(u,v)(u,v)和(v,k)(v,k)(v,k),则把第一个进行操作,第二个做第一原创 2020-09-25 20:18:13 · 323 阅读 · 0 评论 -
NOI Online #1 提高组 T2 冒泡排序
原题链接简洁描述:对一个序列给定两种操作,交换两个相邻的数,求经过kkk轮冒泡排序后逆序对个数。一轮冒泡排序指的是冒泡排序内层循环执行一遍。20pts:直接每次暴力交换即可。如果遇到查询就执行kkk轮冒泡排序最后暴力求逆序对即可。40pts:每次求逆序对用合并排序即可。60pts:不知道怎么做QAQ100pts:可以发现,一个数能进行交换,当且仅当前面没有比它大的数。而且每轮前面比它大的数都会少111,因为前面有且仅有一个最大的数到它的后面,因为其他较大且能交换的数一定遇到这个最大的数停原创 2020-09-25 18:23:03 · 147 阅读 · 0 评论