自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 收藏
  • 关注

原创 树链剖分练习

将树上区间问题转化为log N个区间问题。

2022-09-12 15:38:43 324 1

原创 树形dp题单训练

定义出状态然后自下而上dp。

2022-09-07 18:28:38 303

原创 Codeforces Round #806 (Div. 4)D~G

Problem - G - Codeforces动态规划。设f[i][j]为第i位使用j次免费后的最大值。错误思路最后输出有负数。仔细想了一下,最后全变成0的情况没有必要再-k了。F. Yet Another Problem About Pairs Satisfying an InequalityProblem - F - CodeforcesO(n)复杂度的办法。pre[i]保存到i为止多少个a[i]满足a[i]..................

2022-07-14 00:06:32 631

原创 树的重心、LCA

定义:对于一棵无根树而言,一个节点被选为根节点后,其子树包含节点最大值最小得点为树的重心。一棵树有1-2两个重心。性质:当重心为根节点时,他底下每个子树的大小不大于整颗树大小的一半。重心到其他所有节点的距离和最小。一般求LCA的方法:先计算出u,v的深度,将u,v调整到同一个深度(取深度小的),两个节点一起逐级往上跳,直到两节点相等。给你一棵树,树以下列方式给出:树以下列方式给出:接下来有 mm 组询问,每组询问有两个数 x,y(x≠y)x,y(x≠y), 你需要求出 x,yx,y 的最近公共祖先。见题面。

2022-07-09 21:40:47 213

原创 树、存储DFS/BFS序、树的直径

链式前向星或者vector。图和树的存储方法一致。遍历一棵树的方法有两种:DFS/BFS。DFS是一直往深处走,在搜索过程中依次记录经过的点所生成的序列就是DFS序。DFS序不唯一。DFN的求法:有根树的BFS是按照层级顺序搜索,按照深度从小到大依次遍历所有的点。队列里元素出现的顺序就是BFS序。BFS序求法:无根树的DFS/BFS序无根树中的节点只有相邻关系而没有父子关系。遍历无根树时,可以从任意节点出发,像遍历有根树一样遍历整颗树。区别是要记录此节点的来源,以免无限递归再次访问。树上任...

2022-07-09 20:03:57 309

原创 ST表及RMQ例题

主要是RMQ的工具,可以查找最大值或者最小值。线段树查询最大值或者最小值预处理O(n),查询O(log)。倍增的思想。先处理出所有长度为1的最小值,再处理出长度为2的最小值,然后是4,8,16······。用f[i][j]表示长度为2的j次方第i个位置上的最小值。有递推公式:f[j][i]=min(f[j][i-1],f[j+2i-1][i-1])。根据计算机组成原理,数组大访问的速度开销也较大。[22][1e6]的开销小于[1e6][22]的开销。ll 改成unsigned int 时间只用了一半,可见

2022-07-08 02:24:26 1615

原创 笛卡尔树及例题

选择数列里面最小的值作为根,从左边右边选择一个最小的值当做左右儿子,循环往复。拿最大值当做根也可以。主要取决于具体问题。1,区间最小(大)值。区间最小值就为区间左右端点值的LCA所代表的值。就比如 3 5 1 7 4 6 2,那么5 6 之间的最小值就是5 与 6在树上的LCA,画个图可以看出是1.2,中序遍历一遍就是原数组。3,一个点的子树就是以这个点为最小值的极长的区间,因此一个数左边第一个比它小的数就是树上第一个左拐的位置。线段树构造的总复杂度是NlogN。每次查找最小值是logN。ST表预处理Nlo

2022-07-08 01:22:09 873

原创 Fishingprince Plays With Array(思维/数学/实现)

传送门 Problem - 1696C - Codeforces把a和b数组不断拓展,直到不能拓展为止,记不能再拓展的数值为,每个最小元对应一个ai或bi。记录每个所对应的数字和对应的ai,bi之和,如果当前最小元和之前的一样,那就让ai或者bi跟之前的相加。最后比较最小元及对应和是否相等。另一种思路就是把a不断拆分,然后合成b数组。...

2022-07-03 17:02:59 189

原创 Helping the Nature(差分数组)

传送门 Problem - 1700C - Codeforces 1700转化成对差分数组的一对点值修改。跟这题是一样的 https://www.luogu.com.cn/problem/P7994

2022-06-20 22:20:43 322

原创 Gambling(dp/map/思维)

传送门 Problem - 1692H - Codeforces 1700用map把坐标分离出来处理,效率高。TLE代码估计是for(auto &m:now){}超时的,毕竟每进一个数就要遍历一次map,复杂度可能会比较高。想法是,每一个数会对后面产生1的影响,如果这个数后面的相邻数和前面的数相等,那么影响累加。比如两个连续的1,那么再接下来两个位置内出现1都是可以拼接起来的。每往后遍历一个数的时候前面不同值的影响会减小1,然后维护好这个影响就可以了。如果影响没有被消除(>0),代表可以和后面的值拼接。

