自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(205)
  • 收藏
  • 关注

原创 【codeforces】

题意:构造一个长度不超过 25 的序列,保证任意子集的和的集合为x∣1≤xkandkx≤n【不会解决空缺的问题,看了题解】思路:容易想到先构造1k的。接下来塞入k1,这样会形成类似12⋯k−1kk1⋯2k2k1⋯2kk2kk1...。此时注意到空缺需要填充,我们可以添加一个,这样第一个空缺可以由k12k来填充。

2024-07-09 22:01:59 677

原创 【1800】【5.29-5.30】

思路:注意处理 case。首先容易想到二分思路,但长度大于 1 的话,可能会出现全相等导致不能合并的情况。并注意到性质:如果区间并不全相等,那么一定可以合并为一个。然后发现,分过的组如何摆放,异或都是 0。,发现可以根据末尾的 4 个 0 分组(即每相邻 16 个分一组),然后填充到。,剩下的问号换为 0 (即尽量满足 0 的限制)。的区间完全包裹的话,那么一定交到了下降部分,满足限制。,对每个当前区间为 1 的限制覆盖一下,即。思路:枚举 01 边界,并作出最优决策。思路:憋了半天写出来的。

2024-05-30 22:07:11 762

原创 【1800】【5.22-5.24】

只考虑长度为偶数的局面,即 a 面对的局面。先考虑 a 是否有策略能赢,否则考虑是否有策略能平手,否则就输了。否则,都拆为孤立点,然后随便连上两个点即可。考虑如何重复利用使得 lis 交集更大,可以先构造一个 lis ,如果要继续增加。这样的话就相当于把 u 的二进制 1 向高位移动,1 的数量不会增多。个序列的末尾值是多少,并降序排序(方便新增加序列)。贪心的找到第一个序列,然后放下当前增量的字符。个lis,那么利用原 lis 的一个后缀即可。还有贪心的思路,类似二分求lis,维护一个序列。

2024-05-30 21:50:29 938

原创 【1600】

思路:巧妙的构造题。这题从结果开始思考,什么情况会使得和最大?然后思考如何构造这个状态。自己写的时候构造方法很简单,导致不是最优解。首先,我们每天从列表中任意选择一位朋友。在这种情况下,最多有一个朋友的游戏次数会超过。思路:先考虑,只操作不会让 iq 降低的操作。然后如何操作降 iq 的操作?,假设有一种操作方案,那么放在最后一定不会更差。知道了这个性质,就好构造了。思路:关键点在于这个。

2024-05-24 16:16:48 232

原创 【24.6】

对与 2,需要判断直线和圆是否相离(我的板子中仍然是浮点型),先用叉积算出四边形面积,然后除以底边得到高。思路:我的板子中的圆是浮点类型的,为了排除精度误差的问题,需要使用整形,然后自己写各种判断方法。思路:容易知道最重要形成一个类似于循环体 / 循环矩阵的结构,一共有 12 种。corner case :当矩阵长宽为 2 时,还存在另几种结构,详见题解。思路:同样要考虑决策点(最大值、最小值),不过这次没有踩坑。在上题解中,排除掉各种 case 之后,剩下。思路:太麻烦了不写,详见上题解。

2024-05-04 21:15:02 396

原创 【24.5】

思路:我先想的是 kmp自动机解法,但麻烦。看题解了解了此思路:只有"mygo",“m_ygo”,“my_go”,“myg_o”,“m_y_go”,“m_yg_o”,“my_g_o”,"m_y_g_o"这 8 种子串可以通过删除得到"mygo"子串。容易知道如果有解,那么最后不存在逆序对。,容易知道答案上界为 2。首先排除掉 n 为奇数时的末尾值,考虑答案上界,为。接下来,剩余的后缀是一定可以衔接上的,因为。是一定被前边的节点选上的,而不存在任何限制。这样的话,枚举操作一的次数,然后完全背包即可。

2024-05-04 20:59:12 339

原创 【24.4】

