随笔分类 - 数据结构-树状数组
摘要:题目链接 "BZOJ2738" 题解 将矩阵中的位置取出来按权值排序 直接整体二分 + 二维BIT即可 cpp include include include define LL long long int define REP(i,n) for (int i = 1; i 57){if (c ==
阅读全文
摘要:题目链接 "BZOJ3688" 题解 将点排序 设表示以第点结尾,有段,最后一段上升或者下降的方案数 以上升为例 $$f[i][j][0] = \sum\limits_{k = 1}^{i 1}\sum\limits_{y_k include include
阅读全文
摘要:题目链接 "洛谷P3676" 题解 我们先维护为根的答案,再考虑换根 一开始的答案可以计算出来 考虑修改,记表示为根的子树的权值和 当节点产生的增量时,只影响到路径上的,权值和都 而对答案的影响是 $$ \begin{alig
阅读全文
摘要:题目链接 "BZOJ" 题解 如果我们给中所有字母按顺序编号,给中所有字母编上相同的号码 对于中同一种,显然号码应该升序 然后求逆序对即可 C++ include include include include include include include define Redg
阅读全文
摘要:题目链接 "BZOJ2924" 题解 题面有误。。是 如果两个点间连线与轴夹角在以内,那么它们之间连边 求最小路径覆盖 = 最长反链 由于比较难搞,我们利用复数翻转一下,逆时针旋转 这样就求一条从左上到右下的最长链 我们将所有点按排序,令$f[i]
阅读全文
摘要:题目链接 "洛谷P3759" 题解 树状数组套主席树板题 C++ include include include include include include define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) define REP(i,
阅读全文
摘要:题目链接 "BZOJ3236" 题解 没想到这题真的是如此暴力 C++ include include include include include include define Redge(u) for (int k = h[u],to; k; k = ed[k].nxt) define REP
阅读全文
摘要:题目链接 "BZOJ3594" 题解 dp难题总是想不出来,, 首先要观察到一个很重要的性质,就是每次拔高一定是拔一段后缀 因为如果单独只拔前段的话,后面与前面的高度差距大了,不优反劣 然后很显然可以设出表示前个玉米,第棵必须选,且共拔高了次的最大值 由之前的性质
阅读全文
摘要:题目链接 "BZOJ5157" 题解 我们只需计算每个位置为开头产生的贡献大小,就相当于之后每个大于当前位置的位置产生的贡献 + 1之和 离散化后用树状数组维护即可 要注意去重,后面计算的包含之前的,记录下来减去即可 C++ include include include include inclu
阅读全文
摘要:题目链接 "BZOJ4888" 题解 要求所有连续异或和,转化为任意两个前缀和相减 要求最后的异或和,转化为求每一位的出现次数 所以我们只需要对每一个快速求出$sum[i] sum[j] \quad [j include include include include include d
阅读全文
摘要:题目 Byteotian Interstellar Union有N个成员国。现在它发现了一颗新的星球,这颗星球的轨道被分为M份(第M份和第1份相邻),第i份上有第Ai个国家的太空站。 这个星球经常会下陨石雨。BIU已经预测了接下来K场陨石雨的情况。 BIU的第i个成员国希望能够收集Pi单位的陨石样本
阅读全文