2022-06-19 14:13:13 180

原创 Fake Plastic Trees(树形dp/贪心)

传送门 Problem - 1693B - Codeforces 1700树形dp,贪心。首先叶子节点一定只要填一次就能填满。为了不浪费,就填叶子结点的最大值。然后以同样的值去填其父节点。父节点获得其子节点的ri值之和,有两种可能,一种是比le小,那么就像叶子节点一样直接填满;否则就忽略,传给其父节点当前的f值。这是一种贪心思想。正确性说明(不是证明,不会严谨证明):如果不选最大的填充,那么肯定会亏,就比如一个叶子节点有必要填两次吗?还有就是f值比le大就不用再填了,这个节点已满足,没必要再填了,重点在其父

2022-06-18 21:17:24 587

原创 2^Sort(思维/前缀和/滑动窗口)

传送门 Problem - 1692G - Codeforces 1400滑动窗口,维护窗口内相邻两项a[i]/a[i+1]的比值

2022-06-18 18:42:24 213 1

原创 The Enchanted Forest(思维/前缀和)

传送门 Problem - 1687A - Codeforces 1600分类,如果kn时,显然就要全部选择数组中的元素,这时候问题就变成了怎么走才能最大化蘑菇数量。然后发现在中间位置开始向左边或者右边移动能最大化取到的蘑菇。设周期为T,我一开始先推出了T=1,T=2,T>=3的情况下的最大采蘑菇数量。但觉得很繁琐,处理起来非常麻烦,感觉正常思路应该不是这样,于是看了Tutorial的思路。题解思路在于怎么丢下最少的蘑菇,而我是推出怎么找到最多的蘑菇。事实上......

2022-06-17 18:02:35 233

原创 awoo’s Favorite Problem(dp/思维)

传送门 Problem - 1697C - Codeforces 1400一个b可以选择向左移动或者向右移动。有点动规内味了。当前b可以左移的距离为前面a的个数+前面一个b的le[i]的值;右移为后面c的个数+后面一个b的ri[i]的值。一开始的思路。就是query_num的时候,最坏情况下会到n2复杂度。......

2022-06-16 17:45:55 282

原创 Maximum Crossings (Hard Version)(树状数组/逆序对)

传送门 Problem - 1676H2 - Codeforces 1500逆序对。动态维护的是大于等于当前值的个数和。记得开long long。

2022-06-15 23:02:50 412

原创 Rooks Defenders(multiset/线段树二分/思维)

传送门 Problem - 1679C - Codeforces维护最上下和左右的界限。若在界限内,那就符合要求。另外一种情况就是行或者列能完全包含,这个用线段树二分解决,效率还行。1400分的题目用线段树二分就离谱。WA代码用multiset和线段树维护。想清楚自己写的什么东西,想清楚再写代码。...

2022-06-15 20:35:25 170

原创 Infected Tree(递归/树形)

传送门 Problem - C - Codeforces一开始第一眼以为是树形dp,就先把每个节点下面的节点个数(不包括自己)全求出来了,然后后面发现没用…然后又想到这个会不会是从下至上的dp。然后一个节点会被分为两种情况?被毒和不被毒。然后发现这个不太好想。思考过程中发现,一个节点中毒就跟一开始的根节点一样,这个过程和结构是类似的。而一个毒只会向下传递一层,而一层的另一个节点会被砍掉,最终的结果就是得到一个连续的且是一个节点一个节点串联起来的链子。说白了就是一个路径。此问题就转化为求出从根节点到度数为1或

2022-06-14 21:36:21 293

原创 kotori的设备 P3743(二分答案)

P3743 kotori的设备 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)二分枚举使用时间。所使用的能量必须小于等于所提供的能量。注意点:枚举上界(ri)不是使用初始能量时间最长的。

2022-06-09 17:35:50 236

原创 #797Div3 codeforcesround (A~G题)

Problem - G - Codeforces思维。不断维护递减序列。set内保存的是每节火车的头。对于一个修改,如果其前一个id的值比它大那就放入集合s。后面依次排出不符合严格递减序列的元素。复杂度O(mlogn)。F. Shifting StringProblem - F - Codeforces画出来就是很多个圈,他们之间能不断右移。最小交换次数就是所有圈的最小右移最小周期数的最小公倍数。思路很好想,主要在于怎么解决。处理方法上想到dfs,求出圈的序列。然后不断枚举可能性求出最小的右移周期。考虑

2022-06-09 17:20:59 278

原创 Column Swapping 1684C(思维/暴力)

