随笔分类 - 随笔
摘要:link 一道很好的线段树题目。 题外话:今天上午,全宇宙内最弱的辣鸡 Feyn 再一次和正解擦肩而过,下午这个蒟蒻看题解甚至没有看懂题解的写法(参考题解链接,我实在没看出来它的两棵线段树咋维护的,为啥觉得它只写了一棵呢,果然我还是太弱了),于是这个连题解都看不懂的菜鸡花了一下午时间研究了一种低效但
阅读全文
摘要:link 蒟蒻只会打表。 由于题目中 和 都很小,那么我们可以考虑找出一个长度为 的区间满足其中刚好有 个质数,保存下来到时候输出即可。给出打表程序的代码,代码中有注释: #include<bits/stdc++.h> #define feyn const int N
阅读全文
摘要:link 一道挺有价值的题,标的是数位DP但感觉不像呢,它感觉更像是一个递推和差分,DP倒真的说不上(毕竟它没有记忆化)。 首先第一列出现的元素是容易求的,但第二列似乎是麻烦的。但考虑一下发现,容易想到假如不考虑进位的话那么第二列的所有数应该都是回文数,而既然都是回文数了那么它的取值集合的大小就会大
阅读全文
摘要:link 明显的最小割,但数据范围比较大(虽然据讨论可以水过但我没去试)。于是考虑使用正确复杂度的算法,想到对偶图。然后这就是一个对偶图的板子了,图都给你画出来了正常加边跑最短路即可。需要注意的是加边的时候要加无向边,在这个地方卡了一会。每日维生素B。 #include<bits/stdc++.h>
阅读全文
摘要:link 由于相邻的两个数不能同时选择,于是考虑把相邻的两个元素连边。又由于整张图很明显可以进行黑白染色,于是连边之后的图会形成一张二分图。于是寻找最大的方案就变成了割掉最小的方案,跑最大流最小割即可。 #include<bits/stdc++.h> //#define feyn #define i
阅读全文
摘要:link 其实感觉这玩意不应该叫什么自动机,这似乎就是一个个人yy出来的东西。。。 给定一个文本串和许多模式串,询问每个模式串是不是文本串的子序列。如果是询问字串的话直接上kmp即可,但子序列呢。考虑贪心,寻找文本中第一个和模式串第一个元素相同的元素位置,选择它相较于选择其它值相同的元素肯定不劣,毕
阅读全文
摘要:link 排队那道题的数据加强版,那道题是动态逆序对,这道题是动态带权逆序对,实际是差不多的。直接上线段树套动态开点线段树的板子就可以了,取模方面比较严格导致我的int写法一直没过,开龙龙宝宝就可以了。空间卡得比较死,甚至我用241M过掉的这道题(空间限制是250M,请叫我空间带师)。写法上注意两个
阅读全文
摘要:link 暴力容斥。 虽然跑得比其它方法慢一些,但也不算太慢(最慢的点也就六十毫秒),个人觉得这种方法比较无脑,代码细节要少一些,简单来说就是好写。 首先合法的数对是可以暴力求得的,然后考虑补集转化,求出 Slavko 获胜的方案数就可以啦。但他获胜的方案怎么求呢?可以想到他的方案可以基于某种取法下
阅读全文
摘要:link 线段树套动态开点的权值线段树。区间查询值域的元素数量,用树套树维护即可。虽然可以用暴力水过去,但还是试一下吧。震惊的是a和b的大小关系是不一定的,调了半天不明所以。很悲惨。 #include<bits/stdc++.h> //#define feyn using namespace std
阅读全文
摘要:link 的做法比较简单,枚举两个小蜥蜴的相遇时间然后就可以把一只蜥蜴的路程划分成很多阶段,然后每个阶段的颜色可求,累计答案即可。 考虑到数据范围可以猜想需要使用 的算法,结合意义可以猜出这个算法应该是统计每只蜥蜴路程上每种颜色的路程长度然后累加输出,毕竟前面那种算
阅读全文
摘要:link 经典思路,正难则反。一般而言合并两个集合总是比拆分两个集合来得容易的,于是考虑从 个散点开始,把删边操作改成加边操作然后统计答案。然后由于是树,每次加边都一定会是合并两个不相交的集合,这样一来就可以用到启发式合并了。 现在剩下的唯一问题就是如何统计答案了。显然两个点在同一个集合内的
阅读全文
摘要:link 题目废话挺多的,简单来说就是要求构造一棵完全 叉树,按广搜顺序编号(可以感性理解为从上到下,从左到右编号)。然后多组询问,每组询问树上两个点的距离。 一道找规律题(只能这么说了)。思路是求两个点的距离要先求它们的 LCA,然后考虑三个点的深度关系就可以了。求 LCA 部分,由于树是
阅读全文
摘要:link 我是这个世界上最大的傻逼。考场上用1而不是1ll,于是一百变五十。 单点修改整体查询,考虑用线段树来维护。使用最大子段和的方法来维护每个区间前缀每次出现新数的位置和后缀每次出现新数的位置,这样一来在合并区间答案的时候可以直接用尺取法。这样一来就简单了,我用的 vector 来省空间,这也导
阅读全文
摘要:link 很简单的模拟题但数据比较毒瘤,于是考场上成功爆零。 就直接用栈来维护中缀表达式的计算,然后求出一次项系数和常数项之后上扩展欧几里得就可以了。但是它…… 数据太大,用龙龙宝宝一分都拿不到。龙龙宝宝多可爱的啊,多狠心的人才会去卡龙龙宝宝啊。 但是好在不用写高精度,因为既然所有讨论都是在模 $N
阅读全文
摘要:link 基环树板子。突然想起了一年以前的那个傍晚和黄忠公园的蚊子。往事不堪回首。 基环树找环采用了题解区的一种比较好理解的方法,即拓扑排序。无向图中不断去除度为1的结点,剩下的一定都是环上的结点(虽然可能是基环树森林)。然后可以枚举环上的结点,每次solve都先找环,然后求出这个点对应的树的答案。
阅读全文
摘要:link COCI的一大特点,卡空间。 题足够简单,每个点减去N之后求前缀和,对于每个前缀和看前面有多少前缀和小于等于它。理论上可以用动态开点线段数来做,但空间会爆只有30分左右(话说克罗地亚是穷得配不起64M以上内存的评测机吗。。。)。于是考虑优化空间,可以离线把所有前缀和离散化,再上树状数组查询
阅读全文
摘要:link 总感觉COCI的题面读不懂。题意是说给定一些平面内的点,点有点权,两个点连边的边权是两个点的集合距离。请求出一棵生成树,满足树内存在点权和模K为0的子集,最小化最大边的边权。 有一个很巧妙的结论,随意选出K个点一定能找出子集符合条件。于是得出结论树内结点不会超过K个,所以每个点只有最多K条
阅读全文
摘要:link 建议管理大大评紫。理由:巧妙的树形DP。 题意是说给定一棵有根树,需要从中选出一些节点符合: 每个选中节点的父亲也被选中 任意选中节点在原树对应的子树内所有选中的节点点权连续。 选中的所有节点不能有权值相同的。 求方案数,其中两个方案不同当且仅当它们选出的点的点权集合不同。 由于点权的值域
阅读全文
摘要:link 建议管理大大评紫,理由:巧妙的线段树优化动态规划。 首先考虑补集转化。所有顾客不受限制的购买方案显然是 ,即每个顾客买黑白画和彩色画的方案相乘。要求买彩色画的人数不少于某个值的方案,就可以转化成用总方案减去买彩色画的人数不足某个值的方案,于是
阅读全文
摘要:link 建议管理大大把这道题评蓝。理由:运用了异或的性质。 首先考虑每个棋子对哪些格子造成影响。显然对于所有与它同行同列且不和它重合的格子,加入这个棋子会使得这些格子的权值异或上这个棋子的权值。但题目中说明了棋子不会对自己的格子造成任何影响,而我们知道任何数异或自己等于零,所以这个没有影响可以看成
阅读全文