自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 arc207c - Combine to Make Non-decreasing

本文提出了一种动态规划结合RMQ的优化方法,用于解决给定序列通过相邻元素按位或操作后变为非递减序列时的最大长度问题。首先预处理区间按位或结果,利用按位或的单调性和二进制特性,将状态转移的复杂度从O(A_i)降至O(log max(A_i))。通过维护每个位置向前所有可能的按位或和,实现高效状态转移,最终在O(n log n)时间内求解。该方法有效处理了大规模数据约束,适用于N≤2×10^5的情况。

2026-01-02 00:23:58 970

原创 div1+2. 2180D - Insolvable Disks

摘要:本文讨论了一个贪心算法的最优性证明问题。作者分享了比赛时的代码实现,通过维护当前可行取值范围来解决问题,但意识到可能存在hack情况。同时提到官方题解采用更优雅的方法,通过假设变量并分析限制条件来追溯初始取值的合法性。两种解法形成对比,展示了不同思路的解题路径。

2026-01-02 00:19:31 409

原创 div1+2. 2180C - XOR-factorization

文章摘要: 本文提出了一种基于位运算的XOR分解方法,将整数n分解为k个数字的序列,要求这些数字的异或结果等于n,同时最大化它们的总和。对于奇数k,最优解是全部取n;对于偶数k,采用贪心策略从最高位开始处理:若当前位为1,则尽可能分配1给多个数字;若为0,则选择偶数个数字填充1以保持异或性质。该方法保证了分解的存在性和总和的最大化,适用于大范围输入(n≤10^9,k≤10^5)。代码实现通过位运算高效处理每个测试用例,确保在约束条件下快速求解。

2026-01-02 00:15:27 937

原创 div1+2. 2178F - Conquer or of Forest

摘要 本文探讨了如何通过特定操作将有根树转换为满足特定条件的“征服树”。给定一棵装饰性着色的有根树,操作允许选择非根白色顶点,断开其与父节点的边并重新连接,同时重新着色树。目标是计算满足以下任一条件的树的数量:(1) 无白色顶点;(2) 所有白色顶点位于根到某顶点的路径上。关键观察是,断开白色顶点与父节点的边后,子树形态成为不变量。因此,所有可能的征服树数量仅取决于初始白色顶点的子树结构。最终答案通过组合数学计算,并对结果取模。

2026-01-02 00:08:05 772

原创 div1+2. 2178E - Flatten or Concatenate

摘要 本题要求通过最多300次区间和查询,确定一个隐藏数组中的最大元素。数组由初始的单个元素$2^k$经过两种操作生成:摊平操作(将最大偶数元素分成两半)和连接操作(数组拼接)。关键思路是: 所有连接操作可视为对初始数组的翻倍,不影响最大元素值。 摊平操作会将最大元素不断减半,因此最大元素必定是初始值$2^r$或其分半后的某个值。 通过查询整个数组的和可以确定初始值$2^r$(因为总和不变)。 使用分治策略,通过比较区间和定位最大元素的位置。 该方法高效利用了操作性质,确保在有限查询次数内找到解。

2026-01-02 00:05:32 683

原创 arc206d - LIS ∩ LDS

本文探讨了如何构造一个排列,使其恰好包含K个同时存在于最长上升子序列(LIS)和最长下降子序列(LDS)中的"好元素"。通过分类讨论和构造方法,提出了三种情况的解决方案:当K>1时,将前K个元素降序排列,其余元素升序排列;当K=1时,需根据N的大小采用特殊构造;当K=0时,仅当N≥8时存在可行构造。对于不满足条件的N和K组合,判定为无解。该方法通过试错确定了边界条件,并提供了相应的构造方案。

2026-01-01 23:55:47 631

原创 arc205d - Non-Ancestor Matching

摘要:题目要求在一棵有根树中,通过选择满足条件的白色节点对(u,v)(u不是v的祖先)进行染色,求最多能执行的操作次数。采用贪心策略,递归处理子树,确保重儿子子树的大小不超过其余子树和加上传递值。若满足条件则直接计算,否则继续递归处理重儿子子树。时间复杂度为O(N),适用于大规模数据。

2026-01-01 23:54:56 938

原创 2023辽宁省赛E

题目大致分为三个步骤PS接下来过程中不合法的组合数都默认为0。

2023-10-29 14:00:00 1353 1

原创 cf1856d - More Wrong

