- 博客(20)
- 收藏
- 关注
原创 树链剖分总结
树链剖分….等等等等 这是题目总结,反正就是把各种水题放到一起。然后数组意义的话,dpt深度,son重儿子,ftr父亲,rnk线段树中编号,size是子树大小,top是重链顶端的结点。【Bzoj1036】树的统计比较裸,维护区间和与最大值就好了。【Bzoj4034】树上操作也是模板,对于子树只要记一个end[x]就行了。【Bzoj4396】软件包管理器安装操作就是将软件包到根全都赋为1,然后输出改
2017-03-26 09:54:13 337
原创 【Bzoj3626】LCA
题意给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。 设dep[i]表示点i的深度,LCA(i,j)表示i与j的最近公共祖先。 有q次询问,每次询问给出l r z,求sigma_{l<=i<=r}dep[LCA(i,z)]。 (即,求在[l,r]区间内的每个节点i与z的最近公共祖先的深度之和)解析 首先发现一个性质,加上depth[LCA(
2017-03-24 20:53:42 439
原创 【Bzoj3531】旅行
题意:有n个城市,每个城市有权值和颜色,支持的操作有单点修改权值,单点修改颜色,查询区间同颜色之和,查询区间同颜色最大值。思路:对于每种颜色,放入不同的线段树,但其实整个加起来还是还是n个结点,值得注意的是,这里要使用动态开点,要一步步记录左右儿子的编号,而不能使用2i,2i+1直接去找,而这样建树的话,就可以很方便的查询同颜色的结点了,修改操作啥的把原颜色中的结点改为0,再在现在的颜
2017-03-19 15:43:18 386
原创 【Bzoj1034】泡泡堂BNB
类似于田忌赛马的策略,最小的能赢就赢,最大的也是能赢就赢,如果都不满足就用最小的去换对方最大的,然后注意判等于。#include #include #define Rep(i,s,t) for(int i=s;i<=t;i++)using namespace std;const int maxx = 100000 + 25;int a[maxx],b[maxx];i
2017-03-19 11:33:34 423
原创 【Bzoj1050】旅行comf
题意:给你一个无向图,N(N算法:最小生成树加枚举,每次连通时更新一次答案,话说codevs的第一道题应该都做过...?代码不贴了,很久之前打的没法看。
2017-03-18 22:16:01 518
原创 【Bzoj1607】轻拍牛头
题意:给n个数,求出对于每个数,其它数有几个是它的约数。解析:可以筛一遍,不过最好把一样的数用数组保存,不然可能一个个筛会T。然后就是要注意j要从i而不是2i开始枚举,因为可能存在相同的数字,最后给ans减1就好了。#include #include using namespace std;const int maxx = 1000000 + 25;const
2017-03-18 21:57:26 818
原创 【Bzoj1800】飞行棋
题目大意:n段圆弧,求有多少个矩形题解:统计直径就行了,可以采用前缀和,然后答案就是C(x,2)。不过统计直径的时候可能会出现一种情况,比如1,2,3和4,5,6是两段等于半圆的弧,而它们所对的半径是同一条,所以说统计时会有重复,对于这种情况的解决,直接少算一条边就好,比如第一条边不要,然后统计其它的半圆,就能得出答案。#include #include using
2017-03-18 21:35:09 434
原创 【Bzoj3083】遥远的国度
题意给定一棵有根树,支持3种操作: 1.把首都修改为id; 2.将p1 p2路径上的所有城市的防御值修改为v; 3.询问以城市id为根的子树中的最小防御值。分析画了一堆图之后终于搞懂了一点点,首先换根的话肯定不是真的换。对于每次询问,设现在的根为root,准备询问的结点为x。来考虑几种情况。 1.root == x ,询问整棵树,直接输出全集。 2.root不为x的子树,则直接考虑x的整棵
2017-03-17 22:39:45 391
原创 【Bzoj1876】SuperGCD
pythona = (int)(input())b = (int)(input())while b!=0: t = b b = a%b a = tprint(a)
2017-03-17 20:52:55 610
原创 【Bzoj1053】反素数ant
定理:一个数约数个数=所有素因子的次数+1的乘积然后得一个2000000000以内的数字不会有超过12个素因子在一个因子数为n的集合中,这个集合中最小的数就是一个反质数。所以我们只要找出小于n的数中因数个数最多的最小数。#include #include using namespace std;typedef long long LL;const LL
2017-03-17 20:49:07 346
原创 【Bzoj1012】最大数
动态开点的线段树。#include #include using namespace std;const int maxx = 200000 + 50;const int Inf = (unsigned)(-1)>>1;int n=200000,m,x,y,flag,mod,pos,t;int T[maxx<<2];char s[2];void Build(in
2017-03-17 20:44:36 361
原创 【Bzoj2819】Nim
题意给定一棵树,两个操作: 1.询问若在v到u间的路径上的石子堆中玩Nim游戏,是否有必胜策略。 2.把堆v中的石子数变为k。作为一个解[ka]决[guo]了这道题的人,来分[kou]析[hu]一下算法,其实正解是Dfs序之后树状数组,但是因为懒就直接写了树剖,每个区间维护区间的异或值。因为异或的性质a^b^c=a^(b^c)。然后Nim游戏有必胜策略,当且仅当所有堆的石子异或起来不等于0,之后
2017-03-17 20:40:58 366
原创 【Bzoj2243】染色
题意给定一棵有n个节点的无根树和m个操作,操作有2类:1、将节点a到节点b路径上所有点都染成颜色c;2、询问节点a到节点b路径上的颜色段数量(连续相同颜色被认为是同一段),如“112221”由3段组成:“11”、“222”和“1”。请你写一个程序依次完成这m个操作。应该是我太水了来着…?打了一小时调了一天,主要就是注意合并时判断中间部分的端点颜色,如果一样的话统计时就要减1。然后在get函数中也一样
2017-03-16 21:41:08 341
原创 【Bzoj4196】软件包管理器
题目描述Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置。ebian/Ubuntu使用的apt-get,Fedora/CentOS使用的yum,以及OSX下可用的homebrew都是优秀的软件包管理器。
2017-03-16 14:30:09 423
原创 【Bzoj4034】树上操作
题意有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a 。操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。操作 3 :询问某个节点 x 到根的路径中所有点的点权和。-----------------------------------------------------
2017-03-16 14:24:28 559
原创 【Bzoj1036】树的统计
题意一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对棵树完成一些操作:1.把结点u的权值改为t2.询问从点u到点v的路径上的节点的最大权值3.询问从点u到点v的路径上的节点的权值和注意:从点u到点v的路径上的节点包括u和v本身一棵树上有n个节点,编号分别为1到n,每个节点都有一个权值w。我们将以下面的形式来要求你对棵树完成 一些操作: 1.把结点u的权值
2017-03-12 15:57:14 270
原创 【Bzoj1798】维护序列seq
题意线段树维护三个操作:区间加法,区间乘法,区间查询。分析需要打两个tag,注意先下放乘法之后再下放加法。#include #include using namespace std;typedef long long LL;const int maxx = 100000 + 50;LL T[maxx<<2],Add[maxx<<2],mul[maxx
2017-03-10 22:27:43 347
原创 【Bzoj2957】楼房重建
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房。每天,这片工地上的房子拆了又建、建了又拆。他经常无聊地看着窗外发呆,数自己能够看到多少栋房子。 为了简化问题,我们考虑这些事件发生在一个二维平面上。小A在平面上(0,0)点的位置,第i栋楼房可以用一条连接(i,0)和(i,Hi)的线段表示,其中Hi为第i栋楼房的高度。如果这栋楼房上任何一个高度大于0的点与(0,0)
2017-03-05 13:26:18 404
原创 【Bzoj3884】上帝与集合的正确用法
题目大意求2222222...mod p的值。求2^{2^{2^{2^{2^{2^{2^{...}}}}}}}mod p的值。分析po姐的题目诶!!po姐的题目诶!! 大意就是上面那样,看上去+∞个2根本不可做,不过有欧拉定理xa≡xa mod φ(p)+φ(p) (mod p)。大意就是上面那样,看上去+∞个2根本不可做,不过有欧拉定理x^a≡x^{a mod φ(p)+φ(p)} (mod p
2017-03-04 16:43:50 414
原创 【Bzoj1875】HH去散步
题目描述HH有个一成不变的习惯,喜欢饭后百步走。所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离。 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回。 又因为HH是个喜欢变化的人,所以他每天走过的路径都不完全一样,他想知道他究竟有多 少种散步的方法。 现在给你学校的地图(假设每条路的长度都是一样的都是1),问长度为t,从给定地 点A走到给定地点B共有多少条符合条件的路径输
2017-03-02 21:24:32 561 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人