atcoder近期比赛记录
ABC 235
A , B , C , D跳过
ABC235E
题意:给出无向图,每次询问对于若新加入边能否成为最小生成树中的边。
同P4180,若这条边可能成为最小生成树上的边,则该边两端点在最小生成树上的路径中一定有一条不小于w的边。
LCA+树上倍增 即可解决。
将询问离线再跑MST也是一种解决方式。
ABC235F
求中包含数字的数之和 ,
考虑数位dp,用表示前i位,数字的出现情况为st的和。
记忆化搜索形式更方便实现。
ABC235G
有n个花园,每个果园要放至少一种植物,三种植物分别有a,b,c个,求方案数。
dp不说了。
考虑做法:容斥,以将问题转化为好解决的子问题。
所有果园都种了至少一种植物 = 所有种植情况 - 有至少一个指定的果园没有种植物 + 至少两个指定的果园没有种植物 ....
其中
注意是指定哪些果园没种,可以有别的果园没有种植
我们可以地求出,所以总复杂度为平方级别。
然后将上面的式子的三个部分分别看作那么可递推计算,在纸上推一下可以发现。
b,c同理。
递推即可,复杂度为
ARC133
ARC 133A跳过。
ARC 133B
题意:给出两个排列,在两个排列中分别找出两个子序列满足以下要求:
1 .
2 .
3 . 在满足以上要求的前提下长度最长 , 求这个长度
首先想到 的dp , 把其中的换成即可。
考虑优化。
发现题目给出的是两个排列,我们试着处理出对于每个能够与之配对的,其总数是级别。
定义表示q的前i个对应到p中的最大长度。
那么
用线段树将区间取max为mx,并用mx+1去区间最值操作更新即可,为了避免重复计算贡献,将每一个对应的更新存下来最后操作。
ARC 133C
跳过
ARC 133D
稍后整理
ABC236
ABC236 A , B , C , D 跳过。
ABC236E
给出一个序列,您需要选择一个子序列,两个相邻的数不能都不选择,分别求:
子序列的平均数的最大值。
子序列的中位数的最大值。
考虑中位数的套路:二分中位数,大于等于的视为1,小于的视为0,看能否选择和大于等于总数的一半。
然后可以dp进行check:
选了上一个
没选上一个
同理,平均数也考虑类似的套路,设平均数为x,二分x,将所有数减去x,求最后能否使得和大于零,同样使用dp。
ABC236F
每个数有一个代价,求集合的线性基且代价最小。
将这些数按代价排序,按顺序插入线性基,能插入就加上代价,贪心求出答案。
证明稍后补充。
ABC236G
题意:在一个有向图上依次连边,求每个点在最早什么时刻可以恰好经过L条边走到。
题意可以转化为 在t时刻连的边的边权为,求路径上最大边权的最小值。
(然后我就开始二分了,艹)
令表示走到点i,恰好走j条边的最小最大边权,则有转移:
然后我们就有了的dp
考虑怎么优化
另一个著名的问题:点u到点v的代价是路径上的边权之乘积,求一个点到另一个点的所有长度为的路径的代价之和。
这道题目的转移就为
就是矩阵乘法转移,维护矩阵乘上边的邻接矩阵就可以得到
其中为图的邻接矩阵
将上面那一题的 换成 就是此题了
由于运算都有交换律,结合律,且之间存在分配律,所以同理可以使用广义矩乘维护,使用广义矩阵快速幂加速即可。
即
ARC134
ARC134A跳过
ARC134B
题意:给出一个字符串 ,选择一个子序列,翻转它,使得翻转后的字符串的字典序最小,求翻转后的字符串。
题意可以转化为k对呈包含关系的交换。
贪心地,我们要把小的字符换到前面,对于一个位置i,选择能换的最小的字符一定是最优的,所以对于每个字符找到它和上一次交换之间最小且尽可能靠右的字符即可。
然后我就写了线段树区间查尽可能靠右的最小字符(还好码出来了)。。。
正解:英文字母只有26个,开26个vector存每个字母的位置即可。
ARC134C
稍后整理
ABC237
ABC237A , B , C , D跳过
ABC237E
题意: 有一些点,每个点有高度,有一些边连接这些点,从高的点到低的点的价值是高度差,从低的点到高的点的代价是负的高度差的两倍,求一条代价最大的路径。
发现此图”来回“的价值一定是小于0的,所以最长路最多只会经过每个点一次,spfa即可。
冷知识:spfa没死
可以证明spfa在此题的复杂度正确(但我不会
ABC237F
给出 求满足以下要求的序列的数量mod 998244353。
由于总共不同的输入只有种,所以打表暴捶正解/kk
-
1.长度为
-
2.由中的数组成
-
3.其LIS的长度恰好为3
状态类似基于元素的LIS
这个元素能使得的长度增加当且仅当它大于等于长度为1/2/3的lis的最后项的最小值。
所以状态就定义出来了表示前i个数最小值为,长度为2的LIS的最小值为,长度为3的的末尾的最小值为
刷表转移即可
复杂度
ABC237G
题意:
给出排列 有次操作,每次为将内的元素按升序(c=1)/降序(c=2)排列,求最后元素的位置。
日本人们致敬了河北省选 <排序> ,真是有创造力!(yygq
所以可以直接模仿那道题的思路()
较为明显的,若查询的数5,则6,7,8等价,1,2,3,4等价,因为其他元素之间的顺序不会影响5的位置。
所以维护线段树维护两个信息:区间中比这个数大的数的数量,比这个数小的数的数量即可。
一个trick :将大于这个数的数设成2,小于设成0,这个数本身设成1,然后区间求和、区间替换即可。
区间求和得到2的数量即
ABC238
ABC238 A , B , C , D跳过
ABC238E
题意:
有n个数,给出q组表示你知道的和,求最终能否求出整个数组的和。
套路题 。
考虑前缀和,
已知
每个区间和转换为和能互相推导。
使用并查集即可。
最后检查0和n是否在同一个并查集里。
ABC238E
题意:有n个人,每个人有两个排名,现在需要选择k个人,任意一个选择的人和任意一个没选择的人 , 被选择的人应至少有一个排名小于没有被选择的人。
求方案数mod 998244353
发现答案与顺序无关,先按排名一为关键字排序,这样按顺序考虑就不要处理第一排名了。
令排序后的排名2序列为
则每一个i前面的没有被选择的一定满足
表示前i个元素,选择了j个,没有被选择的最小为k的方案数。
若选第i+1个,则
不选的前提为
则
答案即为
ABC238F
题意:给出序列 , 以及个询问
每次询问是否为一个完全立方数。
正解不太理解的神奇随机化算法稍后来补充。
因为区间询问可离线,所以考虑莫队。
先将所有数分解质因数并存到vector中
莫队维护所有质因数项的次数mod 3的余数
在加上一个ans维护目前不是3的倍数的项的个数,若查询时为0则答案为Yes。
Ex好像不可做(小声
总结:假期没干啥,太颓了,基本上就只打了这么点题加几道广义矩乘和线性基,,, 只是保持一下手感吧,人废了,其他人一个比一个卷%%%
本文已经结束了。本文作者:ღꦿ࿐(DeepSea),转载请注明原文链接:https://www.cnblogs.com/Dreamerkk/p/17970997,谢谢你的阅读或转载!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!