地址:https://ac.nowcoder.com/acm/contest/5477/F 解析:其实并不需要关心它具体是怎么构造的,那样的是很麻烦的。。。明确一点,某个位置出现的次数越多,就需要给它赋越大的值,既当前sum=出现次数*x。出现次数,可以通过差分数组或线段树维护一下,然后排个序,按顺 ...
分类:
编程语言 时间:
2020-05-11 00:50:32
阅读次数:
76
题意:从数组a中找出一个区间[l,r]中只出现过一次的数 设pre[i]表示a[i]在i之前的上一次出现,a[i]在[l,r]中只出现过一次等价于pre[i]<l,所以只需在[l,r]中找出一个满足pre[i]<l的i就行了。由于还必须保证i是在[l,r]中最后一次出现,一棵线段树是实现不了的,需要 ...
分类:
其他好文 时间:
2020-05-10 19:04:24
阅读次数:
50
Description: : $1 \le n, Q \le 5e5$ 题解: 这题唯一的难度就是如何知道最小不可询问子草原绿值。 这个相当于问:有一堆数,每个可以用一次或不用,问最小凑不出来的自然数是多少。 首先把这些数排序,假设当前的答案是$p$,初值$=1$ 从小到大加入每个数$x$,若$x ...
分类:
其他好文 时间:
2020-05-09 23:24:27
阅读次数:
71
新学了一下笛卡尔树,这道题是模板题,统计一下以 $x$ 为 lca 的点对就行. 然后统计的话用线段树合并 + 启发式合并就行了. code: #include <bits/stdc++.h> #define N 100006 #define ll long long #define lson s[ ...
分类:
其他好文 时间:
2020-05-08 23:00:23
阅读次数:
78
脑子笨,切不了 Ynoi,只能做比较简单的 ds 题了/kk。 题目链接: "P2572 [SCOI2010]序列操作" 思路很简单,让我们来看看吧。 先不分 $0/1$: 首先发现操作 $4$ 是最难维护的,我们联想线段树求区间最大子段和的套路即可:记录一个 ,`suf(后缀)`来记录从区间第一个 ...
分类:
其他好文 时间:
2020-05-08 22:35:44
阅读次数:
67
题目描述: 分析:虽然是求区间和,但数组是不可变的,不可变 意思是 不涉及线段树更新操作。因此可以不使用线段树这种复杂的数据结构,对于该题不使用线段树效果更好,初始化是O(n)的复杂度,以后每次调用只需要O(1)的复杂度。 // 不使用线段树的解决方案 class NumArray { privat ...
分类:
编程语言 时间:
2020-05-07 00:46:03
阅读次数:
63
本地搬运~ 关于树状数组的学习,强烈推荐这个视频:https://www.bilibili.com/video/av26371798?from=search&seid=2141442207537065040 1:树状数组:查询和修改复杂度都为log(n)的数据结构,本身可用于单点修改区间查询,加入辅 ...
分类:
编程语言 时间:
2020-05-06 22:06:50
阅读次数:
95
板子题.jpg 不同颜色互不影响,所以判断每种颜色有没有奇环就可以了,顺便判一下联不联通.jpg ...
分类:
其他好文 时间:
2020-05-06 21:27:00
阅读次数:
87
前言 由于这篇题解思路并没有什么区别,所以这篇题解的意义在于稍稍更细致地讲下思路和卡常方法。~~估计也只有我常数这么大了~~ 思路 第一感 由于题目要查询到一个点距离为$k$以内的所有点的权值和,一个显然的想法就是对每个点开一个线段树维护权值和,下标维护距离,然后暴力查询。显然这是$MLE+TLE$ ...
分类:
其他好文 时间:
2020-05-06 20:09:16
阅读次数:
75
``` //单点修改 pushup //查询区间内的最大字段和 #include #include #include #include using namespace std; const int N = 500010; int n, m; int w[N]; struct Node { //端点 ... ...
分类:
其他好文 时间:
2020-05-06 20:03:08
阅读次数:
53