传送门 Problem - 1684C - Codeforces一开始想了半天什么样的情况可行什么样不可行。写了一通发现都有问题。然后突然想到其实只要找到必须要换的两列让它们交换,最终检验即可,真是一下豁然开朗。WA点:注意下方不能break的位置。思维还是有点慢,码力有点弱。...

2022-06-07 19:45:59 168

原创 LIS or Reverse LIS?(思维)

传送门 Problem - 1682C - Codeforces问一个数列的严格增序列和减序列的较小值的最大值是多少,序列随意排列。个数为2个的对两个都有1的贡献;个数为1的则两个可以有一个共用;个数超过2的数多出来的没用。...

2022-06-07 16:58:38 173

原创 Sum of Substrings 1691C(分类讨论/思维)

传送门 Problem - 1691C - Codeforces给定01序列,求出至多k次交换后最小的f(s).分类讨论。1)在序列中间交换。存在序列a1,a2,a3,a4.令a2,a3交换,那么将发生如下变化:a1a2->a1a3;a2a3->a3a2;a3a4->a2a4.显然当a2=a3时,不产生影响;假设a3=1,a2=0,那么产生的影响为1+9-10=0,不产生影响;反之a3=0,a2=1亦然。2)在队头交换存在序列a1,a2,a3.令a1,a2交换,那么将会发生如下变化:a1a2->a2a1;a

2022-06-06 23:47:46 215 2

原创 Smallest Sub-Array UVA-11536(可变滑动窗口)

传送门 UVA 11536可变滑动窗口。右指针不断向后推进,左指针在cnt==k时向右推进直到cnt

2022-06-06 16:36:56 94

原创 Radar Installation poj1328(贪心)

传送门 http://poj.org/problem?id=1328给定岛屿坐标,雷达半径,问覆盖所有岛屿所需最少雷达。看作岛屿覆盖一个圆,该圆与x轴相交,得到[le,ri]的区间。区间重叠部分就是节省的手段。如果下一个区间的ler?r:right;==思考问题需要注意完整性和严谨性。...

2022-06-06 15:39:02 72

原创 Bin Packing poj2782(贪心)

传送门 2782 – Bin Packing (poj.org)给定背包,至多装两样东西,所有东西都要被装起来,装起来的物品不得超过背包容量。问最少要几个背包。小的东西可以和大的东西拼在一起放进包里,这是优先情况;如果超容量了,那么就考虑只装大的,小的留着期待和下一个大的拼凑在一起,因为单独放一个小的比较浪费。...

2022-06-06 13:22:56 79

原创 Saruman‘s Army poj3069(贪心)

传送门 3069 – Saruman’s Army (poj.org)给定数列,和一定半径r,要求用最少的数,覆盖整个数列。一个数k可以覆盖[k-r,k+r]的范围。贪心。从第一个点出发,找到第一个大于k+r的数,将它之前的一个数作为中间点last,它一定...

2022-06-06 13:20:31 85

原创 Fence Repair poj3253(贪心/哈夫曼树)

Fence Repair poj3253传送门 http://poj.org/problem?id=3253利用优先队列构造哈夫曼树。这个结构本身就是求的WPL,但是这个思路来源并不是这个。而是自底向上的贪心思想:每次取两个最小的板子合在一起,那么费用肯定是最低的。合成到最后阶段,就是整个板子。哈夫曼树(最优树)带权路径长度WPL∑i=1nWi∗Li\sum_{i=1}^{n}Wi*Lii=1∑n​Wi∗Li权值越大的叶节点越靠近根节点,权值越小的越远离根节点。权值越大的编码越短,权值越小的哈夫

2022-06-06 13:08:35 74

原创 An Easy Problem(bitmask/暴力)

2453 – An Easy Problem (poj.org)给定一个数,找一个比他大的最小数。这个数满足其二进制中’1’个数和这个数相同。受到短除法启发,直接运用短除法记录这个数的’1’字符个数,只要这个’1’个数和给定数一样,那就不用再往下找了。...

2022-06-06 13:03:28 75

原创 石子游戏 III(博弈论)

Alice 和 Bob 正在玩一个关于石头的游戏。共有 n (n 为偶数)堆石子,其中第 i 堆最初含有 ai 个石子。他们轮流选择 n2 堆非空石子,每堆移除掉正数个(可以不同)的石子,从 Alice 开始。不能执行操作的人将输掉游戏。假设 Alice 和 Bob 都足够聪明,你知道谁会赢得游戏吗?输入格式第一行包含一个整数 n (2≤n≤106),n 为偶数第二行包含 n 个正整数 a1,…,an (1≤a1,…,an≤109)Alice 或 Bob,表示最终赢家样例输出思路显然第一个制造空堆