在这道题踩了结构体套 vector的坑,这样常数会很大,一度导致超时,优化了其他部分的常数才卡线通过。前者初始化不是很方便,需要在定义时使用花括号初始化,否则需要枚举赋值;思路:对每一行,从左到右枚举右腰,同时用树状数组维护前缀中还存活着的左腰。正确写法:对于这种长度固定的矩阵,最好使用静态的结构,比如结构体套静态数组或。发现这样需要维护两个变量,干脆修改定义为匹配最多一组,当。维护出了当前存活的左腰,对于右腰,与其能匹配上的左腰区间为。中匹配了若干组的最大值,且当前匹配到了第。,在树状数组中查询。

2024-05-04 19:26:23 517

原创 【24.2】【24.3】

思路:考虑获得最大子段和的过程:若干个元素右移,若干个元素左移,且两者之间是前者在左后者在右,有分界点。然后这样的话,可以考虑维护每一个前缀和后缀的相关值。在这道题学习了一下新的方法,时间复杂度优化了一个 log 且代码不再使用最短路算法使其更短。先套路的排序,然后枚举序列右端点,查询前缀中有哪些元素异或起来小于等于 k。那么每个区间都有连续若干长度的最低位是可以任意的,那么区间可以表示为。,括号表示枚举的是哪一位,然后用 01trie 查询即可。hard版本是区间最大子段和的类似版,但写起来很麻烦。

2024-05-04 19:04:03 801

原创 【24.1】

一般处理方法是一边拓扑排序一边递推dp(如果是特殊要求的题需要处理出环上结点然后依次dfs)。不过这道题非环结点对答案无影响,所以拓扑完只用关注环上结点即可。在这道题中,每个区间显然是以区间中的最大值作为背包上界最优,因此枚举区间上界,然后判断体积是否为上界的子集。思路:第二类斯特林数字。这题用到的是博客中的【模型5:斯特林子集数】。思路:二分答案,考虑另一个人的可能位置,用set维护。,如果是 set 代表的人走过去,那么。思路:按照数据级别进行分治。思路:在这道题学了一个trick。

2024-05-04 18:31:20 270

原创 【22.4】【22.5】【22.6】

对lazy进行区间查询的话,和智乃的模数方程类似:因为是循环,所以可以加速处理。接下来我的思路是单调栈处理,然后连边建树,不断倍增。因为数组分割有连续性,跳父亲也有连续性,可以直接在单调栈上二分。,因此需要使用到拓展欧拉定理。为左端点,右端点的最大值。思路太麻烦了见题解。维护前缀中的信息即可。

2024-04-20 20:50:20 672

原创 【22.1】【22.2】【22.3】

思路:枚举状态变化的关键点,然后转化为若干区间选点的最小值。在这道题研究了一下如何推不等式。思路:贪心,从结果状态考虑如何贪心的利用边来降低结果。刚开始还往启发式合并思考。思路:因此题了解了平衡树。还原的话可以按照bfs序(原地bfs)进行依次还原。表示初始分数对3区域为i时,进行完该段比赛后的增幅。思路:从大到小枚举值域进行 dp,数据结构优化。思路:我用的三维dp,官方用的四维。思路:利用类似前缀和思路。是循环的,可以求得一段的贡献。思路:线段树,处理出每一段的。思路:dp的逆问题。

2024-04-20 20:36:53 526

原创 【21.4】【21.5】

从时间倒序上看,相当于对未染色的区域染色。方法很多,我用的并查集,每个点从左向右连父亲,表示第一个未被染色的点。思路:枚举时间,维护两个计数器表示二人在当前时间之前一共要杀的怪物最后的时间(这个处理值得学习)。思路:二分中位数,转化成判断是否有01路径使得路径和大于等于1。然后这种路径要么有11,要么是01交替的。如果是边更多的图,可以考虑从大到小按边权枚举边,限制是每个连通图最多为基环树。思路:转化为图论(不要往二分图考虑),即每个点选一条边配对。思路:状压然后最大最小记忆化搜索。

2024-04-20 20:11:07 219

原创 【21. 1】【21. 2】【21. 3】

思路:每次找到区间内的最大值作为分割,然后分治。之中的一个,大概是枚举常数个就可以得到互质对。思路:树上点两两配对,典中典思路。之间连边 ,那么形成一个长度为。对于这道题,不完全按照这个结论。使得两两互质,容易知道。

