![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构---------------------
Toooooocold
这个作者很懒,什么都没留下…
展开
-
HDU 6138 Fleet of the Eternal Throne
AC自动机。所有的串都插入字典树跑失配。结点val值标为字典树上的深度。 对于每对串,前一个串先跑一遍匹配把点都标记下,后一个串跑一下去标记过的最深点就可以了。原创 2017-08-22 20:54:35 · 168 阅读 · 0 评论 -
计蒜客 17120 Xor
Source:2017 ACM-ICPC 亚洲区(西安赛区)网络赛Problem:∙一棵树,n个结点各有一个值 ∙q个询问,问u→v这条路径上第0,k,2k..mk个点的异或值。 ∙类似于HDU5840,但是求的是这条路径上的最大值原创 2017-09-18 19:23:19 · 446 阅读 · 0 评论 -
HDU 6194 string string string
source:2017 ACM/ICPC Asia Regional Shenyang Online题意:给你n个字符串,问恰好出现k次的字符串有几种。用后缀数组构造出height数组后,注意到对于一段连续的长度为k的区间,前缀长度的下界为max(h[L],h[R+1),上界为min(h[L+1],h[L+2]...,h[R])原创 2017-09-12 16:13:09 · 190 阅读 · 0 评论 -
CodeForces Gym101161E ACM Tax
树上第K大原创 2017-11-22 12:44:12 · 307 阅读 · 0 评论 -
【带修莫队】CodeForces 940F Machine Learning
Source:Source:Source: Codeforces Round #466 (Div. 2) Problem:Problem:Problem: nnn个整数,mmm种操作,一种是查询[l,r][l,r][l, r]的mex{c1,...,c109c1,...,c109c_1, ..., c_{10^9}},cxcxc_x指xxx出现的次数,另一种是修改一个整数的值。 Idea:Id...原创 2018-02-27 17:29:06 · 519 阅读 · 0 评论 -
【循环节+线段树】ZOJ4009 And Another Data Structure Problem
Source:Source:Source:151 - ZOJ Monthly, March 2018 Problem:Problem:Problem: 1 l r: Change (al,al+1,…,ar)(al,al+1,…,ar)(a_l, a_{l+1}, \dots, a_r) to (a3l,a3l+1,…,a3r)(al3,al+13,…,ar3)(a_l^3, ...原创 2018-03-10 22:47:36 · 493 阅读 · 0 评论 -
【splay】BZOJ1500 维修数列
Source:Source:Source:[NOI2005]维修数列 Problem:Problem:Problem:模板题。Splay的一些基础操作:插入/删除/求和/求最大子段和/翻转 Idea:Idea:Idea: 1.处理T[0],maintain时不能影响父亲。 2.首尾放两个哨兵,防止越界。 3.pushdown放到get_kth中,注意maintain的时机。 4.不会m...原创 2018-04-10 20:43:28 · 128 阅读 · 0 评论 -
【DAG博弈+主席树】Wannafly挑战赛15 F 下棋
Source:Source:Source:Wannafly挑战赛15 Idea:Idea:Idea: 有向无环图直接求每个点的sg,放棋子相当于是一个新点。每个棋子对应一个游戏,最后求nim游戏和。那么问题在于求mex[L,R]mex[L,R]mex[L,R],用莫队+分块直接就能做。 然后学习一波主席树的做法。对于mex[L,R]mex[L,R]mex[L,R],相当于在前...原创 2018-05-13 17:53:15 · 170 阅读 · 0 评论 -
【树上莫队】HDU 5799 This world need more Zhu
Source:Source:Source:2016 Multi-University Training Contest 6 Problem:Problem:Problem:一棵树,每个结点都有颜色。两种查询,第一种,u的子树上有颜色x出现了A次,t1+=x,有颜色y出现了B次,t2+=y,求gcd(t1, t2),第二种,询问u到v链上的情况。 Idea:Idea:Idea:第一种情况,dfs...原创 2018-07-15 16:42:30 · 169 阅读 · 0 评论 -
【带权中位数】CodeForces 1053C Putting Boxes Together
Source:Source:Source:Codeforces Round #512 (Div. 1, based on Technocup 2019 Elimination Round 1)Probelm:Probelm:Probelm:n=2e5个物品从左到右排列,第i个物品的位置pos[i],重量w[i]。每次询问如果将pos[l]…pos[r]这段物品移到某个连续区间[x, x+(r-l...原创 2018-10-02 15:27:07 · 209 阅读 · 0 评论 -
HDU 5840 This world need more Zhu
Source:2016中国大学生程序设计竞赛 - 网络选拔赛Problem:∙一棵树,n个结点各有一个值 ∙q个询问,问u→v这条路径上第k,2k..mk个点的最大值。 ∙类似于计蒜客 17120 Xor, 但是求的是这条路径上的异或值原创 2017-09-19 11:25:40 · 483 阅读 · 0 评论 -
HDU 6203 ping ping ping
如果注意到按照lca的深度来贪心,当前u,v走得通就取那个lca,使得他的子树都无法再连出去,那么结果一定是最优的,剩下的用树状数组或者线段树维护下就好了。原创 2017-09-13 14:04:02 · 804 阅读 · 0 评论 -
HDU 6162 Ch’s gift
树链剖分和主席树原创 2017-08-22 19:13:20 · 331 阅读 · 0 评论 -
HDU 6133 Army Formations
官方题解:BestCoder Blog| 2017 Multi-University Training Contest 8 solutions BY 南京大学原创 2017-08-20 11:42:56 · 238 阅读 · 0 评论 -
UVALive 5876 Writings on the Wall
这道题数据很水,用哈希和暴力都可以水过去。 不过正解很巧妙,类似于HDU6096用ac自动机水过去的方法。 题目给出两个字符串sa和sb,于是构造一个sb+’?’+sa的字符串,对其跑KMP的失配函数,这样对于这个字符串结尾的所有的失配都是答案。原创 2017-08-14 15:29:43 · 171 阅读 · 0 评论 -
HDU 6068 Classic Quotation
答案分成三份,L左边完整的串,R右边完整的串,以及中间拼凑的串。 S[0][L][i]表示T串的前缀0~L中,有哪些位置能够匹配到P[i]。 而S[1][R][j]表示T串翻转后,后缀R~n-1变为前缀0~n-R-1中,有哪些位置能够匹配到P串翻转后的P[j]. 可以在KMP中通过失配函数维护S数组,S[][i][j] = s[][i-1][j]+T[i]==p[j]?1:0; 这样只要枚举原创 2017-08-08 00:55:24 · 435 阅读 · 0 评论 -
AtCoder 080E Young Maids
与题意相反,从左往右进行构造。 注意到对每一段区间[L, R]选取最小对{x, y}时,x必须处于与L同奇偶性的位子,而y必须处于与x奇偶性相反的位子。选取最小的x以及最小的y可以用两个RMQ维护原数组,奇偶各一个。 当选完一对{x, y}时,区间分裂为[L, pos[x]-1], [pos[x]+1, pos[y]-1], [pos[y]+1, R]三个区间,可以用优先队列进行BFS,保证字典原创 2017-08-06 22:52:57 · 1031 阅读 · 0 评论 -
HDU 6070 Dirt Ratio
官方题解:这个维护的最小值即 size(L, R)+Mid*L代码:#include<bits/stdc++.h>#define fi first#define se second#define pb push_back#define CLR(A, X) memset(A, X, sizeof(A))#define lson o<<1#define rson o<<1|1using n原创 2017-08-03 22:17:12 · 319 阅读 · 0 评论 -
UVALive 6860 Most Influential Pumpkin
题意:给你一个序列,每次操作可以使一段连续的序列加1,每次更新完后输出这个序列的中位数。注意到中位数的大小只会增加,不会减小,并且每次操作后最多使中位数加1.将原序列分块操作,若块在询问的【L,R】中,则使块的cnt++,这样只对询问区间的首尾单独操作即可。每次更新后查找序列中小于等于当前中位数的个数,如果个数小于等于n/2.则中位数++。查找小于等于中位数的个数时用lower_b原创 2017-07-21 13:15:03 · 335 阅读 · 0 评论 -
AtCoder 077E gururu
咕噜噜。容易发现每个设定值对每段区间的贡献为f(s, t, xi) = xi - (s+1)f(s, t, xi+1) = xi+1 - (s+1)(s 类似树状数组维护区间修改,用两个区间分别维护xi的前缀和以及(s+1)的前缀和。代码:#include#define pb push_back#define fi first#define se seco原创 2017-07-01 23:07:23 · 584 阅读 · 0 评论 -
Codeforces 380C Sereja and Brackets
两种做法。树状数组的做法:事先将所有的查询存下来,这样从左往右求值的时候就不会被查询区间右边的括号所影响了。代码:#include#define pb push_back#define fi first#define se secondusing namespace std;typedef long long ll;typedef unsigned long long原创 2017-06-13 15:52:22 · 287 阅读 · 0 评论 -
CS Academy Round #32 Light Count
内存限制了12MB.所以输入是题目给的随机数。数据大小是5*10^7,可以将其分成781250份,每份一个ULL表示状压,最后树状数组做。学到了__builtin_popcountll(),快速得到一个二进制数中有几个1.代码:#include#define pb push_back#define fi first#define se secondusing nam原创 2017-06-11 15:31:13 · 328 阅读 · 0 评论 -
【线段树】Gym101620I Intrinsic Interval
Source:Source:Source:2017-2018 ACM-ICPC, Central Europe Regional Contest (CERC 17)Problem:Problem:Problem:n=1e5n=1e5n=1e5的全排列。定义一个区间是好区间当区间内的值域是连续的,即mx−mn=R−Lmx-mn=R-Lmx−mn=R−L。mmm个查询[li,ri][l_i, r_i...原创 2018-10-04 21:05:33 · 427 阅读 · 0 评论