• 2024-10-09洛谷P3258 [JLOI2014] 松鼠的新家
    Problem给定一棵树,再给出其在树上的移动顺序,从\(a_1\)开始,在\(a_n\)结束,求出每个节点最少需要经过多少次(终点即\(a_n\)的最后一次到达不算)。其中\(n\le3\times10^5\),\(1\lea_i\len\)且保证a是1~n的排列Solve不难想到最少遍历的次数就是全走最短路,而一棵树中u->v的最短
  • 2024-09-28csp模拟赛 6 9.28
    0+40+10+0一言以蔽之曰“一上午白干”T1一般图最小匹配首先,对答案有贡献的点对一定在排序后的位于相邻位置所以排序后取出所有\(a_{i+1}-a_{i}\)但不能像Kruskal一样每次取最小,因为其只需要考虑连通性,不涉及其它限制。所以用dp或者可反悔贪心取最优解点击查看代码#in
  • 2024-09-25Prefix of Suffixes
    为什么求Z函数的过程又被称为【扩展KMP】呢?因为KMP算法是可以求出哪些后缀能与前缀完全匹配的,而Z函数则对于那些不能完全匹配的后缀,求出了最大的匹配长度现在你已经将问题转化为:在未被标记的后缀中,快速锁定当前新增的字符会使得哪些后缀失配“未被标记”太抽象了,回溯这个条件—
  • 2024-09-13Luogu P10179 水影若深蓝 题解 [ 绿 ] [ 并查集 ] [ 构造 ]
    水影若深蓝:挺好的一道并查集构造题。观察不难发现“距离为\(2\)”这个条件我们可以通过黑白染色实现,我们把他们的中转点染成与他们相反的颜色,把这两个距离为\(2\)的点染成相同颜色。这个染色问题就很并查集。于是我们用并查集维护相同的种类。显然,当图上只有一个连通块的
  • 2024-08-28树形 DNA
    由于左右子树不等价,我们可以以Trie树的视角考察原树,发现“叶子节点不超过20个”的条件等价于这棵Trie树可以用不超过20个01字符串表示树的匹配不好做,但字符串匹配是可做的。于是我们可以想到把树的匹配“折叠”成20个字符串的匹配猜想时间复杂度是O(20n),其中20是枚举的复杂度把
  • 2024-08-25A+B Problem
    异或运算对加法不满足分配律mod(2^32)可以视为保留二进制表示下的32位大胆猜测解是唯一的点击查看代码#include<bits/stdc++.h>usingnamespacestd;unsignedinta[300005],b[300005],ans[300005];intmain(){ ios::sync_with_stdio(false); cin.tie(0); intT;
  • 2024-08-23题解:P10903 [蓝桥杯 2024 省 C] 商品库存管理
    题目大意有一个初始化为\(0\)的长度为\(n\)的序列,现有\(m\)个操作,每次将区间\([L,R]\)中的数量加\(1\),求如果不做某个操作将会有多少个数量为\(0\)的量。解题思路当看见这句话时就想到了差分,这题我们可以使用差分先处理将所有的操作执行后的数组,然后在算出如果减
  • 2024-07-30寻找宝藏
    树状数组可以用来维护前缀最大值把矩形按某个坐标排序来处理问题的思想点击查看代码#include<bits/stdc++.h>usingnamespacestd;intp[300005],v[300005],n,m;longlongans[300005],tmp[300005],f[300005],g[300005],h[300005],c[300005];structt1{ intx1,y1,x2
  • 2024-07-10【模板】多项式乘法逆
    变量的值被莫名修改,往往是因为地址的传递导致两个变量绑定在了一起怎样搜索替换double为longdouble呢?或许可以先转化为longDouble,再转化为longdouble点击查看代码#include<bits/stdc++.h>usingnamespacestd;longlonga[300005],tmp[300005];longlongf0[300005],
  • 2024-07-09快速傅里叶变换复习笔记
    .real()成员函数FFT的本质是快速计算多项式的点值表示对负实数的四舍五入需要-0.5编写函数接收数组地址时,注意不能破坏原数组FFT有较为严重的精度问题,double甚至难以准确计算两个\(10^9\)级别的整数相乘的结果,即使采用longdouble也时常无法得到准确的答案,这或许也是模板题中
  • 2024-07-02Nanami and Subtree of Tree
    新增一条树边,等价于,在原先的有向图游戏上,对于每个状态,都连一条通向该单一根节点状态的边,故所有状态的SG函数值都+1,利用有向图游戏的组合求SG函数值点击查看代码#include<bits/stdc++.h>usingnamespacestd;vector<int>a[300005];intsg[300005],f[300005];intread1()
  • 2024-05-13P3147 [USACO16OPEN] 262144 P
    原题链接题解1.常见思路:\(dp[l][r]\)为把\([l,r]\)内的元素全部消掉留下一个元素的值,然后枚举中间点但是这样内存不够,观察到\(a_i\in[1,40]\),我们可以换个思路,由于区间\([l,r]\)内全部消掉留下一个元素的值\(v\),其中\(l,r,v\)都是固定的所以我们可以令\(dp[i
  • 2024-02-16洛谷 P4065 题解
    模拟赛T1,纪念一下第一次场切紫。(话说场上这么多人切是不是都找到原了,就我这么傻想了半天)正难则反,很容易的将题目转化为选择若干种颜色,使这些颜色在原数组中的位置连续。设$pre_i$为颜色$i$最早出现的位置,$suf_i$为颜色$i$最晚出现的位置。假设通过选择若干颜色得到的位
  • 2024-02-03[NOI2015] 品酒大会
    独立过了一道NOI的题,开心~我的做法是后缀数组+单调栈+st表,并没有用到并查集点击查看代码#include<bits/stdc++.h>usingnamespacestd;strings;intsa[300005],rk[20][300005],r[300005],n,w,h[300005],p[25],z[300005],st0[20][300005],st1[20][300005],f[600005];lo
  • 2024-01-31CF1916E Happy Life in University
    关于我赛时线段树忘了开四倍空间导致白吃了一发罚时这档逝原题传送门约定\(x\)子树内的叶子称为\(x\)的叶子。与\(x\)颜色相同的点称为\(x\)的同色点或\(x\)色点。所有在\(x\)子树内的、到\(x\)的路径上(两端不含)没有\(x\)的同色点的\(x\)的同色点称为\(x\)
  • 2024-01-28Codeforces Round 921 (Div. 2) 赛后总结
    搜索替换int->longlong是一个好习惯赛后5分钟就改对E题了,好可惜。不过1个小时都没能做出来,也说明自己不太熟练吧线段树善于维护满足区间可加性的一类信息,这与本题中的代价和相契合。特殊之处在于其修改方式。每个区间会在线段树上被划分为\(O(log_{2}n)\)个小区间即使是最
  • 2023-12-11D. Yet Another Monster Fight
    原题链接1.导论这道题能不能用贪心做?答案是不能,具体为什么已经有题解给出回答。当贪心无法求解时,我们考虑一下动态规划。2.算法设计对于任一节点,其最坏情况(即所需最大起始威力值,后文称最大值)是什么?当第一个被攻击的怪物(以下称头怪物)在其右边时,其最大值为右边怪物的数量加上自