2024-04-20 19:38:05 554

原创 【4.5】

对于此题,相当于只能 01 元素才能交换。对于 01 环可以单独解决,对于 0 环和 1 环可以配对解决。,选择两个点进行交换(等价于数组上对应位置的元素交换),则拆分为两个环。不考虑元素限制,相当于置换环上的交换。优化思路类似于【智乃想考一道完全背包】。对每个查询区间,问有多少个节点区间满足。中有多少个点的子树里没有特殊点。典题,多次整体修改,把所有的。的,考虑如何枚举以达到优化。环长和不变,但是环数变多。此题关键是末端铺平,并利用。来保证时间复杂度的线性。朴素区间 DP 时间是。

2024-04-05 17:08:55 449

原创 【cache】卡常

来源于《国家集训队2024论文集》中的《论现代硬件上的常数优化》

2024-04-03 22:03:48 155

原创 【3.31】

三个知识点:支持 O1 反转的双端队列,整体打lazy标记,时间戳在lazy上的应用。看作一个虚拟物品,体积和价值为区间的体积和与价值和。该题涉及到的lazy标记是 1. 整体乘 2. 整体加。当塞入一个数字时,队列中其他数字都有lazy。此时可以逆向打lazy,即。,这样新数字的lazy就与整体的一致了。思路:虚拟物品的思路。用贪心去一下重的话是。思路:还是 DP。

2024-03-31 18:45:13 775

原创 【3.30】

这道题是判断存在性。判断可以找是否存在实例,或者不存在实例。本题是判断不存在实例(正难则反)。

2024-03-30 22:17:05 635

原创 CSDN竞赛第49期题解

三、以字符串的形式给你一个长度为 M 的整数 N,请你计算出对这个数进行一次操作后模 9 的值为 1 的所有可能的不同操作 方式。在一次操作中, 我们可以选择 N 的一个数位 N[i],并把它替换成另一个不同的 0 到 9 范围之内的数 B,两种操作 方式不同当且仅当它们选择的 i 或 B 不同。小海豚喜欢打游戏,现在它在操纵游戏人物小C逃脱废弃的隧道,逃生装置在小C的前方 X 米远的位置。但是游戏机只有 两个按钮:前进和后退,按前进,小C会前进 m 米,按后退,小C会后退 n 米。典型的属性背包题目。

2023-05-06 09:19:12 1231 1

原创 CSDN 编程竞赛四十六期题解

思路:通过找规律可以知道,在周期第一个位置的数的下标都有一个规律:除以三的余数为 1。因此可以开一个长度为 3 的总和数组,以原下标的余数作为总和数组的下标,用来记录总和。+ 2 * 交点数(因为 n 为奇数,所以任意线段交点一定不会重合,每一个交点会使两个线段分割为四个线段),根据以上条件就能得到面数(记得要把外面那个无限的面去掉)。点即线段的两个端点或者射线的一个端点,线即线段或射线或直线,面即被线分割成的不同平面。思路:可以发现不管如何旋转,对于最小值都是无影响的,因此求一下数组的最小值即可。

2023-04-21 16:12:37 1061

转载 【oiwiki-模拟退火】

模拟退火解决问题:求多峰 / 多谷函数的最值。需要满足条件:先用一句话概括:模拟退火时我们有三个参数:初始温度T0​,降温系数d,终止温度Tk​。其中T0​是一个比较大的数,d是一个非常接近1但是小于1的数,Tk​是一个接近0的正数。首先让温度TT0​,然后进行一次转移尝试,再让Td⋅T。当TTk​时模拟退火过程结束,当前最优解即为最终的最优解。注意为了使得解更为精确,我们通常不直接取当前解作为答案,而是在退火过程中维护遇到的所有解的最优值。

2023-04-14 10:28:10 199

原创 【双指针】寻找最远满足偏序关系元素

方法一:预处理前缀和最小值,然后枚举右端点,二分左端点。方法二:预处理前缀和最小值,后缀和最大值,双指针。单调栈解决的一种问题:寻找序列中每个元素。该文章解决问题:寻找。

