[HZOI] 山海经 题解】的更多相关文章

0.题目大意 给出一个序列,每次查询一个区间的最大子段和的端点和值.序列长度 \(n \le 10^{5}\) . 1.思路 显然应该使用线段树.题目要求每次求一个区间的最大子段和,那么在线段树节点中应该维护这个节点的最大子段和.然而,只维护最大子段和是无法从子节点合并出父节点的. 考虑一个节点,它的最大子段和可能有以下几个来源: |_____________________________| <-节点 |_________| <-最大子段和 |_______________ |_______…
大意: [HZOI 2016]公路修建 给定一个有n个点和m-1组边的无向连通图,其中每组边都包含一条一级边和一条二级边(连接的顶点相同),同一组边中的一级边权值一定大于等于二级边,另外给出一个数k(k<=n-1),求原图的一个生成树,使得其中至少包含k条一级边且最大的边权值尽量小. [HZOI 2016]公路修建2 和上一题基本一样,但是求出的不一定是生成树(也就是说可以有多于n-1条边,只要让图连通即可),在此前提下仍然使得其中至少包含k条一级边且最大的边权值尽量小. 解法: 两题均可以使用…
  题目描述: 给定n个数X1-Xn,求下面式子的值(整数部分): n<=107,xi<=109且互不相同. 分析: 其实一开始看见这道题我也吓傻了,k这么大,再说我又是数论鶸渣,打死也不会= = 后来看了各路神犇的题解,又仔细想了想,大概明白了. 首先,k这么大,已经不是高精乘和高精开方所能承受的了(当然,你也可以找个超级计算机算算试试) 所以我们可以把k视为∞(INF). 极限思想,由于xi互不相同,所以每个元素在比它稍微大一点点的数面前都是微乎其微,不会影响到整数部分的. (可以粗略验证…
2320. [HZOI 2015]聪聪的世界 时间限制:6 s   内存限制:512 MB [题目描述] 背景: 聪聪的性取向有问题. 题目描述: 聪聪遇到了一个难题: 给出一个序列a1…an,完成以下操作: 1  x 询问从x向左数第一个<ax的数: 2  x 询问从x向左数第一个>ax的数: 3  x 询问从x向右数第一个<ax的数: 4  x 询问从x向右数第一个>ax的数: 5  x y 交换ax与ay: 6  x y w 给ax…ay加上w: 7  x y w 给ax…a…
题目大意: 给定n个数及其优先级,求对应的符合最小堆性质的Treap的先序遍历. n<=500000. 解法: 目前为止我只想到了三种解法,其中第三种是正解. 1.暴力1 以优先级为关键字排序,然后按顺序构建BST即可.注意不能加平衡,因为这样会改变树的先序遍历. 期望复杂度O(nlogn)(排序和构建),考虑极端情况下树可能是一个链,最坏情况复杂度O(n2). 2.暴力2 直接构建Treap,但遇到是链的情况仍然是O(n2). 考虑将节点顺序打乱后进行建树,常数大大减小,但由于链状树的深度为n…
题目大意: 给定一个有n个元素的数组,有m个操作,分为两种,分别是询问第k个x的下标和把下标为x的数修改为k. 题目设置了强制在线,故无法预先得知所有操作数. 思路: 有三种思路. 第一种:平衡树 by std(也就是我) 为每一个数建一个平衡树,平衡树中储存的是这个数出现的每个下标,则询问操作对应名次树的查询k小数操作,单点修改直接维护一个数组记录每个位置上的值,把原来的数对应的下标从平衡树里删除,再把新数的平衡树中加入这个下标即可. 实现时开一个从int到平衡树的map,这样预处理复杂度O(…
[题意][COGS 2287][HZOI 2015]疯狂的机器人 [算法]FFT+卡特兰数+排列组合 [题解]先考虑一维的情况,支持+1和-1,前缀和不能为负数,就是卡特兰数的形式. 设C(n)表示第n/2个卡特兰数,当n为奇数时为0,即: $$C_n=\binom{n}{\frac{n}{2}}-\binom{n}{\frac{n}{2}-1},n\%2=0$$ 卡特兰数可以通过预处理阶乘和逆元后O(1)计算. 设f[n]表示走n步回到原点的操作序列数,那么答案要求所有f[i],通过枚举纵向行…
[cogs2314][HZOI 2015]Persistable Editor - 可持久化平衡树 题目链接 首先吐槽扯淡几句 [题目描述] 维护一种可持久化的文本编辑器,支持下列操作: 1 p str 在当前版本的第p个字符后插入字符串str,并作为下一版本(数据保证0<=p<=当前字符串的长度,且插入的字符串中只有小写字母) 2 p c 在当前版本中删除从第p个字符开始的后c个字符,并作为下一版本(包含第p个字符,数据保证1<=p<=当前字符串的长度,且p+c-1<=当前…
[HZOI 2016]我们爱数数 题目大意: 一张圆桌,每个位置按顺时针从\(1\)到\(n\)编号.有\(n\)个人,编号从\(1\)到\(n\).如果编号为\(i\)的人坐到了编号为\(i\)的位置或坐到了与编号为\(i\)的位置相邻的位置,这个人就会感到开心,反之这个人会感到沮丧.求有多少种安排坐位的方法,使所有人都入座,并且使得至少\(k\)个人开心. 思路: 用\(f_{i,j,s}\)表示前\(i\)个人,\(j\)个人开心,目前最后两个位置的状态为\(s\)的方案数. 枚举前两个人…
人生第一次A,B层一块考rank2,虽然说分差没几分,但还是值得纪念. 题解: T1 天空龙: 大神题,因为我从不写快读也没有写考场注释的习惯,所以不会做,全hzoi就kx会做,kx真大神级人物. T2 巨神兵: 大神题,一看数据范围这么小,我们考虑状压,最傻逼的暴力思路是压边,但是这显然不行.正解是压点,设$f[s]$为当前选定点集状态为$s$的方案数. 我们考虑转移,当前选定的点集肯定是可以通过边和没有连过来的点相连构成新的方案.所以转移所以我们考虑枚举补集的子集$k$,设$cnt$为s与k…