![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
bzoj
hzt_Owen
这个作者很懒,什么都没留下…
展开
-
【bzoj 1901】树状数组套线段树
带修改区间第k大。用树状数组维护线段树的前缀和。#include #include #include #include #include #include #define inf 1000000000#define Rep(i, x, y) for (int i = x; i <= y; i ++)#define u t[x]#define Lc t[u.lc]#def原创 2015-01-29 14:08:44 · 560 阅读 · 0 评论 -
【bzoj 3821】玄学 线段树
给一个数列ai。要求维护(在线):1.将ai到aj的值变为(ax + b) mod m2.问执行操作i到操作j后ak的权值对操作建线段树,一个线段树节点只在加入操作r后update,一个节点可以用一个长度为O(l)的数组维护,询问时二分下即可。log平方n。#include #include #include #include #include #define Rep(i原创 2015-11-24 19:02:57 · 666 阅读 · 0 评论 -
【NOI2015】小园丁与老司机 DP 网络流
一开始你在原点,有n棵许愿树,你每次可以向左,右,左上,右上,上到达最近的一棵许愿树许愿。问最多能到达多少许愿树,输出方案。在所有可能的路径中,保留所有非左右的边,问最小路径覆盖所有的边。n 首先按y坐标排序,使用map进行转移,同层的点一起转移。建出第三问的图后,考虑一个点的入度和出度,如果路径不可相交,答案就是Σmax(in[x] - out[x], 0),考虑增建平行边,就可以网络流原创 2016-01-06 07:32:43 · 2234 阅读 · 0 评论 -
【bzoj3992】序列统计 FFT 原根
给一个集合,用这个集合组成的长度为n的序列中,在mod m下乘积为x的个数。n 首先可以把乘积变为原根的指数相加的形式,然后取模FFT即可。#include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#define Dwn(i, x, y) for原创 2016-01-04 14:35:58 · 835 阅读 · 0 评论 -
【bzoj3626】树链剖分
给一棵n个节点的有根树,q次询问,每次询问sigma{ l考虑问题的转化,如果将[l, r]中的点都打上标记,令Sx为x节点的子树中被标号点个数,则答案为z到根的路径上的Sx的和。离线后用前缀和处理。#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x;原创 2015-01-02 13:15:15 · 450 阅读 · 0 评论 -
【bzoj1576】[Usaco2009 Jan]安全路经Travel
给一张无向图,1号点到i号点的最短路唯一,求1到i不经过原最短路最后一条边的最短距离。n 由于最短路唯一,先求最短路径树,考虑非树边uv,它能使uv以上,lca以下的点多一种路径,长度为dis[u] + dis[v] + edge[i] - dis[x]。我们令这条非树边的值为val[i] = dis[u] + dis[v] + edge[i],我们只需对每个x,找出最小的val。可以先按va原创 2015-11-02 07:45:41 · 1066 阅读 · 0 评论 -
【NOI2014】【cdq点分治】【斜率优化】购票
0.先推出斜率优化的动归方程1.找到当前分治的树结构的重心2.将分成的子树中含有根节点那部分连重心一并分治3.将其余子树的点拎出来,按照能走到的最小深度从大到小排序4.对于每个点,将重心到分治结构的根节点路径上所有的点中能到达的那些点维护一个凸包 然后二分查找5.对其余子树进行分治时间复杂度O(nlog^2n)#include #inclu原创 2015-08-20 12:50:58 · 643 阅读 · 0 评论 -
【bzoj1367】左偏树
1367: [Baltic2004]sequenceDescription这道题的结论证明参见 论文对于求不下降序列 最后的做法就是:维护几段连续的序列,使它们的中位数不下降 然而转化到递增序列,我们只需要将每个数读进来的之后减去它的下标就可以了所以我们对于每一段已求好的序列,既要维护它的中位数,又要支持合并因为我们合并的前提原创 2015-05-30 09:09:21 · 671 阅读 · 0 评论 -
【bzoj 1692】后缀数组
将一个字符串进行如下操作:每次拿去首或尾,放在新字符串尾,问新字符串字典序最小的情况。直觉贪心,但情况复杂。可以用后缀数组,每次比较当前剩余串正序和倒序哪种字典序小,可以如下构建:ABCD -> ABCD0DCBA#include #include #include #include #include #include #define Rep(i, x, y) for (i原创 2015-03-06 11:22:46 · 405 阅读 · 0 评论 -
【bzoj2002】弹飞绵羊
Lct裸题给出一棵树,有修改及询问,修改操作为修改一个节点的父亲,询问一个节点到根的点数。询问及修改前只需Access一遍即可。#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#define RepE(i, x)原创 2014-12-01 21:23:01 · 529 阅读 · 0 评论 -
【bzoj2854】高斯消元
求解N元一次方程组,N考虑大素数取模下做,整数除法用逆元即可,再用中国剩余定理合并,注意选的素数不能使方程多解(矩阵满秩)。#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)using namespace std;ty原创 2014-11-25 22:39:40 · 655 阅读 · 0 评论 -
【bzoj2956】模积和
求∑∑((n mod i)*(m mod j))其中1若没有i不等于j,那么只需求sigma(n%i) * sigma(m%i)。这个可以发现商的种类只有sqrt(n)级别。枚举商发现余数是等差数列。对于i = j,和刚才类似,考虑在n / i与m / i不变时,由两个等差数列。(s1 + i * p) * (s2 + i * q) 拆开即可。#include #include #原创 2014-12-11 10:27:31 · 840 阅读 · 0 评论 -
【bzoj2440】莫比乌斯
题目:全然平方数为含有平方数因子的数,求第n个非全然平方数。 n 容易想到先二分,再容斥原理(莫比乌斯)。num = (mid / i) * mu[i].#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#defin原创 2014-12-08 22:25:40 · 507 阅读 · 0 评论 -
【noi2005】维护数列
时隔半年我又来写这道题了,这次的Splay模版简练多了。有好多种操作,注意垃圾回收。#include #include #include #include #include #include #define Rep(i, x, y) for (int i = x; i <= y; i ++)#define RepE(i, x) for (int i = pos[x]; i; i原创 2014-12-02 20:46:42 · 522 阅读 · 0 评论 -
【bzoj4150】[AMPPZ2014]The Staging 线段树
在舞台上有n个枪手,第i个枪手瞄准了第p[i]个枪手,将于第u[i]秒开枪。一个枪手如果成功开枪,那么被瞄准的枪手会立刻死亡。现在给出q次修改操作,请在一开始和每次修改操作后统计出最后存活的枪手个数。p[i]互不相同,p[i] != i。首先发现枪手形成若干环。于是可以用线段树维护,一个区间的开头那个人的状态对应结尾的状态,以及存活人数。其他想法:u[i]折线图中只有下降的区间原创 2015-10-22 16:47:16 · 838 阅读 · 0 评论