2023-04-09 17:26:32 101

原创 GoLang 中访问 string 类型的 “字符” 时的类型区分

为什么要给 “字符” 打上双引号?因为 GoLang 中不存在字符这个数据类型。GoLang 源码里对于。

2023-03-25 20:11:27 65

原创 【11.25】【VP】 45 届 济南站

D 题 wa 了两发,每一发都要掉十几名几十名,有点哈人(思路:VP 时打了两个小时的表,最佳结果是只过了样例。定义 01 正方矩阵的叉乘和点乘。,但是能跑 706 ms ,估计是跑不满。个方程之后,高斯消元,得到自由元的数量。,问你有多少种同等大小的矩阵。该朴素思路时间复杂度为。

2022-11-26 11:43:36 464

原创 【11.12】Codeforces Round #833 (Div. 2)

这个问题可以用拓展中国剩余定理解决,详见。,求出来的特解不正确。问题可以转化为找到一个。列出不定方程,联立并用。的不定方程可以转化为。,求特解并偏移即可。

2022-11-25 11:37:11 339

原创 根号分治 + 入门题目

求最长的满足区间众数有至少两种的区间长度。如果不存在这样的区间,输出。的数字,枚举出现次数上界,然后双指针找最长子区间。种,按照 easy.ver 的思路即可。的询问,暴力即可,枚举的次数不超过。状态需要跳的步数,时空复杂度。

2022-11-24 14:25:27 505

原创 【11.23+11.24】Codeforces 刷题

,然后指定他们连向父节点的边并添加到边集中,如果有冲突,只选择一个。这样构造出来的边集数量最大,而且数量刚好等于奇数深度的节点数量。,你需要将这个序列拆分为两个子序列,使得子序列各自合并相邻相同元素之后的长度之和最大,输出最大值。结论:对于一颗奇数层的二叉树,最大边集可以这样构造:找到所有的深度为偶数的节点(根深度为。,现在要求这棵树上最多的边集,符合边两两之间均没有共同节点。最少赢多少次,不仅取决于 Bob 赢了多少次,还有平局的次数。问 Alice 最少赢多少次,最多赢多少次。

2022-11-24 10:51:49 254

原创 【11.17+11.22+11.23】Codeforces 刷题

当我们收集完一行的宝藏,我们就位于最左边或者最右边,然后走向最近的特殊列来进入下一行,那么一行就抽象出两个点。你的任务是收集所有的宝藏,但是你的时间已经不多了,所以你必须走最快的路径。现在你要使用你的人脑大法来计算出最快的路径需要多少时间(经过有宝藏的格子时收集宝藏不消耗时间,只有移动消耗时间)。条边的有向图,可能不连通,可能有重边,也可能会有自环。参加的比赛,比赛分为两种(具体种类由输入给出),一种的奖品是给你的背包增加。思路:枚举显示器的数量,对于满足数量要求的每个朋友,可以抽象为价值为。

2022-11-23 16:05:16 903

原创 【11.16】Codeforces 刷题

思路:注意到,一行或一列上,如果有连续两段或两段以上的黑色块,那么一定无解。这样的话,每一个连通块一定是凸集,而且可以视作它的最小包围矩阵。这样的话,每次从乱序序列拿出最大值,然后和已拿出的数字计算一下,抵消掉乱序序列的影响,划归为子问题。列的方格图,要在里面放一些单极磁铁,你可以随便放置,甚至把多个磁铁放在同一个格子里。思路:注意到,卷积的话,两个指针的方向是相反的。,顾名思义,就是只有一个磁极(N 或 S)的磁铁,,也就是两个数字产生的影响是小于两个数字的。,求最短的满足各只出现一次的连续公共字串。

2022-11-16 20:32:27 248

原创 【11.15】Codeforces 刷题

容易知道,一个人的策略是要么先右后左,要么先左后右。我们把第一个垃圾作为左边界,二分出来一个右边界,问这个人能把指针指向的这个垃圾清理掉,向右最远能走多远。这样能在这个人的最优策略下,把第一个垃圾清理掉,并尽可能向右走。人只要走到包装的位置,就会把包装吃掉,问你最少需要多少秒。先把有向边抽出来拓扑,得到一个拓扑序,在拓扑序上从左到右连接无向边即可。给定一个由有向边与无向边组成的图,现在需要你把所有的无向边变成有向边,使得形成的图中。实时维护第一个没有被清理的垃圾的位置,然后从左到右遍历每一个人。

2022-11-15 20:03:34 397

原创 【11.14】Codeforces 刷题

他采取这样一个策略:每次,假如队伍有至少两人,就会从前面的前三人(如果有)中选取两位一起收银,所花费的时间为这两人单独收银所需时间的最大值。要求从s中取出 m 个字符构成一个新的字符串a(不可重复取相同位置的字符),任意排列后,是其满足对于每一个 i 都有 a[i] 到 a 中 所有比它大的(即字典序比它大,如 b > a,z > x )的字符在字符串 a 中的距离之和为 b[i]思路:主要思路是,从字典序最大的向最小的填,填的位置可以一个一个推出来。,你需要选出一个子序列,使其价值最大,输出最大的价值。

2022-11-15 09:31:19 169

原创 【11.11】Codeforces 刷题

容易知道合并次数越少,末尾元素大小越小,因此这样优化是可以的。,否则输出两行,第一行是最少花费的天数,第二行是每一天分裂的细菌的数量。要你求出交换相邻元素的最少次数和满足交换相邻元素的次数最少的方案数。座),这样,新塔的高度为两座塔的和,完成操作后,塔的总数减少一座。思路:问题抽象为合并相邻元素,使得序列非递减,问合并的最小次数。座),用吊车把它吊起来,然后放到与它相邻的一座塔上(可以是第。当前的细菌数),两个细菌的质量皆为原来细菌的一半。,使得执行冒泡排序时,交换相邻元素的次数最少。

