dfs序上的带修主席树;求链上的信息仍然是四个点差分,只不过求前缀和变成了 $\log$ 的树状数组; 2020.01.20 ...
分类:
其他好文 时间:
2020-01-20 09:44:54
阅读次数:
59
链接:https://codeforces.com/contest/1288/problem/E 题意:序列p的长度为n,初始序列为1 2 3 4 ...n,然后有m次操作,每次指定序列中一个数移动到第一位,然后剩下的所有序列往后移动一位,求每个数在出现过的所有历史序列中所在位置索引的最大值和最小值 ...
分类:
编程语言 时间:
2020-01-19 09:50:31
阅读次数:
101
一维树状数组维护的是区间和,最后统计的是1~x数的和,而二维树状数组维护的是一个面的和,最后统计的是 (1,1)~(x,y)区域内数的和 (x,y)所维护的面大小由x,y共同决定,x决定高度,y决定宽度 add和query操作的两层循环结合二分图理解比较直观 如何分呢?首先,我们按照X坐标,把整个表 ...
分类:
编程语言 时间:
2020-01-19 00:35:57
阅读次数:
119
1760:树上数颜色 时间限制: 3000 ms 内存限制: 524288 KB提交数: 35 通过数: 9 【题目描述】送你一棵n个点的树,树根为1。一开始每个点上有一个1~n 的颜色ci,不同点颜色可以相同。 现在有 q 次操作, 分为两种类型: 1 u l r:询问子树 u 中有多少种在 l ...
分类:
其他好文 时间:
2020-01-19 00:27:55
阅读次数:
104
代码中的下标从0开始,原理是一样的 int f[N]; void upd(int x, int val){ for (int i = x; i >= 0; i = (i & (i + 1)) - 1) f[i] += val; } int get(int x){ int res = 0; for ( ...
分类:
编程语言 时间:
2020-01-19 00:06:36
阅读次数:
87
题意:Polycarp是一个频繁交流的受欢迎的送信人,他与朋友们一直交流,他有n个朋友,从1到n编号。一开始,n个朋友的编号是从1、2、3、4....n编号的,如果交流了3,那么3的位置就会移动到最前面,变成3、1、2、4...n。 分析:这道题目让我们求每个朋友的编号所能达到的最大位置和最小位置, ...
分类:
其他好文 时间:
2020-01-16 22:20:28
阅读次数:
84
1 #define HAVE_STRUCT_TIMESPEC 2 #include<bits/stdc++.h> 3 using namespace std; 4 int mn[600007],mx[600007],a[600007],pos[600007],sum[600007]; 5 int n ...
分类:
编程语言 时间:
2020-01-16 22:12:58
阅读次数:
73
题目 一棵树有$n$个结点,每个结点都是一种颜色,每个颜色有一个编号,求树中每个子树的最多的颜色编号的和 分析1 线段树合并,记录$w,sum$分别表示编号和以及颜色和,当颜色和相同时两个编号都要加,否则只加大的那一个,时间复杂度$O(nlog_2n)$ 代码1 ...
分类:
其他好文 时间:
2020-01-15 22:46:55
阅读次数:
75
前言 树链剖分,我觉得最精妙的地方就在于它是通过$dfs$序将树形结构转为线性结构便于处理,进而可以用数据结构(线段树、树状数组等)去进行修改和查询。 将复杂的结构转化为相对我们熟悉简单的结构,这个思想对很多问题是通吃的,不仅仅在树形问题,算法中,在其他领域中也常常会用到这种思想 我们先来回顾两个问 ...
分类:
其他好文 时间:
2020-01-15 13:30:34
阅读次数:
170