摘要:
边权树链剖分 一般的树链剖分都是维护的点权,而如果要维护边权怎么办呢? 思路 我们可以把边权转换为点权。一个点有很多个儿子,但只有一个父亲。如果一个节点的点权记录到其儿子的边权就显然不行了,只能记录这个点到其父亲的边权。 如果要修改查询 $\text{x y}$ 的所有边权,通过维护点权的思路,先修 阅读全文
摘要:
树链剖分学习笔记 简介 树链剖分是一种可以把树丢到线段树上维护的一种算法,时间复杂度为 $O(n \log^2 n)$。 思路 一、一些概念 1.重儿子:如果一个点有儿子,那么所有儿子中儿子最多的一个儿子就是这个点的重儿子。有点绕,可以看图理解。图中标红的点就是重儿子。 2.轻儿子:不是重儿子的点就 阅读全文
摘要:
[SCOI2014]方伯伯的玉米田 题目描述 方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美。这排玉米一共有 $N$ 株,它们的高度参差不齐。方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感的玉米拔除掉,使得剩下的玉米的高度构成一个单调不下降序列。方伯伯可以选择一 阅读全文
摘要:
树状数组学习笔记 简介 树状数组是一个可以在 $O(\log n)$ 的时间复杂度内支持单点修改和查询前缀和的操作的数据结构。 原理 观察发现线段树中有很多的冗余的部分。 红色部分为冗余部分。 把冗余部分去掉。 把每个节点编个号。 把每个节点的子节点个数和父结点编号列表出来。 | 1 | 2 | 3 阅读全文
摘要:
CSP-J2022题解 T1 乘方 思路 非常简单,直接for循环上就行了。为什么不会炸呢?因为就算a=1e9,乘两次也炸不了long long。 代码 #include<cstdio> long long a,n,ans=1; int main(){ scanf("%lld%lld",&a,&n) 阅读全文
摘要:
一元二次方程 简介 一元二次方程是通过化简后只含有一个未知数,并且含未知数的最高次数是2的整式方程。 一元二次方程可以化简为: $$ ax^2+bx+c=0 (a \ne 0) $$ 解法 $$ ax^2+bx+c=0 $$ 1.移项 将常数项 $c$ 移动至等号右侧: $$ ax^2+bx=-c 阅读全文
摘要:
模板整理(2022.10) 1.线性筛素数 bool is_prime[100000005];//是否为素数 int prime[100005],cnt;//素数数组,cnt:素数个数 void get_prime(int maxn){ memset(is_prime,1,sizeof(is_pri 阅读全文
摘要:
方便$\text{WA}$的时候对拍的程序。 #include<bits/stdc++.h> using namespace std; int main(){ for(int t=1;;t++){ system("data > in.txt"); system("wa < in.txt > out. 阅读全文
摘要:
[NOIP2014 提高组] 飞扬的小鸟题解 题目描述 Flappy Bird 是一款风靡一时的休闲手机游戏。玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙。如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告失败。 为了简化问题,我们对游戏规则进行了简化和改 阅读全文