一个数是最大的充要条件是 , 它和前面的逆序对为 0 , 和后面的逆序对为长度。但是代价远远超出限制 , 想办法优化 , 而求最大值是一个 RMQ 模型。所以可以得到一个最基础的算法 , 对每一个数四次算出前后逆序对数。交互题 , 首先观察交互操作与待求值之间的联系.由上述最大值的充要条件可以得到 , 只要。层进行到第 2 层 , 所以总复杂度为。之间的大小关系 , 就知道了。每一块进行一次向上合并的代价为。考虑复杂度 , 分治过程有。, 那么一层的代价就是。, 分治过程就可以继续。这一段的逆序对个数为。

2023-08-07 11:34:28 375

原创 cf1854b - Earn or Unlock

张卡牌按顺序从上到下摆放 , 初始时第一张已经解锁 , 其他的未解锁 , 每张卡牌上有一个值。下 , 解锁卡片的数量加上获得的点数应该是一个定值 , 这个定值就是前。游戏按轮次进行. 每一轮 , 你需要选定一张解锁的卡牌 , 其值为。复杂度并没有直观的下降 , 但有一点不同了 , dp 的值现在是。) 如果知道了解锁卡片的数量 , 那么就可以算出获得的点数。那一维可以删掉 , 这样就是一个 0/1 背包的形态.这类直接操作有着后效性的题的入手点 : dp .最后 , 如果假设解锁卡片的数量为。

2023-07-30 11:58:25 518 2

原创 AcmHelper -运行在本地的Acm帮手

本地环境下的 Polygon , 但不止于 Polygon.

2022-10-25 21:18:10 1050 1

原创 CF1719 --- Codeforces Round #814 (Div. 2)

的循环节 , 显然 , 这两段一定有一个大小关系 , 不妨假设前面的一半点的和大于后面一半点的和 , 那么我们只会选择前面的一半 , 也就是在假设下 , 选择从。产生的贡献的最大值 , 这告诉我们如果一个长度的倍数在集合中 , 那么枚举他就没有意义 , 为了简化思路 , 对于长度。, 再观察式子 , 可以发现最后所有的长度的循环一定都是一个完整的最小循环重复若干遍 , 所以对于初始的。, 所以每一次修改的复杂度为循环节长度的集合的大小 , 但是问题出现在。的质因数即可 , 那么循环节长度集合的个数就是。

2022-08-25 02:48:56 511 1

原创 CF1720 --- Codeforces Round #815 (Div. 2)

CF1720 --- Codeforces Round #815 (Div. 2)

2022-08-20 04:06:04 377

原创 CF1657 --- Educational Codeforces Round 125 (Rated for Div. 2)

A. Integer MovesTutorial如果在原点 , 需要 0 步如果距离是整数 , 需要 1 步注意到沿对角线和沿直线移动只需要一步所以最多只需要 2 步Code#include <bits/stdc++.h>using namespace std;std::mt19937 rng(std::random_device{}());typedef long double ld;typedef long long ll;typedef unsigned long

2022-03-26 11:33:50 585

原创 Educational Codeforces Round 118 (Rated for Div. 2)

Educational Codeforces Round 118 (Rated for Div. 2)A模拟 , 显然 ppp 之差大于 10 肯定是 0#include <bits/stdc++.h>using namespace std;std::mt19937 rng(std::random_device{}());typedef long double ld;typedef long long ll;typedef unsigned long long ull;typ

2021-12-03 23:22:28 847

原创 Codeforces Round #756 (Div. 3)

Codeforces 1611A末尾是偶数0第一位是偶数1如果有偶数是2否则是-1#include <bits/stdc++.h>using namespace std;std::mt19937 rng(std::random_device{}());typedef long double ld;typedef long long ll;typedef unsigned long long ull;typedef const int& cint;typedef

2021-11-26 14:43:31 1855

原创 Codeforces 1610D. Not Quite Lee