2022-11-11 15:06:04 279

原创 【11.9】Codeforces 刷题

次机会跳过这些陷阱,可以避免你所跳过的陷阱给你造成的伤害,不过接下来的所有陷阱都会给你多造成。如果不考虑跳跃之间的影响,跳过。的字符串,问有多少种方案使得将所有问号替换成0到9的数字后两个字符串是不可比的?规定士兵不能手动扔出豌豆,并且他必须捡起所到达的每一个格子的所有豌豆。个陷阱,你需要按照给出的顺序穿过这些陷阱,每个陷阱将会对你造成。思路:这种存在性的 DP ,可以将存在性与否另开一维,方便转移。请找到他可以收集到的最多豌豆,并确定他的操作序列。个陷阱,接下来的陷阱给你造成的伤害将会是。

2022-11-09 20:31:19 396

原创 【11.3】【VP】Codeforces Round #724 (Div. 2)

思路:没想到这一题原来是一道找性质的题,以为是 DP 之类的。这一题的性质就是,如果矩阵里存在。,否则可以是任意非负整数,求有多少种互不相同的方案使得这个网格是“好的”。思路:赛时猜的结论,一次加入两个数字,中位数最多移动一次。的数字也都是确定的。,你需要判断是否存在长度为。一定不满足要求,特判一下。仅当其满足对于任意整数。,我们定义一个长度为。里的数字,模拟即可。如果这个网格中为字符。

2022-11-03 20:55:30 181

原创 【11.3】【VP】Codeforces Round #726 (Div. 2)

一个有瑕疵的思路是,先后缀排序一下,找到最长的后缀。思路:策略就是,找到最长的一个后缀,去掉或者不去掉这个后缀之后,剩下的部分重复复制即可。如果有奇数环,那么一定有解,求解的策略为:在奇数环上顺次跑一边,一定可以使得某个点。记念第一次 AK div.2 ,这一场后几道题做起来比较顺手,而且是比较擅长的题。是最小的,如果复制一份,第二份就会又影响到字典序,因此要复制一份之后跑后缀排序。思路:赛时打表找的规律,不会证明。你可以随意的进行操作,也可以不进行操作。,二者轮流行动,每次行动可以在当前的。

2022-11-03 16:56:54 273

