- 博客(100)
- 收藏
- 关注
原创 摆(行列式、杜教筛)
通过暴力发现可重集的数量很少,于是我们可以暴力求出这些“代表”的函数值,然后让找到其他数所对应的“代表”。用欧拉筛实现,具体实现可参照代码。中最大的数一定是其他数的倍数,从而只有最后一行全为。,不妨删去最后一行列。这样递归下去,容易发现结论成立。的系数,考虑行列式的定义,要选出行列都互不相同的。),剩下的行列拼接在一起后面选。中其他任何数的因子,那么矩阵中就会出现两行。个数相乘,由于只有主对角线上的。的多项式,求值只需代入。中的元素拼接形成的矩阵。中元素两两整除,那么。考虑杜教筛,我们构造。
2024-02-18 09:06:56
1212
原创 ARC159B GCD Subtraction
等细节),然后重复上面的流程即可。这里有一个性质,对于互质的两个数。除以其最大公约数,变成互质的。都要除以最大公约数,因此会有。,如果后面的最大公约数一直是。考虑一般情况:快速求出最小的。,前者减去的数是后者的。以内的质数求出最小的。,直接模拟必然超时。
2024-01-31 15:27:30
1000
原创 [USACO22JAN] Tests for Haybales G
Farmer John 的奶牛们决定为 Farmer Nhoj 农场的奶牛们举办一场编程竞赛。为了使问题尽可能有趣,他们花费了大量时间来构造具有挑战性的测试用例。特别是对于一个问题,「Haybales」,奶牛们需要你的帮助来设计具有挑战性的测试用例。可以证明这一定是可行的。请帮助 Farmer John 的奶牛们解决这一问题!给定这些信息,Farmer John 的奶牛需要构造任意一个数组以及整数。(通过人类智慧)发现树的 dfs 序完美不符合条件,于是令。之间连边,最终会得到一棵树,以。
2024-01-28 22:15:08
1109
原创 ARC143D Bridges
中组成边双的边,是否能确定方向,在现在的图中能组成强连通分量。在当前图上跑 dfs,对于返祖边,就向上连,否则向下连。这样一定能保证最优。直接给出结论:除了上面的割边外,存在一种构造方案,不存在其他的割边。之间只有一条路径)。
2024-01-28 20:29:30
1048
原创 CF1887C Minimum Array
对于此题,考虑差分,那么区间修改就变成两点修改,而这并不会改变原序列的相对字典序大小。容易发现若差分数组的第一个非零的数小于零,则字典序变小,当前的原数组是最小的,为了方便,此时可将差分数组清空(因为我们要的是相对字典序大小),继续后面的操作。,加前缀和后显然结论成立。维护差分数组的非零数。
2024-01-28 10:51:58
774
原创 ARC127E Priority Queue
把当前未出现的数看作空位,假设当前是操作二,如果没有空位就不合法。显然对于第一个操作一定是删去最大的数最优(说明若当前集合有加入的数,一定要把它们先删去,再删原本有的数)。那么操作就要反过来:第一个操作从加入任意一个数变成删去任意一个数,第二次操作从删去最大的数变成加入一个最大的数。当然顺序也要反过来。于是我们现在把操作正着看,发现每个操作二都可以与前面的一个操作一抵消,剩下的操作一就是答案集合,而且它们随时间加入单调递增。容易发现加入的数是一个排列,但是考虑最后的情况不好做。因为还要保证合法,所以再设。
2024-01-26 09:19:08
775
原创 风信子(线段树)
下面分析如何把一个合法区间分裂成若干符合条件区间。(注意分出的区间不能有包含关系,不然就会算重),那么可以用线段树维护答案,答案是左右儿子的答案,左儿子最大值减右儿子最小值,这三者的最大值。个不同的合法二元组,每个合法二元组都在区间。内,这些合法二元组的分数和最高是多少。分做法:对于每次询问都做一遍超级钢琴。但是这么做就不好算出答案。分好区间后,直接用优先队列维护即可。这显然在此题不够用,于是我们设。,答案的最大值,然后分裂成。考虑什么样的区间好计算出答案。注意到超级钢琴使用了。
2024-01-23 09:55:35
1066
1
原创 竹子(?)
由于竹子长得太快,青蛙哥不得不砍掉一些竹子,但是,每次只能砍下一截长度为。天之后,最高的一棵竹子的最低高度是多少。每天先砍竹子,砍完后竹子才会生长。天,如果有竹子在接下来一天会变成负数,就给它加长度。的竹子,而且为了防止刀具磨损,青蛙哥每天只能用刀砍。长度(如果长度为负,就不合法),然后你可以给竹子加。实现上可以用优先队列维护竹子在哪天需要加长度。,显然砍完之后高度不能为负数,而应该是。次操作可以统筹分配,分到其他天。天之后是否所有竹子高度不超过。天后,竹子高度至少为。天,如果竹子高度小于。
2024-01-22 10:42:03
1545
1
原创 决斗(线段树)
他首先希望让自己的得分尽可能高,然后就是希望在让自己的得分尽可能高这个前提下,最大化自己从第一回合开始到最后一个回合结束过程中,每回合出牌点数构成的字符串的字典序。回合,如果我们要赢,可以出最大的,但是如果这么做可能会影响后面需要它来赢的回合;在向上合并信息时,青蛙可以用自己的大牌去对柯南的小牌,青蛙的得分是。然而现在青蛙哥通过偷看的方法得到了名侦探柯南的出牌顺序,他可以任意定一个自己的出牌的顺序。每回合裁判会检查,打出的牌点数更高的一方获胜从而得到一分,如果二人点数相同,则不得分。
2024-01-21 21:44:46
1083
1
原创 ARC123D Inc, Dec - Decomposition
最后的答案不会更劣(证明可以手模一下),不停操作下去,最终可以得到结论。,这是排序的时间复杂度,可以不用排序。表示,要最小化的式子就是形如。证明考虑反证,任取最优的。
2023-12-12 18:53:40
106
原创 ARC120D Bracket Score 2
中找不一样的相邻两个元素,这是一个合法匹配,然后删去这两个,这样不停操作下去,一定可以构造出答案。在实现上,开一个栈,每次对比栈顶和当前。放在数轴上,对于最右边的点,一定是与最左边的点匹配是最优的;对于次右边的点,与次左边的点匹配,以此类推。这是显然的,所以权值不超过。的权值最大的合法括号序列(不是输出权值,而是输出任意一个解),如果不一样,就标记为匹配,否则就放进去栈内。定义一个合法括号序列的权值为。要取到最大值需要使每个匹配。从小到大排序后的数组记为。位在括号序列中是配对的。下面构造取得最大值。
2023-12-04 19:29:32
110
原创 sakuya
对于每次修改,如果直接暴力修改边权再求期望,复杂度是。我们先求出一开始的期望,然后每次修改发现答案都会增加。先把期望转换为求出方案的总和除以。连续的两个元素,然后在所有方案中,条路径经过这条边,贡献就是。,每次询问就把答案加上即可。预处理出式子的后半部分。所含有特殊节点的个数,是求两点 lca)。
2023-11-15 20:45:18
143
原创 异或连通(trie)
所以我们可以遍历 01trie,每走到一个点就把该点的边加入到并查集中,然后就维护答案,回溯时就把加的边删掉。由于要有删边操作,使用可撤销并查集,具体实现就是用栈记录操作顺序,然后从栈顶依次把操作撤销,注意到不能用路径压缩,要用启发式合并。发现当 01trie 上一个点被打了标记后,它所对应的边在点下面是一直存在的。可以在 01trie 上做,当前是第。
2023-11-14 21:50:29
179
原创 民主投票(树型dp)
发现对于其他人来说,尽可能投票给深度大的祖先是最优的。判断是否有解用树型 dp,设。由于票数容量减少了,一定存在一个点,把一张票给到。内的点给子树外投票的票数,每个点的票数不超过。,不可能给到其他祖先,因为如果可以的话。此时把个人最多的票数。,二分求最少的每个点最多含有的票数。减一,再做一次 dp,显然此时。个那个点就是合法的。,同时要保证其他人的票数小于。作为胜者,他的票数就是。,就有解,否则无解。
2023-11-14 20:43:06
124
原创 暴力操作(dp)
因为有可能除以更大的值花费更小,所以我们要对。,它无论如何操作,实际上都只是除以了一个。这可以用 dp 求。这部分的 dp 时间复杂度为。做后缀最小值,直接取就行了。上面 dp 已经求了,当。的最小花费,转移显然是。,考虑怎样选择若干数。
2023-11-14 15:11:52
67
原创 草莓路径(线性基)
任取一个生成树,容易发现两点之间的路径的异或和都可以表示成树上两点路径异或和与图上若干个环的异或和。这里的异或和是指依次经过的边权的异或,意思是如果一条边重复经过两次,那么就要异或两次。赛时看错题了,暴力没分。感性证明:其他的路径一定是在树上路径上把中间的几段链换成别的链或环,模拟一下就会发现是满足条件的。所以 dfs 一遍找出所有的环,求出异或和丢进线性基,然后再枚举两个点,然后求树上路径异或和。求二者异或最大值可以在 01tire 上做,每次就尽可能往相反的方向走。),让取出的数的异或和最大,就是。
2023-11-13 20:52:45
140
原创 草莓列车(st表)
的标记的最大值,用分块可以解决。具体实现上,打标记时可以用。一旦标记出现,标记的意义就是更新它左边所有的数,所以只需求。为什么不用线段树求最大值?因为修改很多,我们想要保证修改。记录整块的标记,查询时若当前是散块,就用。考虑构建 ST 表的反过程,每次操作就给。的操作区间的右端点。的所有右端点所在出打上标记。更新,当前是整块,就用。
2023-11-13 15:26:52
88
原创 洛谷 NOIP 2023 模拟赛-汪了个汪-题解
容易发现棋盘上的无序对与总的无序对数量是相同的,也就是说,要全部填满。可以考虑把它们分类,然后再按规律放数。个,看上去很巧,如果能把它们按行归类,就好了。我们发现,无序对中两数差为。
2023-11-12 21:58:47
629
原创 洛谷 NOIP 2023 模拟赛 个人总结
期望得分:100+10+12+24=146pts实际得分:64+10+12+20=106ptsT1挂分了,原因是分解质因数时,下标超过了最大的质数个数,枚举的pip_ipi变成000,模000RE了。这次算是长了个教训,解决方法是筛质数的范围开大一点或每次限制每个下标的范围。T2,T3 都不能深入分析问题,其实分析出n≥29n\ge29n≥29,答案求最小值是不难的。总结:这套题感觉与NOIP的风格很像,题目有质量。
2023-11-12 21:42:17
484
原创 小猫吃火龙果
由于有交换两种字母的操作,那么对于每个就要维护三个字母所有置换(,但是由于修改时对于散块的求。,走完这个块后所变成的字母。的时间复杂度实际上要带上。
2023-11-10 20:09:55
152
原创 大眼鸹猫(?)
那么我们可以先给每个数分配一次操作,对于剩下的操作用大根堆维护每个数再分配一次操作减少的代价,每次就贪心的去选代价减少得最多的,然后给它分配一次操作再放进堆里。最后把堆里的数拿出来算答案即可。始终单调不降,看上去很难满足,但结论是一定存在一种合法操作方案。可以考虑一个极大的区间。次操作,显然每次操作将。次操作的最小代价,发现。是下凸函数,意思是随着。的个数,就是无解了。所以单独考虑每一个数。减小的幅度越来越小。
2023-11-10 19:40:25
152
原创 青鸹(?)
所以最优策略是在奇数或偶数位置选全部正数,然后确定了选的数后,把相邻两个数之间的连续段删去即可,发现中间的最小操作次数就是连续段长度除以。显然两个数要对答案产生贡献,二者之间的数的个数必为奇数,如果是偶数,就不能仅删除中间的部分。手模后发现,设对答案产生贡献的数为。特判序列全部都是负数的情况。
2023-11-10 19:15:09
98
原创 kotori
到根的路径上,这部分的贡献在第一种情况已经算过,直接令。与根路径上的最小编号,对于一次询问点。,答案就是该点和所有装置所在点的。做法:先选定一个装置为根,记。的路径经过根,最小编号就是。的路径上,最小编号也是。所以直接查询装置的最小。,如果最小编号的点在。下面说明这是正确的。
2023-11-08 14:50:18
97
1
原创 tour(树)
发现根是谁不重要,那么每次连边的时候,就直接让一边的树根当另一边的根的儿子即可,要用启发式合并保证复杂度,被合并的数要 dfs 一遍更新信息。先考虑离线的情况,显然可以先把树建好再依次回答询问。查询时就先算出右边的值。有关,可以对每个节点建两个主席树维护。,主席树空间能开多大就开多大。
2023-11-07 20:59:13
74
原创 competition
那么大的值域,只需把给的区间端点放在线段树就可以。对于原题的情况,答案就要在这个基础上减去一道题重复做的次数。先考虑一道题可以被做出多次的情况,不难得出答案为。,常数很大,需要优化,具体实现参照代码。表示当前这个人的左边最靠右的能做第。的区间答案都会增加,所以答案减去。,先统计答案,再用线段树更新。之和,每次修改就区间覆盖。
2023-11-07 16:43:06
96
原创 滈葕(2-sat)
为 A 型血,其血清中有抗 B 凝集素;红细胞上只有凝集原 B 的为 B 型血,其血清中有抗 A 凝集素;有凝集原 A 的红细胞可被抗 A 凝集素凝集;有凝集原 B 的红细胞可被抗 B 凝集素凝集。有凝集原,血清内有凝集素。红细胞上只有凝集原 A 的。两种凝集原都有的为 AB 型血,其血清中无凝集素;红细胞上两种凝集原皆无者为 O 型,其血清中两种凝集素。个人分别提供红细胞和血清并将其混合,观察是否有凝集反应。,凝结原 A 和抗 A 凝集素相遇的条件是。,凝结原 B 和抗 B 凝集素相遇的条件是。
2023-11-06 20:21:13
188
原创 构造(构造)
堆在一起是较优的,有横斜两种情况。如果按上面这么做,总数是。说一下构造的思路,首先先考虑最大的情况,你可能能想到把。堆在三列,然后复制这一堆到其他的三列。就模拟一个一个放就可以了。列是空出来的,这里也能放东西,只需。的做法,可以先放整列,然后对于散的。,就省出来了一列,就这样。先给出一种最大的构造方案。,可以拿到 60pts。,可以拿到 80pts。放下去即可,总数就是。
2023-11-06 15:33:23
97
原创 游戏(期望)
由于局面对于双方来说都是不确定的,学生不知道老师抓谁,老师也不知道学生进那个房间,双方都没有固定的最佳策略。,说明学生还有余力,还能让被抓的人变小;个房间(显然总的概率之和是等于。的),这样老师抓到的期望人数为。的房间,学生只需管其他的房间。,看学生是否能让期望被抓人数。,那么老师一定不会去抓人数。个房间,那么老师去抓第。下面证明这是正确的。对后者求和,如果小于。下面代码实现是二分做法。,令老师这样决策:以。
2023-11-06 15:11:30
200
原创 涂鸦(高斯消元)
实现上,可以用 dfs 求出阶梯矩阵的状态和个数,01 矩阵转换成阶梯矩阵直接暴力枚举(时间充裕)每个点,若颜色不相同就直接对左上角修改。考虑一个状态,若一个格子的颜色与最终状态的颜色不同,则这个点后面一定会修改,其左上角的点同样,所以这些点的颜色是什么就不重要了,反正后面都要被改。那么,所有的 01 矩阵都能唯一转化为一个阶梯矩阵,所以只需将原来的状态换成新的阶梯状态进行高斯消元即可。考虑每一行,看每行红色部分的格子数量,容易发现它们是有单调性的,设格子数量为。的解的个数,这是组合数学的经典问题,易证。
2023-11-03 19:20:05
142
原创 高爸(三分)
在它之上的力量值所贡献的代价只会变大,而且变大的幅度会越来越大;在它之下的力量值所贡献的代价只会变小,而且变小的幅度会越来越小。发现两边的代价函数都是下凸函数,所以总的代价也是下凸函数,可以三分解决。然后提供一个卡常的方法:权值线段树一般都是开了一个结构体,里面有各种变量,把它们单独拿出来开数组,不用结构体,这样可以快很多。原因可能是结构体内部变量会对齐,导致空间变大,从而寻址时间变多,常数变大。对于一个力量值,求出它前面与后面的元素大小和总和,就可以知道代价了。考虑随便取一个力量值,然后将它减少。
2023-11-02 17:23:42
85
原创 华二(组合)
观察当两个数互质时有什么性质。时,与其他数都互质,可以随意移动;,它们不能跨越,相对顺序是不变的。然后将剩下的空位拼在一起,看任意两个。由上面分析,可以先安排好。的幂),把它们都看作。的个数,显然方案数为。都乘在一起,就是答案。
2023-11-02 17:06:29
110
原创 差后队列(期望)
对于一个数,如果它是当前的最大值,就要到后面第一个大于它的位置开始计算贡献。,每次删除成功的概率是前面几次都失败的概率乘上。容易发现,一个数如果不是最大值,都是一样的。,可以从前往后递推,因为贡献的式子是相似的。的情况,对于每个数,记当前队列大小为。,其实差不多,只是要倒过来做。我的代码中懒得求逆元,是。
2023-11-01 18:51:34
137
原创 异或(状压)
个点,修改就是在两个点之间连边(如果是单点修改,就是自环),一组方案由几个连通块组成。充分性:考虑把这些数按编号顺序排成一排,从前往后做操作,每次操作都把最前面的消掉了(变成。对于有自环的情况,自环的操作把那个点改成一个适当的值,让除去自环的这棵树的异或和为。,区间修改就变成双点修改(区间非后缀)或单点修改(区间为后缀)。必要性:每次操作都是双点修改,整个连通块内的异或和不变,而最后要求异或和为。我们的目标是让最后连通块的数全为。考虑树的情况,发现有解当且仅当连通块内的数异或和为。的序列,所以异或和必为。
2023-10-31 15:49:15
95
原创 旅行(图论)
但是如果两边的颜色是同一个连通块,那么就不会增加连通块,这种情况只能是环上的边全是一种颜色(在后种情况就是除了当前边全是一种颜色),特判即可。前一个操作,如果两边都有这种颜色,那么断掉这条边会增加一个连通块;如果两边都没有,就会减少一个;后一个操作,如果两边都有这种颜色,那么断掉这条边会减少一个连通块;如果两边都没有,就会增加一个;可以用各种方法求出一开始颜色相同连通块的个数。对于每次询问,改变这条边的颜色,贡献只需看两个点的连边情况。可以分成两部分考虑,先去掉这条边的颜色,再加上修改的颜色。
2023-10-30 21:56:32
147
原创 点餐(分治)
如果这是 DP,就可以用 1D/1D 动态规划的优化方法。可以用 set 维护,或者主席树,时间复杂度。值至少都比前面的要小了,所以。从小到大排序,如果当前要点。两部分,这样递归处理下去。这里要用分治的思想,函数。个菜,那么就是要在前。的,总的时间复杂度为。,则对于后面的决策点。
2023-10-30 17:19:09
122
原创 NOI赛制考试策略
过了大样例要对拍(大样例很水),如果时间充裕,就想方设法 hack 自己(一般是T1,后面都不会正解),造极限数据,极端数据,手造小样例等,根据自己代码想的不是很明的地方造hack。代码写完后可以先静态查错,看自己变量有没有搞错,有没有取模,最值变量初值,主席树有没有开够空间,变量数组有没有初始化,重复使用的变量要清空,多测清空,不开longlong见祖宗。后面的题先打暴力,然后骗部分分,如果想的正解还能对拍。拿到题目首先浏览所有题目,根据经验判断题目难度决定开题顺序,由易到难,一般题目难度单调递增。
2023-10-29 18:44:41
272
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人