2022-06-05 23:40:54 505

原创 Inversion Counting(树状数组/奇偶性)

传送门 Problem - 911D - Codeforces不断翻转区间,求出翻转后区间的逆序对的奇偶性。如果总对数是奇数,那么之前和交换之后一定不同奇偶性;如果是偶数,那么一定同奇偶。而交换左边区间和右边区间逆序对对数都不受影响。所以只要看交换区间的总对数的奇偶性即可。...

2022-06-05 21:41:12 145

原创 二维差分2(二维差分/离散化)

给一个n×m的矩阵a1,1,a1,2,…,a1,m,…,an,m和q个修改操作。一开始所有位置都是0,每次修改给出五个数x1,y1,x2,y2,d,令所有ai,j(x1≤i≤x2,y1≤j≤y2)加上d。求出所有操作结束之后,整个矩阵的值。第一行三个整数n,m,q(1≤n,m≤109,q≤2×103)。接下来q行,每行五个整数x1,y1,x2,y2,d(1≤x1≤x2≤n,1≤y1≤y2≤m,1≤d≤109)。为了防止输出过大,输出操作完之后矩阵中所有数的异或和。.........

2022-06-05 20:19:35 330

原创 离散化写法(pair/stl)

利用pair数组手动去重。用stl

2022-06-05 15:53:27 126

原创 国家铁路(二维前缀最小值)

dls的算竞王国可以被表示为一个有 HH行和 WW列的网格,我们让 (i,j)(i,j)表示从北边第ii行和从西边第jj列的网格。最近此王国的公民希望国王能够修建一条铁路。铁路的修建分为两个阶段:dls的愿望是希望用最少的花费去修建一条铁路造福公民们。现在请你求出这个最小花费。第一行输入三个整数分别代表H,W,C(2≤H,W≤1000,1≤C≤109)H,W,C(2≤H,W≤1000,1≤C≤109)。接下来HH行,每行WW个整数,代表Ai,j(1≤Ai,j≤109)Ai,j(1≤Ai,j≤109)。输出一

2022-06-05 14:51:57 232

原创 Moo Volume S(前缀和/推导)

传送门 USACO05JAN]Moo Volume S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)想要去掉绝对值就要使其有序,所以要先排序。去掉绝对值之后列出表达式化简,利用前缀和解决。

2022-06-05 13:58:54 130

原创 ClumsyCowsS(队列)

传送门 USACO12NOV]Clumsy Cows S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)给出一个偶数长度的括号序列,问最少修改多少个括号可以使其平衡。队列。如果左括号存在一定能和一个右括号配对,如果发生配对,那么就忽视掉这一对括号。那么剩下的一定是))…)))((…(((分别是ri和le个,那么修改个数就是(le>>1)+(ri>>1)+(le&1)+(ri&1)....

2022-06-05 13:48:51 211

原创 Circular RMQ(线段树)

传送门 https://vjudge.net/problem/CodeForces-52C用线段树维护环形数组查询最小值,以及区间值修改。区间值修改作为tag维护即可。由于区间是整体加上add的,所以加上add之后的最小值就是当前最小值加上add。...

2022-06-05 13:30:58 174

原创 [USACO21DEC] Air Cownditioning B(差分)

Farmer John 的 NNN 头奶牛对他们牛棚的室温非常挑剔。有些奶牛喜欢温度低一些,而有些奶牛则喜欢温度高一些。Farmer John 的牛棚包含一排 NNN 个牛栏,编号为 1…N1 \ldots N1…N,每个牛栏里有一头牛。 第 iii 头奶牛希望她的牛栏中的温度是 pip_ipi​,而现在她的牛栏中的温度是 tit_iti​。为了确保每头奶牛都感到舒适,Farmer John 安装了一个新的空调系统。该系统进行控制的方式非常有趣,他可以向系统发送命令,告诉它将一组连续的牛栏内的温度升高或降低

2022-06-05 00:42:33 546

原创 The Child and Sequence(线段树取模/区间最大值)

传送门 Problem - 438D - CodeforcesAt the children’s day, the child came to Picks’s house, and messed his house up. Picks was angry at him. A lot of important things were lost, in particular the favorite sequence of Picks.Fortunately, Picks remembers how to re

2022-06-03 23:29:08 182

原创 Can you answer these queries IV(线段树开根优化)

You are given a sequence A of N(N

2022-06-03 13:41:39 114

原创 Ultra-QuickSort(树状数组/离散化)

2299 – Ultra-QuickSort (poj.org)In this problem, you have to analyze a particular sorting algorithm. The algorithm processes a sequence of n distinct integers by swapping two adjacent sequence elements until the sequence is sorted in ascending order. For t

2022-06-03 12:37:02 182

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除