
Bzoj
Zhayan9QvQ
嘿嘿嘿
展开
-
【Bzoj1901】Dynamic Ranking
题意给一个序列,每次询问[l,r]区间内第k小的数字。带修改。解析同2B平衡树的操作。 操作少可以打得简单一点。#include <cstdio>#include <algorithm>#define Rep( i , _begin , _end ) for(int i=(_begin),i##_END=(_end);i<=(i##_END);i++)#define For( i , _beg原创 2017-06-15 18:00:02 · 636 阅读 · 0 评论 -
【Bzoj1029】建筑抢修
题意给出n个需要抢修的建筑,每个建筑抢修需要t1时间,并且要在t2之前完成抢修,问在时间S内能抢修的建筑最多有多少个。解析贪心,首先按t2排序,能修则修。然后不能的话每当有建筑时判断,如果这个建筑需要用时比之前的短,就替换。#include <queue>#include <cstdio>#include <algorithm>#define Rep( i , _begin , _end ) f原创 2017-05-01 15:26:24 · 555 阅读 · 0 评论 -
【Bzoj3668】起床困难综合症
题意给你n个操作包括按位与,按位或,按位异或。还有一个参数m,请你找0~m中的经过n个操作后最大的数,输出这个最大值。分析首先二进制运算的每一位是相对独立的,可以考虑它的每一位。首先,如果某位经过n次操作能变成1,这一位就要选(如果能选0就选0,使数字尽量小)。如果无论1,0都无法变成1,也选0。(在这一位上填1产生的贡献比在它后面全填上1还要大。能填则填。)#include <cstdio>#i原创 2017-05-01 14:52:23 · 514 阅读 · 0 评论 -
【Bzoj1218】激光炸弹
题意给你n个点的坐标xi,yi。求一个边长为k的正方形能覆盖多少点。解析可以枚举。但是要加一个二维前缀和。统计的时候可以画一个图。首先a[i][j]是一个大矩形。之后在旁边切掉两个小矩形,但多切掉了一个重复部分,要把它加上。#include <cstdio>#include <algorithm>#define Rep( i , _begin , _end ) for(int i=(_begin)原创 2017-04-03 22:16:34 · 536 阅读 · 0 评论 -
【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 · 399 阅读 · 0 评论 -
【Bzoj4196】软件包管理器
题目描述Linux用户和OSX用户一定对软件包管理器不会陌生。通过软件包管理器,你可以通过一行命令安装某一个软件包,然后软件包管理器会帮助你从软件源下载软件包,同时自动解决所有的依赖(即下载安装这个软件包的安装所依赖的其它软件包),完成所有的配置。ebian/Ubuntu使用的apt-get,Fedora/CentOS使用的yum,以及OSX下可用的homebrew都是优秀的软件包管理器。原创 2017-03-16 14:30:09 · 481 阅读 · 0 评论 -
【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 · 308 阅读 · 0 评论 -
【Bzoj2654】tree
题意给你一个无向带权连通图,每条边是黑色或白色。让你求一棵最小权的恰好有need条白色边的生成树。 题目保证有解。解析这题直接考虑白边不好做,不过我们可以给白边加上一个值x,而x越大,选取的白边就越少,x越小,选取的白边就越多。所以可以二分x,找到符合条件的解。#include <cstdio>#include <algorithm>#define Rep( i , _begin , _end原创 2017-04-01 22:00:14 · 499 阅读 · 0 评论 -
【Bzoj4034】树上操作
题意有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a 。操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。操作 3 :询问某个节点 x 到根的路径中所有点的点权和。-----------------------------------------------------原创 2017-03-16 14:24:28 · 639 阅读 · 0 评论 -
【Bzoj2151】种树
题意A城市有一个巨大的圆形广场,为了绿化环境和净化空气,市政府决定沿圆形广场外圈种一圈树。园林部门得到指令后,初步规划出n个种树的位置,顺时针编号1到n。并且每个位置都有一个美观度Ai,如果在这里种树就可以得到这Ai的美观度。但由于A城市土壤肥力欠佳,两棵树决不能种在相邻的位置(i号位置和i+1号位置叫相邻位置。值得注意的是1号和n号也算相邻位置!)。最终市政府给园林部门提供了m棵树苗并要求全部种上原创 2017-04-01 10:55:40 · 694 阅读 · 0 评论 -
【Bzoj2242】计算器
2242: [SDOI2011]计算器Time Limit: 10 Sec Memory Limit: 512 MB Submit: 3419 Solved: 1341 [Submit][Status][Discuss] Description你被要求设计一个计算器完成以下三项任务: 1、给定y,z,p,计算Y^Z Mod P 的值; 2、给定y,z,p,计算满足xy≡ Z ( mod原创 2017-02-19 21:43:19 · 572 阅读 · 2 评论 -
【Bzoj1196】公路修建问题
题意给一些边,每边有两种权值v1,v2(v1>v2)。分别表示一级或二级,让你求取了k条一级公路时的最小生成树的最大边权。解析因为边的权值范围不大,所以可以直接枚举边权,然后在边中选权值小于check值的加入。#include <cstdio>#include <algorithm>#define Rep( i , _begin , _end ) for(int i=(_begin);i<=(_e原创 2017-04-01 09:39:38 · 610 阅读 · 0 评论 -
【Bzoj4653】区间
题意在数轴上有 n个闭区间 [l1,r1],[l2,r2],…,[ln,rn]。现在要从中选出 m 个区间,使得这 m个区间共同包含至少一个位置。对于一个合法的选取方案,它的花费为被选中的最长区间长度减去被选中的最短区间长度。区间 [li,ri] 的长度定义为 ri−li,即等于它的右端点的值减去左端点的值。求所有合法方案中最小的花费。如果不存在合法的方案,输出 −1。解析我们用一棵线段树来保存点的原创 2017-05-01 15:36:33 · 617 阅读 · 0 评论 -
【Bzoj1293】生日礼物
题意:小西有一条很长的彩带,彩带上挂着各式各样的彩珠。已知彩珠有N个,分为K种。简单的说,可以将彩带考虑为x轴,每一个彩珠有一个对应的坐标(即位置)。某些坐标上可以没有彩珠,但多个彩珠也可以出现在同一个位置上。 小布生日快到了,于是小西打算剪一段彩带送给小布。为了让礼物彩带足够漂亮,小西希望这一段彩带中能包含所有种类的彩珠。同时,为了方便,小西希望这段彩带尽可能短,你能帮助小西计算这个最短的长度么?原创 2017-04-21 18:55:36 · 546 阅读 · 0 评论 -
【Bzoj4195】程序自动分析
题意给定n个形如xi=xj或xi≠xj的变量相等/不等的约束条件,让你判断是否矛盾。解析用并查集把相等的并起来,之后判断有没有冲突的。注意要先把所有的都并起来,因为可能有连等。#include <cstdio>#include <algorithm>#include <cstring>#define Rep( i , _begin , _end ) for(int i=(_begin);i<=(原创 2017-04-03 22:31:46 · 861 阅读 · 0 评论 -
【Bzoj3196】2B平衡树
题意您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作: 1.查询k在区间内的排名 2.查询区间内排名为k的值 3.修改某一位值上的数值 4.查询k在区间内的前驱(前驱定义为小于x,且最大的数) 5.查询k在区间内的后继(后继定义为大于x,且最小的数)解析唔…看到这个标题 啊啊啊是你吗2B小姐姐!! 好了不发神经这是个灰常普通的树套树模板,一般会用线段树套原创 2017-06-14 21:41:52 · 810 阅读 · 0 评论 -
【Bzoj2141】排队
题意给一个序列,每次可以交换其中的两个数,每次交换后输出逆序对的数量。解析每次交换考虑x,y之间的数字(x之前,y之后的数字是没有影响的) 那么增加的数字是小于a[y],大于a[x]的那些。 减小的是小于a[x],大于a[y]的。 区间查rank显然可以树套树解决。 然后注意一些特判。#include <cstdio>#include <algorithm>#define Rep( i ,原创 2017-06-15 17:54:52 · 641 阅读 · 0 评论 -
【Bzoj2588】Count on a tree
题意伟大的树上权值第k小。解析在树上建立主席树,每个点的前驱不再是它的前一个点,而是它的父亲结点。我们可以这样来想,序列上的主席树类似于前缀和,用的时候直接序列上差分。而树上也就可以把每个点保存为到根的主席树,查询的时候也类比树上的差分就可以了。记得是Query(rt[x],rt[y]….)。#include <cstdio>#include <algorithm>#define Rep( i ,原创 2017-07-06 11:51:50 · 741 阅读 · 0 评论 -
【Bzoj4336】骑士的旅行
题意给一棵树,每个结点上可能有多个权值,可以每次改变某权值的值或者位置,多次询问一条路径上的前k大值。解析对于每个结点维护一个multiset,因为k很小,所以每次可以把两结点暴力合并,这样就只要把两个队列合并就可以了。#include <set>#include <cstdio>#include <algorithm>#define Rep( i , _begin , _end ) for(i原创 2017-06-24 22:40:19 · 867 阅读 · 0 评论 -
【Bzoj3732】Network
题意给你N个点的无向图 (1 <= N <= 15,000),记为:1…N。 图中有M条边 (1 <= M <= 30,000) ,第j条边的长度为: d_j ( 1 < = d_j < = 1,000,000,000).现在有 K个询问 (1 < = K < = 20,000)。 每个询问的格式是:A B,表示询问从A点走到B点的所有路径中,最长的边最小值是多少?解析类似于那啥货车运输,嗯原创 2017-07-01 19:11:39 · 756 阅读 · 0 评论 -
【Bzoj4353】play with tree
题意给你一棵包含N个节点的树,设每条边一开始的边权为0,现在有两种操作: 1)给出参数U,V,C,表示把U与V之间的路径上的边权变成C(保证C≥0) 2)给出参数U,V,C,表示把U与V之间的路径上的边权加上C。但是如果U至V之间路径某条边的边权加上C小于0,那么C=这条边的边权的相反数。 你需要统计出每次一操作过后树中边权为0的边有多少条。解析边权树链剖分。对于操作1直接修改,对于操作2,先原创 2017-07-01 16:15:30 · 906 阅读 · 0 评论 -
【Bzoj1303】中位数图
题意给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。解析因为数都是不重复的,所以可以把左边小于它的记为+1,大于的记为-1,统计前缀和f。同理,右边大于的记为1,小于的记为-1,统计前缀和g,那么,如果左边某个数出现某次数的方法种数等于右边的,就根据乘法原理统计答案,特别地,f[0]=g[0]=1。数组下标要做一点处理。#原创 2017-06-10 08:39:37 · 987 阅读 · 0 评论 -
【Bzoj4448】情报传递
题意给一棵树和m个操作(持续m秒),操作如下 1.给一个点打上标记,被标记的点每秒加1危险度,(被标记时仍为0,后一秒为1)。 2.查询x,y的路径上有多少危险度大于k的点。解析这种每秒增加的标记显然是不好维护的。 考虑转化。 设某点在t时刻被标记,i时刻提出询问,那么此时它的危险度为i-t。 则有i-t>k,t#include <cstdio>#include <algorithm>#原创 2017-06-20 20:40:08 · 731 阅读 · 0 评论 -
【Bzoj4027】兔子与樱花
题意给一个n个结点的树,每个结点有最大载重m,上面有c[i]朵花,对于每个结点,它的儿子个数和花的朵数不能超过m。现在可以删掉一些结点,每删掉一个,它的花就会给父亲,求最多能删掉多少结点。解析树形Dp+贪心。 可以直接Dfs递归实现。 显然从权值小的开始删起。#include <cstdio>#include <vector>#include <algorithm>#define Rep(原创 2017-05-23 22:03:10 · 466 阅读 · 0 评论 -
【Bzoj3522】Hotel
题意有一个树形结构,每条边的长度相同,任意两个节点可以相互到达。选3个点。两两距离相等。有多少种方案?解析满足条件的点对一定是“有一个中心点,三个点到中心点的距离相等,且三个点分别在不同子树中”这种情况。(因为如果在同一子树中会被重复统计)。 那么枚举中心点,然后遍历子树,统计答案。 令cnt[i]表示当前子树中深度为i的点有多少个。 f[i]表示当前点已经遍历过的子树中,深度为i的点有多少个原创 2017-05-23 21:57:01 · 392 阅读 · 0 评论 -
【Bzoj1060】时态同步
题意给你一个n个结点的树。每条边上有一个权值,你可以给边加上权值,求最少要加上多少权值才能使根结点到每个叶子结点的权值相同。解析Dfs即可,每个结点的子结点都要加上其与最大子结点的差值。#include <cstdio>#include <cstring>#include <algorithm>#define Rep( i , _begin , _end ) for(int i=(_begin)原创 2017-05-23 21:45:50 · 423 阅读 · 0 评论 -
【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 · 512 阅读 · 0 评论 -
【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 · 395 阅读 · 0 评论 -
【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 · 419 阅读 · 0 评论 -
【Bzoj1875】HH去散步
题目描述HH有个一成不变的习惯,喜欢饭后百步走。所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离。 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走回。 又因为HH是个喜欢变化的人,所以他每天走过的路径都不完全一样,他想知道他究竟有多 少种散步的方法。 现在给你学校的地图(假设每条路的长度都是一样的都是1),问长度为t,从给定地 点A走到给定地点B共有多少条符合条件的路径输原创 2017-03-02 21:24:32 · 615 阅读 · 1 评论 -
【Bzoj3631】松鼠的新家
3631: [JLOI2014]松鼠的新家Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1780 Solved: 865[Submit][Status][Discuss]Description松鼠的新家是一棵树,前几天刚刚装修了新家,新家有n个房间,并且有n-1根树枝连接,每个房间都可以相互到达,且俩个房间之间的路线都原创 2017-02-11 13:58:35 · 448 阅读 · 0 评论 -
【Bzoj4326】运输计划
4326: NOIP2015 运输计划Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 1091 Solved: 696[Submit][Status][Discuss]Description公元 2044 年,人类进入了宇宙纪元。L 国有 n 个星球,还有 n−1 条双向航道,每条航道建立在两个星球之间,这 n−1 条航道连原创 2017-02-10 10:59:40 · 454 阅读 · 0 评论 -
【Bzoj2733】永无乡
2733: [HNOI2012]永无乡Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3031 Solved: 1592[Submit][Status][Discuss]Description永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来原创 2017-02-08 20:41:52 · 458 阅读 · 0 评论 -
【Bzoj1192】鬼谷子的钱袋
1192: [HNOI2006]鬼谷子的钱袋Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3312 Solved: 2412[Submit][Status][Discuss]Description鬼谷子非常聪明,正因为这样,他非常繁忙,经常有各诸侯车的特派员前来向他咨询时政。有一天,他在咸阳游历的时候,朋友告诉他在咸阳最大原创 2017-02-07 19:55:17 · 341 阅读 · 0 评论 -
【Bzoj2748】音量调节
2748: [HAOI2012]音量调节Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 1732 Solved: 1088[Submit][Status][Discuss]Description一个吉他手准备参加一场演出。他不喜欢在演出时始终使用同一个音量,所以他决定每一首歌之前他都要改变一次音量。在演出开始之前,他已经做好了原创 2017-02-07 19:08:51 · 453 阅读 · 0 评论 -
【Bzoj1083】繁忙的都市
惊现SCOI签到题?直接把最小生成树的ans+=改为ans=就行?代码中一些没用的部分就不要嘲讽了= = 拿的刚学最小生成树时的模板。#include#includeusing namespace std;const int maxn = 5000 + 10 ;const int maxm = 200000 + 10;int father[maxn];struc原创 2017-02-07 17:27:09 · 399 阅读 · 0 评论 -
【Bzoj1588】营业额统计
1588: [HNOI2002]营业额统计Time Limit: 5 Sec Memory Limit: 162 MBSubmit: 14967 Solved: 5850[Submit][Status][Discuss]Description营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tige原创 2017-02-07 17:09:37 · 344 阅读 · 0 评论 -
【Bzoj1008】越狱
[HNOI2008]越狱题目描述监狱有连续编号为1...N的N个房间,每个房间关押一个犯人,有M种宗教,每个犯人可能信仰其中一种。如果相邻房间的犯人的宗教相同,就可能发生越狱,求有多少种状态可能发生越狱输入输出格式输入格式:输入两个整数M,N.1输出格式:可能越狱的状态数,模100003取余原创 2017-02-07 14:45:52 · 396 阅读 · 0 评论 -
【Bzoj1878】HH的项链
1878: [SDOI2009]HH的项链Time Limit: 4 Sec Memory Limit: 64 MBSubmit: 3770 Solved: 1874[Submit][Status][Discuss]DescriptionHH有一串由各种漂亮的贝壳组成的项链。HH相信不同的贝壳会带来好运,所以每次散步 完后,他都会随意取出一段贝壳,思考它们所表达的含义。原创 2017-02-07 14:58:24 · 350 阅读 · 0 评论 -
【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 · 412 阅读 · 0 评论