随笔分类 - 数据结构--------------------------
摘要:【题目】 " 2302. 「NOI2017」整数" 【题意】有一个整数x,一开始为0。n次操作,加上a 2^b,或询问2^k位是0或1。$n \leq 10^6,|a| \leq 10^9,0 \leq b,k \leq 30n$。 【算法】压位+线段树 【参考】 "GXZlegend" 先考虑以每
阅读全文
摘要:【题目】 " 6396. 「THUPC2018」弗雷兹的玩具商店 / Toyshop" 【题意】给定一个长度为n的物品序列,每个物品有价值、不超过m的重量。要求支持以下三种操作:1.物品价值区间加减,2.物品重量区间加(超过m部分取模),3.区间物品求解容量为m的完全背包数组。$n \leq 2 1
阅读全文
摘要:【题目】 "E. NN country" 【题意】给定n个点的树和m条链,q次询问一条链(a,b)最少被多少条给定的链覆盖。$n,m,q \leq 2 10^5$。 【算法】树上倍增+二维数点(树状数组) 先从半链角度考虑 。将每条给定链和每个询问拆成向上的一段和向下的一段。那么假设询问的半链最低端
阅读全文
摘要:【题目】 "贝壳找房户外拓展(中等)" 【题意】给定$n \times m$的棋盘,q次操作:1.在一个列区间设置p和q。2.询问一个行区间,初始x为0,从左到右x=x p+q,求x。3.撤销一次设置操作。保证所有1和3都在2前面。$n,m,q \leq 10^5$。 【算法】扫描线+线段树 【题解
阅读全文
摘要:【题目】 "BZOJ 1095" 【题意】给定n个黑白点的树,初始全为黑点,Q次操作翻转一个点的颜色,或询问最远的两个黑点的距离,$n \leq 10^5,Q \leq 5 10^5$。 【算法】括号序列+线段树 【题解】参考: "konjac" 括号序列其实就是入栈出栈序,每个点在进入时加左括号和
阅读全文
摘要:【题目】 "百度科学家(困难)" 【题意】给定n个非负整数,最终需要选择一个数字集合。m次操作,修改一个非负整数,或规定选择第x个数字则必须选择区间[l,r]内的数字。最终求非空数字集合的最小值。$n,m \leq 10^5$。 需要特别注意,被替换了的非负整数也是可以选择的。每一个非负整数都是本质
阅读全文
摘要:【题意】阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机。打字机上只有28个按键,分别印有26个小写英文字母和'B'、'P'两个字母。 经阿狸研究发现,这个打字机是这样工作的: l 输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在凹槽的最后)。 l 按一下印有'B'的按键,打字
阅读全文
摘要:【题目】D. Huffman Coding on Segment 【题意】给定n个数字,m次询问区间[l,r]的数字的哈夫曼编码总长。1<=n,m,ai<=10^5。 【算法】哈夫曼树+莫队+分块 【哈夫曼树】哈夫曼树又称最优构造树,n个数字的哈夫曼树是含有n个给定权值叶子的点权路径和最小的二叉树。
阅读全文
摘要:【题意】给定n个节点的树,每个节点有一个数字ai,m次操作:修改一个节点的数字,或询问一条树链的数字集合的mex值。n,m<=5*10^4,0<=ai<=10^9。 【算法】树分块+带修改莫队算法 【题解】和【BZOJ】3052: [wc2013]糖果公园 树分块+待修改莫队算法差不多。 区别在于如
阅读全文
摘要:【题意】给定n个数字,m次操作,每次询问区间不同数字的个数,或修改某个位置的数字。n,m<=10^4,ai<=10^6。 【算法】带修改的莫队算法 【题解】对于询问(x,y,t),其中t是前面的修改次数,所有修改记录改前和改后。 首先按belong[x],然后按belong[y],最后按t排序。(块
阅读全文
摘要:【题目】#58. 【WC2013】糖果公园 【题意】给定n个点的树,m种糖果,每个点有糖果ci。给定n个数wi和m个数vi,第i颗糖果第j次品尝的价值是v(i)*w(j)。q次询问一条链上每个点价值的和或修改一个点的糖果ci。n,m,q<=10^5。 【算法】树分块+带修改莫队算法 【题解】参考:W
阅读全文
摘要:【题意】给定n个点的树,要求划分成若干大小为[B,3B]的块,满足一个块加上一个核心点后连通,求方案。n<=1000。 【算法】树分块 【题解】参考:PoPoQQQ 讲得很详细了,就不必听我口胡了。。。 树分块算法的起源?用这道题的树分块算法可以实现将一棵树划分成若干[B,3B]的块。 DFS过程中
阅读全文
摘要:【题意】给定长度为n的排列,m次询问区间[L,R]的最长连续值域。n<=50000。 【算法】莫队算法 【题解】考虑莫队维护增加一个数的信息:设up[x]表示数值x往上延伸的最大长度,down[x]表示数值x往下延伸的最大长度。 增加一个数x时,up[x]=up[x+1]+1,down[x]=dow
阅读全文
摘要:【题目】2017"百度之星"程序设计大赛 - 初赛(A) 【题意】给定n个点的带边权树,m条编号1~m的路径,Q次询问编号区间[L,R]所有链的交集的长度。n<=500000。 【算法】线段树+RMQ-LCA+树链的交 【题解】树链的交:记一条链为(a1,b1),LCA为c1。另一条链为(a2,b2
阅读全文
摘要:【题目】D. Best Edge Weight 【题意】给定n个点m条边的带边权无向连通图,对每条边求最大边权,满足其他边权不变的前提下图的任意最小生成树都经过它。n,m<=2*10^5,1<=wi<=10^9。 【算法】最小生成树+倍增LCA+并查集 【题解】首先求出图的一个最小生成树M,则所有边
阅读全文
摘要:【题意】给定序列,支持区间加和区间乘,查询区间和取模。n<=10^5。 【算法】线段树 【题解】线段树多重标记要考虑标记与标记之间的相互影响。 对于sum*b+a,+c直接加上即可。 *c后就是(sum*b+a)*c=sum*b*b+a*c,也就是加法的部分也要乘。 所以,每次在乘法的时候要把加法标
阅读全文
摘要:【题意】给定n个点的带边权树,对于树上存在的若干特殊点,要求任选一个点开始将所有特殊点走遍后返回。现在初始没有特殊点,m次操作每次增加或减少一个特殊点,求每次操作后的总代价。n,m<=10^5。 【算法】虚树+DFS序+set 【题解】每次询问相当于求两倍虚树路径和。 模拟虚树上dfs序的转移会发现
阅读全文
摘要:【题意】给定n棵高度初始为0的草,每天每棵草会长高a[i],m次收割,每次在d[i]天将所有>b[i]的草收割到b[i],求每次收割量。n<=500000。 【算法】线段树上二分 【题解】按照生长速度a[]排序后,容易发现数列永远单调。 在线段树上的区间维护以下值: 1.最后一棵草的高度a 2.上次
阅读全文
摘要:【题目】D. Animals and Puzzle 【题意】给定n*m的01矩阵,Q次询问某个子矩阵内的最大正方形全1子矩阵边长。n,m<=1000,Q<=10^6。 【算法】动态规划DP+二维ST表 【题解】设f[i][j]为以(i,j)为右下角的最大正方形全1子矩阵。 f[i][j]=min{
阅读全文