原创 【11.2】【VP】Codeforces Round #727 (Div. 2)

排序然后把连接不上的间隙提出来,从小到大填充。这一场前四题思维量不高,但是有的题写起来细节比较多。的顺序一定是从小到大依次满足的,因此按照。值最大的,增加物品数量来满足。

2022-11-02 18:00:36 277

原创 【11.2】【VP】Codeforces Round #728 (Div. 2)

我们可以思考用一个容器模拟这个取的过程,虽然这个过程中容器大小在变化,即取到一个点的概率是实时在变得,但是取到两个点方向的节点的概率是相等的。思路:如果不考虑连接负边,构建出来的一定是一棵树,要让树边权之和最小,即把最短路从小到大排序,然后连接成一条链即可,差分数组即为连接的边权。易知当连接成一条链时,上述两个贡献都是最小的,因此边权之和也是最小的。,计算该逆序对被选中的概率。如果要连接负边,我们考虑一棵树,要连接负边,一定是在原树上。,这样可以保证连接出来的正边和负边没有产生负环,一共是。

2022-11-02 16:10:25 430 2

原创 【11.1】【VP】Codeforces Round #729 (Div. 2)

要求只满足第一条式子的数字个数,整除一下即可。如果还需要满足第二个条件,容斥一下即可。在不改变原有顺序的情况下删除若干元素得到的。DP 方程及推导详见题解。提几个要注意的细节。的贡献次数,即出现在了多少个子序列中。思路:这是一道细节很多的 DP 题。中没有数,那么就不进行删除操作。中的元素,并且维护一个可重集。的最小非因子,那么一定有。个数的所有可重子集(包括。表示最小的正数满足不是。对于一个每个元素都形如。中的元素后,将可重集。

2022-11-02 10:48:58 380 1

原创 【11.1】【VP】Codeforces Round #730 (Div. 2)

的最大值,并求出至少需要多少次操作以获得这个最大值。思路:刚开始没敢写爆搜,开 D 开不出来之后写了爆搜居然能过(。这是本题的简单版本,简单版本和困难版本的区别在于。赛时直接猜的结论,要证明的话使用。,你应该处理下一组数据(如果有的话),如果。因为这样可以把之前询问的影响消除掉。那么本组数据交互正确结束,交互器会输入。,同时交互器有一个你不知道的整数。每次猜测你需要输出整数。求一下期望即可,搜索大概。的数据范围,在简单版本中。思路:赛时猜的结论,输出。可以变成无限大,输出。求出经过若干次操作后。

2022-11-01 17:08:30 188

原创 【10.31】【VP】Codeforces Round #732 (Div. 2)

思路:每一个数字会被交换偶数次,同一种数字会被换到同一片连续的区域。那么一个数字被交换偶数次,意味着起点与终点的下标距离也是偶数。您可以对这些人做一些“操作”,每次操作允许您找两个相邻的人让他们交换顺序,但是在操作之后,两人都会掉头,也就是朝向都从朝右变成朝左或者相反。现在将给出一个棋盘的初始状态,求可以通过上述操作可以到达的状态数,你可以进行任意次操作,答案对。(赛时没有统计奇偶下标个数,而是统计同一种数字的下标之和,最后成功 WA38(的移动而移动的,且状态只取决于有多少个。个位置非空,则可以将第。

2022-11-01 15:38:45 230

原创 【10.30】【VP】Codeforces Round #735 (Div. 2)

那么我们可以用另一个字符隔开这两个字符串,这样包含包含另一字符的子串肯定只出现一次。思路:赛时想了半天,最后猜了暴力一下就过了。的两个单字符串,本质不同子串出现次数都是奇数,那么找到最大的。从高位到低位贪心,如果该位相等,则跳过不考虑;的由小写字母构成的字符串,使得字符串内每个字串出现奇数次。思路:手玩一下样例,可以发现,对于长度为。为偶数,如为奇数再加一个另一字符即可。,那么从这一位可以知道此时必然。,由于异或的性质,即等价于。接下来思路是二进制上贪心。,找到最小的非负整数。,直接跳出循环即可。

2022-10-31 10:54:36 143

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除