Codeforces 1610D. Not Quite Lee思路首先容易发现如果 bib_ibi​ 是奇数,那么它的贡献可以写成 kibik_ib_iki​bi​ 其中 kik_iki​ 是任意整数如果 bib_ibi​ 是偶数,那么可以写成 bi2+kibi\cfrac{b_i}{2}+k_ib_i2bi​​+ki​bi​稍微推一下可以发现,一个序列里只要有一个奇数那么肯定有一种方法变为0奇数和奇数相消取 lcmlcmlcm奇数和偶数相消写成丢番图方程的形式,由裴蜀定理一定有解(两者的 g

2021-11-24 21:59:27 583

原创 Codeforces 1612C. Keshi Is Throwing a Party

Codeforces 1612C. Keshi Is Throwing a Party思路首先容易发现,选择的人数具有单调性,是可以二分的假设最后答案选了 xxx 个人,那么对于一个人有影响的,就只有了他前面选了多少人,因为前面确定了后面就确定了更具体地说,如果第 iii 个人是按顺序的第 kkk 个被选,那么 x−k≤aix-k\leq a_ix−k≤ai​ 且 k≤bik \leq b_ik≤bi​ 综合一下可以得到 x−ai≤k≤bix-a_i\leq k\leq b_ix−ai​≤k≤bi​

2021-11-24 21:58:53 585

原创 第二届辽宁省赛 B 阿强的路

B 阿强的路思路题目中有两个限制,边权最大和点权最大,考虑固定一维将点按权值从大到小排序,每一次,我们只考虑点权小于等于枚举点的的点导出子图的最小生成树,然后在生成树上暴力代码#include <bits/stdc++.h>using namespace std;typedef long double ld;typedef long long ll;typedef unsigned long long ull;typedef const int& cint;typ

2021-10-24 13:40:34 291

原创 CF GYM 103186 B

CF GYM 103186 B思路考虑分解来做。假设已经知道了 c 的选择,那么该怎么确定 a,b 的选择不难发现对 ai−bia_i-b_iai​−bi​ 从大到小排序,前 a 个一定选 aia_iai​可以这么想,假设剩余的全选了 b ,那么此时在不改变 c 的选择下 一定选择那些 ai−bia_i-b_iai​−bi​ 最大的地方改成 aia_iai​代码#include <bits/stdc++.h>using namespace std;typedef long d

2021-10-22 20:35:16 206

原创 Codeforces 1586E. Moment of Bloom

Codeforces 1586E. Moment of Bloom思路从原图构造任意生成树,在生成树上暴力即可,下证正确性。首先证明,对于树,在操作后清除所有奇数边所需的次数是 sum2\cfrac{sum}{2}2sum​ ,其中 sumsumsum 代表奇数节点个数因为一次操作最多只能改变两个节点的奇偶性,全为偶数的必要条件为所有节点都为奇数,又由欧拉路径,总存在可行解,证毕然后证明,任意原图的路径选择不会优于生成树上的路径选择原图通过操作后,将得到的奇数边清除的次数下限亦为 sum2\cf

2021-10-18 22:10:47 420

原创 Codeforces 1592F1. Alice and Recoloring 1

Codeforces 1592F1. Alice and Recoloring 1思路首先,容易发现操作二三是无效操作,可以用操作一在更优解下实现现在只考虑操作一四,记为操作 a 和 b可以发现将初始图转化为给定图等价于将给定图转化为初始图,因为对给定图运用将初始图转化为给定图的一系列操作,就可以将它转化为初始图所以,问题变成了,给定一幅含 W 和 B 的图,仅通过 a 和 b 操作将它转化为仅含 W 的图,求最小转化代价考虑一个新数组 C(i,j)C_{(i,j)}C(i,j)​ 表示 (i,

2021-10-04 16:17:18 464 2

原创 arc126c

arc126c思路首先,有不等式 gcd⁡(a1,a2,...,an)≤min⁡(a1,a2,...,an)\gcd(a_1,a_2,...,a_n) \leq \min(a_1,a_2,...,a_n)gcd(a1​,a2​,...,an​)≤min(a1​,a2​,...,an​)如果 k 足够大,以至于所有的数都加到 max⁡(a1,a2,...,an)\max(a_1,a_2,...,a_n)max(a1​,a2​,...,an​) 后还有剩余,那么此时,每当 n≤kn\leq kn≤k ,就

2021-09-23 21:55:24 317

原创 推一下自己写的acm模板生成器

地址

2021-09-21 21:49:50 428

原创 Codeforces 1562E Rescue Niwen!

Codeforces 1562E Rescue Niwen!思路对于字符串 s1s2s3...sns_1s_2s_3...s_ns1​s2​s3​...sn​我们先来考虑一个子集,仅讨论以 s1,s2s_1,s_2s1​,s2​ 两个位置为开头的扩展字符串列中的最长递增子序列,即 s1;...;s1,...,sn;s2;...;s2...sns_1;...;s_1,...,s_n;s_2;...;s_2...s_ns1​;...;s1​,...,sn​;s2​;...;s2​...sn​ 中的最长递增

2021-08-27 04:20:35 308

原创 CF1562D Two Hundred Twenty One

CF1562D Two Hundred Twenty One思路以下所有区间和计算时均以点 1 系数为正作为基准结论一:区间和为 0 不用删显然结论二:区间和为奇数删一个举个实际例子,不妨假设 l 到 r 区间和是 5那么一定存在一个点 s,使得 l 到 s 是 2 ,s+1 到 r 是 3这个点一定存在,因为区间长度增加 1 ,区间和的变化的绝对值就是 1不难发现,如果 s+1 对区间和的贡献是 1 的话,删掉它就一定满足条件,即 +2 +1 +2 -> +2 -2既然要从

2021-08-27 01:32:22 302

原创 CF1561C Deep Down Below

CF1561C Deep Down Below思路考虑一种特殊情况,只有一个洞穴,记其怪物属性为 a1,a2,...,ana_1,a_2,...,a_na1​,a2​,...,an​不难发现,仅有英雄属性值在进入洞穴前大于 max(ai−i+1)max(a_i-i+1)max(ai​−i+1) 时,英雄才能安全通过这个洞穴现在考虑一般情况,对于洞穴 i ,设 di=max(ai,1,ai,2,...,ai,x)d_i=max(a_{i,1},a_{i,2},...,a_{i,x})di​=max(a

2021-08-25 03:41:25 297

原创 CF1561E Bottom-Tier Reversals

CF1561E Bottom-Tier Reversals思路首先,可以发现交换不会改变一个数的位置的奇偶性,即一个数交换前后的位置的奇偶性相同所以如果奇数位出现了偶数一定不成立那么先猜测其余情况一定有解,尝试构造一下首先,我们非常想先让最大的数回到自己的位置,这样,以后的翻转就不用考虑最大数那一位然后发现,只有次大的数无法自己回到自己的位置,因为次大的数一定是偶数(保证n是奇数),而翻转序列的长度需要是奇数那么当尝试将次大的数放回自己的位置时,最大的数的位置又发生了变动,这是我们非常不想看到

2021-08-25 03:26:53 244

原创 CF1561D Up the Strip

CF1561D Up the Strip思路对于操作一,是最基础的前缀和优化考虑操作二对于点 i ,我们想知道通过除以某个数,哪个范围可以到它考虑一种情况,除数是 22i,2i+12i,2i+12i,2i+1 可以到,其余都无法通过除以 2 到达点 i进一步发现,对于任意除数 x ,可以到达的范围是 [ix,ix+x−1][ix,ix+x-1][ix,ix+x−1]所以从 n 向 1 转移, 转移时枚举倍数, 维护前缀和复杂度是调和级数代码#include <bits/stdc+

2021-08-25 03:11:41 234

原创 CF1559E Mocha and Stars

CF1559E Mocha and Stars思路观察数据范围,大概 Θ(nmlog⁡m)\Theta(nm\log m)Θ(nmlogm) 是可行的那么有了一个基本的想法, dpi,jdp_{i,j}dpi,j​ 表示选到了第 i 位,且当前所选数的和是 j 的方法数但是这样最后的 dp 值里面会有 gcd 不为 1 的情况以下默认省略和不大于m考虑容斥原理如果 gcd 不为 1 ,那么它一定是某一个质数的倍数所以减去所有 gcd 为质数倍数的情况,但是这样子我们会将一些 gcd 为特定值

2021-08-24 01:04:30 221

原创 CF1559D2 Mocha and Diana (Hard Version)

CF1559D2 Mocha and Diana (Hard Version)思路以下,两图分别称为 A , B首先,来证明一个贪心策略:有能连的边就连,或者说连边不会影响最大值考虑一种特殊情况,A 只有两个联通块,记为 x 和 y , B 只有两个联通块如果从 x 中选出任意一点都无法连接到 y 中任意一点,那么说明 x 中任意一点和 y 中任意一点在 B 中在一个连通块内这样推得 B 仅有唯一联通块,矛盾所以上述情况一定可以连一条边有一个显然的东西,连一条边会让 A 和 B 的联通块个数

2021-08-24 00:57:27 269

原创 2021-08-24

题目描述9 个机器人,在 3 * 3 的方格里,一开始 9 个机器人分别站在 9 个格子上,每一步机器人可以往临近的一个格子移动或留在原地(同一个格子可以有多个机器人停留),经过 n 步后有多少种不同的走法,使得每个格子上都有 1 机器人停留。由于方法数量巨大,输出 Mod10^9 + 7 的结果。输入输出格式输入格式第一行包含一个整数 n。输出格式输出一行输出走法的数量 Mod 10^9 + 7数据范围对于 40%的数据,1 <= n<= 10;对于 70%的数据,1

2021-08-24 00:51:47 176

原创 ARC112C

arc112c大意略…思路我们不妨假定 did_idi​ 为先手走到第 iii 个点的人,最优策略下与另一个人获得的硬币差。显然,该博弈为零和博弈,所以,我们要最小化 d1d_1d1​ 。(注意,首先行动的人可以直接拿走点1上的硬币,所以相当于后手到点 iii )开始讨论。AAA 先手走到 iii ,定义为:如果 iii 上有硬币,那么 AAA 拿不到硬币。如果 iii 上没有硬币,那么 AAA 选择向哪棵子树走。不难发现,如果子树节点数为奇数,那么进去后会就交换先后手。依此,我们将以

2021-08-24 00:46:51 284

原创 CF1452D

Educational Codeforces Round 98 (Rated for Div. 2) D大意有 n+2n+2n+2 个村庄,按从 000 到 n+1n+1n+1 标号。村庄 111 到 nnn 中允许安装灯塔,每个村庄有二分之一的概率被安装(互相独立)。现在,对于一种安装方法,你需要给予每个灯塔能量 p∈N∗p\in N^{*}p∈N∗ 。如果一个位于 iii 的灯塔被赋予了能量 ppp ,那么,所有满足 ∣c−i∣<p|c-i|<p∣c−i∣<p 的标号为 cc

2021-08-24 00:45:25 149

原创 ABC179D

abc179d大意给定 NNN 和 KKK 个互不相交的整数端点区间 [Li,Ri][L_i, R_i][Li​,Ri​] , 定义 S=∪i[Li,Ri]∩NS = \cup_i[L_i,R_i]\cap\mathbb{N}S=∪i​[Li​,Ri​]∩N 。初始站在台阶1,可以选择 i∈Si\in Si∈S 并走到第 1+i1+i1+i 阶。问,走到第 NNN 阶的方法数有多少种。思路很像那个dp入门题…但是有一些点无法转移到当前点 kkk ,因为 SSS 可能并不包含 1...k−11.

2021-08-24 00:42:24 181

原创 2021暑期牛客8-K Yet Another Problem About Pi

2021暑期牛客8-K Yet Another Problem About Pi思路solution中讲的很清晰了,除了最后那个显然(这里只证明一下那个显然的内容在不等式 \(ax+by\leq \pi\) 下最大化 \(2x+3y\) ,其中 \(a=min(w,d) \ \ and \ \ b=\sqrt{w^2+d^2}\)​ ,且 \(x,y\) 为整数不妨设 \(w\leq ...

2021-08-14 00:35:00 142

原创 2021暑期牛客多校8-F Robots

2021暑期牛客多校8-F Robots思路对于第一和第二种机器,因为方向唯一,暴力即可对于第三种机器,如果直接暴力的话时间和空间都无法承受,考虑优化一下如果从点 A 可以到达点 B ,那么就可以从点 A 到达点 B 右或下方不是障碍的地方换句话说,如果从点 B 左或上方的某一点 C 可以到达点 B ,那么所有能到点 C 的点也一定能到达点 B所以说能到点 B 的点的点集由点 B 本...

2021-08-13 23:37:00 123

原创 CF1486 C2. Guessing the Greatest (hard version)

CF1486 C2. Guessing the Greatest (hard version)思路首先,查询一下整个区间次大值的位置,记为 \(s\)然后,查询 \(1--s\) 这样就知道了最大值在 \(s\)​ 的哪一边,不妨设在左边然后二分 \(mid = (1+s-1)/2\) 查询 \(mid--s\) 这样就知道了最大值在 mid 的哪一边像这样二分下去,最后就能得到最大...

2021-08-13 22:53:00 142

原创 2021牛客暑期多校3-J

J签到差点没签成功.......如果一个三角形三条边不是同一种颜色,那么一定有一个顶点,与其相连的两条边颜色相反。所以枚举每一个点,统计其黑白边个数,相乘即是以其为顶点之一的三条边不是同一种颜色的三角形的个数。从总个数减去不满足的个数可以得到答案。不要忘了去重。复杂度 \(\Theta(n^2)\)#include <map>#include <set>...

2021-07-25 10:37:00 121

原创 2021暑期牛客多校1-G

G首先,考虑如果不限制k的话,最优解如何构造。显然,答案最大的情况就是前n大的数加,后面的数减。那么如何说明总能构造出这种情况呢,设 \(x_1,x_2\) 分别为 \(a,b\) 数列前 \(n\) 大的数字个数, \(y_1,y_2\) 分别为 \(a,b\) 数列前 \(n\) 小的个数。显然下面的等式成立\[\begin{cases}x_1+y_1=x_2+y_2 \\x...

2021-07-20 12:36:00 127

空空如也

空空如也

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

TA关注的人

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