09 2024 档案

摘要:其实这道题目是从整体二分里面拿的,见这篇题解;其实我是想到这种分治的,但是不知道怎么处理经过mid的询问。严格来说这个已经不是整体二分了,因为单个询问不是通过二分做出来的,这个只能叫分治。然后还有用猫树分治做的,可以先去OI-wiki学一下猫树,但都要用到前缀线性基 阅读全文
posted @ 2024-09-27 16:54 最爱丁珰 阅读(4) 评论(0) 推荐(0) 编辑
摘要:看这篇题解 感觉挺简单的一道题目,为啥没做出来捏。。。 阅读全文
posted @ 2024-09-26 15:08 最爱丁珰 阅读(2) 评论(0) 推荐(0) 编辑
摘要:看这篇题解 看到第k小想到整体二分应该是不难的,就是在判断子路径上是难点;其实想到了dfn的(因为学tarjan的时候,dfn的一个小应用就是判断是否是子孙节点),但是没有想到像扫描线这么搞 阅读全文
posted @ 2024-09-24 19:04 最爱丁珰 阅读(5) 评论(0) 推荐(0) 编辑
摘要:与区间动态查询第k小非常像,只是这里搬到了树上上面,仍然考虑类似做法 先考虑不带修的情况。假设我们现在在递归树的第一层,考虑如何统计答案。现在要将权值不超过mid的节点加入到树中,然后对于每一个询问,查询路径上有多少个加入了的点,从而将询问分成两组。问题是如何查询路径上有多少加入的点 阅读全文
posted @ 2024-09-24 18:06 最爱丁珰 阅读(6) 评论(0) 推荐(0) 编辑
摘要:看这篇题解 正难则反的思想别忘了,另外一定要注意最后的ans是在第一位的 阅读全文
posted @ 2024-09-15 16:23 最爱丁珰 阅读(5) 评论(0) 推荐(0) 编辑
摘要:最开始拿到,没有发现什么想法,于是看样例,发现样例一的t1,t2是相等的,而相等的原因就是因为t2的第三个字符是1,所以对t2[1,3]排序相当于对t2[1,2]排序,于是我们不难猜出这个做法(注意,这个做法里面有一个小错误,“\ 阅读全文
posted @ 2024-09-12 15:59 最爱丁珰 阅读(4) 评论(0) 推荐(0) 编辑
摘要:这个看官方题解就好了,写的很清楚,不难想到是用单调栈的 考试的时候做这道题目,显然是考虑贡献,但是方向歪了,对于一个子区间[l,r],考虑的是其中的最小的元素作为代表元素,然后就一直没想出来(以最大元素作为代表元素显然是对称的,也做不出来),而官方题解是以子区间的右端点作为代表元素的,一下子 阅读全文
posted @ 2024-09-12 15:46 最爱丁珰 阅读(2) 评论(0) 推荐(0) 编辑
摘要:看官方题解就好了,我赛时的时候猜到答案了 这么大数据,O(n)也没办法做,所以只能check比较小的区间,然后就尝试将任意可能的区间[l,r]对应到[1,rl+1],利用充分性去搞,既然nx[l,r]的倍数,那么我们只要证明\(\foral 阅读全文
posted @ 2024-09-10 21:58 最爱丁珰 阅读(9) 评论(0) 推荐(0) 编辑
摘要:我们将操作过程中选择进行操作一的卡片称为“抛弃”,显然被抛弃的卡片的顺序无关紧要,所以如果我们确定了抛弃的卡片的编号,我们从小到大进行抛弃就好了 证明非常简单,因为最终解锁了k张卡片,所以中途被抛弃了的卡片的v的和就是k1,而我们最终的得分就是前k张卡片的v 阅读全文
posted @ 2024-09-10 20:15 最爱丁珰 阅读(6) 评论(0) 推荐(0) 编辑
摘要:我的做法就是官方做法,感觉还是比较简单的;这里主要就是提醒一下,看到n的范围是1000,这个时候一定不要只想O(n2)的算法,一定也要想On2logn的算法,因为1000还不足够大;如果直接往On2logn想的话,就可以更快地想出 阅读全文
posted @ 2024-09-09 22:19 最爱丁珰 阅读(3) 评论(0) 推荐(0) 编辑
摘要:首先观察询问次数,发现是5n2,对这个东西没有什么概念,但是看起来像log(或者说尝试一下看是不是log),于是尝试分治,有n2+2n24+4n28+...=6n2,差不多,于是尝试分治。分治有一个 阅读全文
posted @ 2024-09-09 21:23 最爱丁珰 阅读(2) 评论(0) 推荐(0) 编辑
摘要:看官方题解吧,我的做法跟官方题解一样 但是不知道怎么想到的,当个思维题做吧 阅读全文
posted @ 2024-09-08 20:42 最爱丁珰 阅读(3) 评论(0) 推荐(0) 编辑
摘要:我的赛时做法是官方题解的做法(M就是枚举i×j),但是维护用的是并查集;官方题解的维护应该是这样的:从n倒序枚举到1,对于当前数字,找到小于Mx的还没被用过的最大的数字,我们维护一个栈,观察到Mx单调递增 阅读全文
posted @ 2024-09-08 20:37 最爱丁珰 阅读(6) 评论(0) 推荐(0) 编辑
摘要:比较简单的贪心,主要是维护的过程 这是很显然的一个拓扑序,所以我赛时是直接用拓扑序做的,但是可以看看官方题解,用的扫描线+multiset,类似的搭配在Turtle and Intersected Segments中也见过 阅读全文
posted @ 2024-09-08 20:18 最爱丁珰 阅读(4) 评论(0) 推荐(0) 编辑
摘要:看官方题解或者洛谷的题解就好了,很容易看懂 这里主要就是想DP优化的事(肯定用DP解题,这个很显然);在优化DP转移的过程中,无论是O(1)记录增加的决策,还是数据结构优化DP,一般都是把相同下标的项放在一起(i.e.\(f[i]=max(f[j]+cost(j)+cost(i))=max( 阅读全文
posted @ 2024-09-08 20:08 最爱丁珰 阅读(6) 评论(0) 推荐(0) 编辑
摘要:这题认真读题啊,最开始直接按照差分做了。。。 先简单点想,将a排序,然后每次二分查找对应的应该修改的数 这样可能有个问题,就是我们修改之后的a不是我们最开始的a了,我们应该用真实的a去进行二分,而不是最开始的a,但是如果我们用真实的a进行二分的话,保证 阅读全文
posted @ 2024-09-06 22:06 最爱丁珰 阅读(14) 评论(0) 推荐(0) 编辑
摘要:这道题目就是找上界+构造上界,见官方题解就好了 我是想到hint 1的,但是没有想到构造上界 阅读全文
posted @ 2024-09-04 21:15 最爱丁珰 阅读(4) 评论(0) 推荐(0) 编辑
摘要:真难啊,见官方题解 官方题解倒数后三段是这样的:在两端数字相同的时候我们会进行删除,pl会增加,pr会减少(注意两个p都是针对数组[1,n]而言的,而不是当前考虑的子串),但是会发现两者的和不变,于是考虑统计pl+pr与最初相同的数量就好了 阅读全文
posted @ 2024-09-04 20:50 最爱丁珰 阅读(11) 评论(0) 推荐(0) 编辑
摘要:看这篇题解 一定要学会这种打表SG函数的方法,实在证明不出来,又很显然是SG函数的就要学会打表 阅读全文
posted @ 2024-09-04 19:45 最爱丁珰 阅读(5) 评论(0) 推荐(0) 编辑
摘要:看这篇题解 主要是第一段,这种等效转换的操作在图论中常有 阅读全文
posted @ 2024-09-04 19:41 最爱丁珰 阅读(3) 评论(0) 推荐(0) 编辑
摘要:这里主要讲一下蓝书法一的等效方法的正确性。假设我们已经知道了最终的答案的树的样子,设为T,设高度为h,则答案为f[h,(1<<n)1];设高度为h的节点集合为S,那么我们可以知道,在T中删掉S中的节点得到的新树的T1的代价就等于\( 阅读全文
posted @ 2024-09-03 23:31 最爱丁珰 阅读(4) 评论(0) 推荐(0) 编辑
摘要:设题目给的图是G,其源点汇点分别是s,t 假设我们先求有源汇上下界可行流,我们发现此时跟无源汇上下界可行流的差别就是s,t没有流量守恒,于是我们添加一条边(t,s),其容量限制为无穷,设添加边后的图为G1,那么G的可行流与G1的可行流(注意 阅读全文
posted @ 2024-09-03 13:35 最爱丁珰 阅读(7) 评论(0) 推荐(0) 编辑
摘要:注意这里给的有向图不是一个网络,因为是没有源点汇点的;相当于就是构造一个流函数f(定义域是每条边),使其满足流量守恒和容量限制 我们没学过有下界的一般图的最大流算法,所以这里尝试转化成无下界的网络最大流算法;也就是说对于原图G,我们要构造一个新网络G1,使得G的一个 阅读全文
posted @ 2024-09-03 10:33 最爱丁珰 阅读(23) 评论(0) 推荐(0) 编辑
摘要:二分图多重匹配建模即可 阅读全文
posted @ 2024-09-03 08:41 最爱丁珰 阅读(3) 评论(0) 推荐(0) 编辑
摘要:借助这道题目,讲一下所有最大流建模的思路 对于原问题的解集S和我们建模之后的网络的可行流集合T,我们需要证明sS,tT,|s|=|t|(前面一个绝对值符号表示s的值,后面一个绝对值符号表示t的最大流)且\(\forall t 阅读全文
posted @ 2024-09-02 23:50 最爱丁珰 阅读(16) 评论(0) 推荐(0) 编辑
摘要:算法执行过程见蓝书和OI-wiki,当前弧优化见OI-wiki的描述,代码见下 #include<bits/stdc++.h> #define ll long long using namespace std; const int N=10010,M=100010,inf=1<<29; int no 阅读全文
posted @ 2024-09-02 23:17 最爱丁珰 阅读(2) 评论(0) 推荐(0) 编辑
摘要:代码见下 #include<bits/stdc++.h> #define ll long long using namespace std; const int N=1010,M=10010,inf=1<<29; int End[M<<1],Next[M<<1],Len[M<<1],Last[N]; 阅读全文
posted @ 2024-09-01 11:04 最爱丁珰 阅读(3) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示