BZOJ
文章平均质量分 64
16bit戦争
这个作者很懒,什么都没留下…
展开
-
BZOJ 1208 HNOI2004 宠物收养所 平衡树/set
题目大意:有一家宠物收养所,有没有被收养的宠物或者是想收养宠物的人,每个宠物有一个个性值,每个想收养宠物的人有一个理想的个性值。每一个时刻,宠物收养所里只能有想收养宠物的人或宠物。当人领走宠物时,就会有一个不满意度。求这个最小的不满意度。思路:就是个模拟+数据结构维护。用set可以水过,时间卡的不是很紧。练手写了Treap。注意极大值不能开太大,会reCODE:#i原创 2014-09-18 13:45:31 · 1431 阅读 · 0 评论 -
网络流24题 之十七 运输问题
题目大意:有一些仓库,一些零售店。现在零售店从仓库进货。给出每个仓库有多少货物,每个零售店需要多少货物,还有单位货物从仓库运送到零售店的价格。求满足所有零售店需求的最小费用和最大费用。思路:最小费用最大流,最大费用最大流。避免重复,为了好写,我把解费用装到了一个结构体里。建图方法:源向所有仓库连边,费用0,流量为仓库里的东西多少。所有零售店向汇连边,费用0,流量为零售店需要的货原创 2014-09-18 20:00:49 · 1250 阅读 · 0 评论 -
BZOJ 1500 NOI 2005 维修数列 Splay
题意:见下图传说级别的NOI数据结构神题,像我这种弱渣花了一下午的时间才A掉,最后发现竟然是边界值的问题没处理好。。这个题对Splay的所有操作基本是全了。插入:新建一颗Splay Tree,然后把对应节点Splay到根的右儿子上,再把新建的树连上。删除:把要删除的区间Splay到根的右儿子的左儿子上,递归free掉。(这里可以用数组优化,可以避免递归free节原创 2014-09-06 07:52:07 · 1253 阅读 · 0 评论 -
Splay tree 区间翻转 模板
Splay作为二叉平衡树与其他二叉平衡树不同的是,Splay能够支持区间操作。最然可持续化Treap也可以做到,但是代码量实在是难以同日而语。放一个模板,只支持区间翻转。想看其他操作的可以看我的 维修数列 的博客:http://blog.csdn.net/jiangyuze831/article/details/39098481PS:还是1A的,有点小开心……CODE:原创 2014-09-06 20:19:50 · 1612 阅读 · 0 评论 -
BZOJ 2243 SDOI2011 染色 树链剖分
题目大意:给出一棵树,和它上面每个点的初始颜色。有两种操作,1:求从x到y一共有多少段颜色(连续相同的颜色算一个颜色段)。2:把x到y路径上都染色成z。思路:是一棵树,求LCA路径,迅速想到树链剖分。难点是维护区间合并问题。线段树上的区间合并很常规,正常做就可以,注意一下在从一个重链上跳到另一个重链的时候的区间合并。有两种解决方案。1:在线段树中询问的时候返回一个结构体,里面存着左边颜原创 2014-09-20 12:31:04 · 1327 阅读 · 0 评论 -
NOIP 2003 侦探原理 大模拟+枚举
题目大意:有一些小孩闲着没事玩游戏,他们M个人中有N个人肯定说假话,剩下的人肯定说实话,有一个人是罪犯,求这个罪犯。他们会说出如下的话:证词内容 证词含义I am guity我是罪犯I am not guity.我不是罪犯Xxx is guityXxx是罪犯(Xx原创 2014-09-10 09:31:03 · 1060 阅读 · 0 评论 -
BZOJ 2763 JLOI 2011 飞行路线 分层图+最短路
题目大意:两个小屁孩要乘飞机去旅行。现在给一些无向边和边权,另外他们还有K次免费乘坐飞机的机会,问从起点到终点的最小话费是什么。思路:分层图第一题。之前听到分层图还以为是真的建K个图,然后不同层数之间的点连边跑最短路。。后来经同学讲解才发现我想多了。。其实还是动归的思想(最短路不也是动归的思想么(`・ω・´)),f[ i ][ j ]表示在j位置时,已经用了i次免费机会的时候的最小原创 2014-09-10 14:26:04 · 1637 阅读 · 0 评论 -
BZOJ 3627 JLOI 2014 路径规划 分层图 SPFA+HEAP
题目大意:N个点M条无向边,每个点有可能有红绿灯,或者是加油站,或者单单是一个点。红绿灯太多会让人烦,太久不加油车子就会开不动,问最多通过K次红绿灯,从“start”点到“end”点的最少花费是多少。思路:只能最多通过K次红绿灯,可以依据这个建分层图。f[ i ][ j ]为在已经通过i次红绿灯后,在j点时的最小花费。这只是总体的思路,具体是实现起来还是有其他一些小问题。题目中有一原创 2014-09-11 15:49:12 · 1515 阅读 · 0 评论 -
BZOJ 2662 BeiJing wc2012 冻结
题目大意:在一个充满魔法的国家,有一种魔法卡片,它可以使你行走的时间减半。给一张无向图,并告诉你有k个魔法卡片,问你最快多长时间能够从1到N。思路:经典的分层图模型,SPFA使将dis数组和vis数组开成二维,纪录一维层数信息即可CODE(1A,开心):#include #include #include #include #include #defi原创 2014-09-11 21:36:58 · 1195 阅读 · 0 评论 -
BZOJ 3631 JLOI 2014 松鼠的新家 LCA 树链剖分
省选的day1第一题,当时不会树链剖分,写原创 2014-08-29 21:34:19 · 902 阅读 · 0 评论 -
BZOJ 1012 JSOI 2008 最大数 maxnumber 线段树水题
题目大意:维护一种数据结构,支持两个功能:查询区间最大,插入到数列的最后。思路:一眼就看到是线段树了,没什么好说的。只有一点要注意,插入的时候线段树的范围不要跟着序列中的总数走,那样建完节点之后无法更新父亲节点的信息。CODE:#include #include #include #include #define MAX 200010#define MO d原创 2014-09-12 17:57:57 · 1168 阅读 · 0 评论 -
BZOJ 1269 [AHOI2006]文本编辑器editor Splay伸展树
题目大意:类似于我们正常输入文本,现在模拟这样的一个功能。它支持:1.将光标移动到第k个字符前2.在光标后面加入长度为l的字符串3.删除光标后面l个字符4.将光标后面l个字符翻转5.输出光标后面的字符,并保持光标位置不变6.将光标向前移动一个位置7.将光标向后移动一个位置注意:如下图所示,两次RE,得来的教训是插入的字符串长度要开到10000010-_-#原创 2014-09-13 20:00:05 · 1247 阅读 · 0 评论 -
BZOJ 1036 树的统计 树链剖分
写个树链剖分练练手tong原创 2014-08-29 22:35:16 · 656 阅读 · 0 评论 -
BZOJ 3196 二逼平衡树 树套树(线段树套Treap)
题目大意:写一种数据结构,他可以:1.查询k在区间内的排名2.查询区间内排名为k的值3.修改某一位值上的数值4.查询k在区间内的前驱(前驱定义为小于x,且最大的数)5.查询k在区间内的后继(后继定义为大于x,且最小的数)原创 2014-09-23 16:51:02 · 1102 阅读 · 0 评论 -
BZOJ 1001 Beijing 2006 狼抓兔子 最小割
题目大意:有一张无向图,描述的是兔子窝的位置和之间的边。现在狼来抓兔子了,兔子慌忙的从(1,1)逃走到(m,n)。每条边上都有能通过最多的兔子数量。狼不想让兔子逃走,每在一条边驻守一只狼就可以避免一个兔子通过。问最少多少狼可以让所有兔子都不能逃走。思路:建图,按题目中的意思是去掉最小的边使得源到汇不连通,显然的最小割。CODE:#include #includ原创 2014-09-13 14:50:38 · 1362 阅读 · 0 评论 -
BZOJ 1502 NOI 2005 月下柠檬树 计算几何 自适应辛普森积分
题目大意:有一个由圆锥和圆台组成的柠檬树,在月亮发出的平行光下,可以形成一个影子,求这个影子的面积。思路:理解投影的性质:只要是平行光线,投影在水平面上,所得的图形都与原图形全等。知道了这一点我们就可以画画图,分析就知道,其实柠檬树的影子,就是一些园和等腰梯形的面积的并。(如下图,样例)运用计算几何的知识就可以得到圆的方程和圆的公切线的方程,然后得到一个连续的函数。最后这个题就成为一直原创 2014-09-15 12:32:53 · 2216 阅读 · 0 评论 -
BZOJ 3668 NOI 2014 Day1_T1 起床困难综合症 二进制拆分
题目大意:给一些操作(只能是&)原创 2014-09-02 14:32:53 · 985 阅读 · 0 评论 -
BZOJ 3670 NOI 2014 动物园 变形KMP
题目大意:定义一种前缀,这个前缀和后缀一样并且没有交集,num[i]为qian原创 2014-09-02 17:37:10 · 2159 阅读 · 0 评论 -
BZOJ 3669 NOI 2014 魔法森林 最短路/LCT
题目大意:给一个无向图,每个边有两个权值,a和b原创 2014-09-02 16:00:41 · 1189 阅读 · 0 评论 -
BZOJ 1798 Ahoi 2009 维护序列seq
题目大意:维护一个序列,能够区间加,区间乘,然后去原创 2014-09-26 09:34:51 · 1368 阅读 · 0 评论 -
BZOJ 1503 郁闷的出纳员 二叉平衡树(Treap,Splay)
timud第一行有两个非负整数n和min。n表示下面有多少条命令,min表示工资下界。接下来的n行,每行表示一条命令。命令可以是以下四种之一:名称格式作用I命令I_k新建一个工资档案,初始工资为k。如果某员工的初始工资低于工资下界,他将立刻离开公司。A命令A_k原创 2014-09-03 12:32:24 · 836 阅读 · 0 评论 -
BZOJ 1565 NOI 2009 Day2 T1 植物大战僵尸
题目大意:小明同学在玩植物大战僵尸游戏,现在轮到他控制僵尸打败植物。植物分布在一个m*n的矩形中。僵尸从右边向左边攻击,要想打到左边的植物,要先打到它右边的植物。有一些植物是可以保护其他植物的,僵尸不能进入植物保护的区域,否则就会死。打败植有可能失去资源,也有可能获得资源。求一种攻击植物的方法,使得僵尸获得的资源最多。思路:先不考虑其他特殊的情况,一看到正权负权求最大就是最大权闭合图。但是有一原创 2014-09-17 17:45:16 · 1218 阅读 · 0 评论 -
BZOJ 1493 NOI 2007 项链工厂 Splay
题目大意:有一个很长的带颜色的项链,要求你快速的维护一种数据结构,他可以:1.把序列的后k个放在前面。2.将区间2~cnt的珠子翻转。3.将位置i和位置j的珠子互换。4.将区间i到j染色成k5.输出整个序列的颜色块的个数6.输出从i到j的颜色块的个数。思路:Splay。有些不好处理的是要时刻想着这是一个环,所以所有的计算颜色块的个数的时候要考虑收尾的颜色是否相同原创 2014-09-25 15:47:04 · 1164 阅读 · 0 评论 -
BZOJ 1588 HNOI2002 营业额统计 Treap
题目大意:统计营业额。每天的统计的数字是今天的营业额和以前所有的营业额的最小差值。思路:任何平衡树都可以。CODE:#include #include #include #include #define INF 10000000using namespace std;struct Complex{ int random,val,cnt,size;原创 2014-09-25 17:37:38 · 893 阅读 · 0 评论 -
BZOJ 3680 吊打XXX 计算几何 模拟退火 广义费马点
题目大意:有个人(gty)被吊打,他机智的使用了分身,但是每个分身有他的重力,把这些gty的分身绑起来,经过一个公共的绳结,求这个绳结最后在哪里。思路:其实这个题就转化成了:定义一个点到一个分身的距离是两点间的距离 * 分身的重力。求平面内到这些点的距离的和的最小值。和poj2420差不多,这个题只需要在统计的时候吧权值乘上每个分身的重量就可以了。值得一提的是这个题要求精度到1e-3,写的原创 2014-09-17 20:46:07 · 1547 阅读 · 0 评论 -
BZOJ 2049 Sdoi2008 Cave 洞穴勘测 动态树 Link-Cut-Tree
题目大意:有一些洞穴,现在都是彼此分开的,将会被一些无向边所连接。给一些操作,加边,删边,求在某状态下两点之间的联通状态。思路:简单的Link-Cut-Tree维护图的联通性。基础题,建议初学者刷这个。(我才不会说我被坑第一道题刷的2631。。自己调了2天,然后让同学看2分钟就看出错误了。。。。。。要搞好基础啊!!!)判断两点是否联通的时候只要暴力找根比较看看一不一样就可以了,不会原创 2014-09-28 18:38:24 · 895 阅读 · 0 评论 -
BZOJ 2819 Nim 树链剖分
题目大意:两个小人在树上玩Nim游戏,问有没有必胜策略。思路:尼姆游戏:如果所有石子的异或值为0就是必败局面。异或有如下性质:x ^ y ^ z = x ^ (y ^ z),所以就可以进行树链剖分了。题目中还好心提醒有30%的点会使dfs爆栈。。第一次写不用dfs的树链剖分,扒的别人的代码,有些丑陋。CODE:#include #include #inclu原创 2014-09-28 08:39:18 · 1294 阅读 · 0 评论 -
BZOJ 2631 tree 动态树(Link-Cut-Tree)
题目大意:维护一种树形数据结构,支持以下操作:1.树上两点之间的点权值+k。2.删除一条边,增加一条边,保证加边之后还是一棵树。3.树上两点之间点权值*k。4.询问树上两点时间点的权值和。思路:利用动态树维护这棵树,lct的裸题。如果不会下传标记的,先去做BZOJ1798,也是这样的标记,只不过在线段树上做,比这个要简单许多。这个也是我的LCT的第一题,理解起来十分原创 2014-09-28 13:32:34 · 1437 阅读 · 0 评论 -
BZOJ 3282 Tree Link-Cut-Tree 动态树
题目大意:维护一种动态树形数据结构,支持:1.求树上两点之间的点的异或和。2.连接两点(不保证不连通)3.删除连点之间的边(不保证两点联通)4.将一个点的点权改成一个值思路:还是LCT,思路也比较裸。主要是它各种不保证,所以要多加判断。CODE:#include #include #include #include #define MAX原创 2014-09-28 19:52:32 · 1012 阅读 · 0 评论 -
BZOJ 1016 JSOI 2008 最小生成树计数 Kruskal+搜索
题目大意:给出一些边,求出一共能形成多少个最小生成树。思路:最小生成树有很多定理啊,我也不是很明白,这里只简单讲讲做法,关于定各种定理请看这里:http://blog.csdn.net/wyfcyx_forever/article/details/40182739我们先做一次最小生成树,然后记录每一种长度的边有多少在最小生成树中,然后从小到大搜索,看每一种边权有多少种放法,然后所有原创 2014-10-22 15:26:58 · 893 阅读 · 0 评论 -
BZOJ 1014 JSOI 2008 火星人prefix Splay维护字符串Hash + 二分
题目大意:定义LCQ为从x,y分别开始,有多长完全一样。维护数据结构,给出xy,求出LCQ。此外还有修改和插入字符。思路:LCQ一定是Hash+二分,那么插入和修改呢,当然就是用Splay维护了。Splay上的每个节点存当前位置的字符,和它和整个子树的Hash值,重要是PushUp函数。除了维护子树大小,还需要维护Hash值。与正常计算Hash值的方法一样,更新的根节点的Hash值原创 2014-10-05 19:25:21 · 886 阅读 · 0 评论 -
BZOJ 2809 APIO 2012 dispatching 平衡树启发式合并
题目大意:给出一棵树,每一个节点有两个值,分别是这个忍者的薪水和忍者的领导力。客户的满意程度是这个点的领导力乘能够取得人数,前提是取的人的薪水总和不超过总的钱数。思路:只能在子树中操作,贪心的想,我们只要这个子树中cost最小的那些点就可以了。所以就深搜一次,每到一个节点上,把自己和所有子节点的平衡树启发式和并,然后保留不超过总钱数的人数,统计。数据范围比较大,能开long long的原创 2014-10-24 10:38:13 · 1246 阅读 · 0 评论 -
BZOJ 2186 SDOI 2008 沙拉公主的困惑 数论
题目大意:求出1~N!中与M!互质的数的个数,保证N>M。前言:最讨厌数学了。。。思路:因为保证了n>m,所以n!一定是m!的倍数。如果找到了一个x使得gcd(x,m!)==1,那么gcd(x + m!,m!) == 1一定成立,gcd(x + k * m!,m!) == 1(k >= 1)也一定成立。x的个数就是φ(m!),那么总的个数就是φ(m!) * n! / m!。之后各种原创 2014-10-24 14:05:56 · 962 阅读 · 0 评论 -
BZOJ 2190 SDOI 2008 仪仗队 线性欧拉筛
题目大意:有一个格子组成的图,如果三个人在一条直线上,那么第一个人会看不到第三个人。现在有一个人站在(1,1)上,问他能看到n*n的矩阵中的多少人。思路:若是想让站在(1,1)的这个人看到一个站在(x,y)的一个人,必须满足gcd(x,y) == 1,这是一个经典的模型,只要求出n以内phi的和就可以了。方法就是线性筛。CODE:#include #inclu原创 2014-10-08 10:53:48 · 983 阅读 · 0 评论 -
BZOJ 1040 ZJOI 2008 骑士 基环树林+树形DP
题目大意:有一些骑士,他们每个人都有一个权值。但是由于一些问题,每一个骑士都特别讨厌另一个骑士。所以不能把他们安排在一起。求这些骑士所组成的编队的最大权值和是多少。思路:首先貌似是有向图的样子,但是一个人讨厌另一个人,他们两个就不能在一起,所以边可以看成是无向的。n个点,n条无向边,好像是一颗基环树。但其实这是一个基环树林,因为题中并没有说保证图一定联通。然后就可以深搜了,处理原创 2014-10-08 15:15:50 · 1367 阅读 · 0 评论 -
BZOJ 2818 Gcd 线性欧拉筛(Eratosthenes筛)
题目大意:给定整数N(N 思路:推一推。设gcd(x,y) = p,则x / p与y / p互质问题就转化成了N / p中有多少个数互质,然后累加就可以了.=>对于任意a,b,a =>gcd(a,b) == 1现在问题就很明显了,看到这个形式就很容易想到欧拉函数,求一下phi,算一下前缀和,累加。注意这里求欧拉一定要线性的,1qw的数据,nloglogn都很悬。原创 2014-10-08 10:28:46 · 895 阅读 · 0 评论 -
BZOJ 1146 CTSC 2008 网络管理 Network 树链剖分+二分答案+平衡树
题目大意:有n个路由器,他们由n-1条边连接(形成一棵树)。每一个路由器有一个延时值。有两种操作:1.查询树上x,y两点之间的路径上第k大的权值是多少2.修改x位置的权值为y思路:当我大概想到怎么做这个题的时候,所想的时间复杂度已经达到了O(nlog^4n),偷偷的瞄了一眼数据范围...(N,Q“没事,写吧,我10多秒就过了。。。”秒就过了。。。就过了。。。过了。。。了原创 2014-10-08 18:27:20 · 1029 阅读 · 0 评论 -
BZOJ 1861 ZJOI 2006 Book 书架 Splay
题目大意:有一个书架,现在需要经常改变这些书的位置,每次询问一本书在哪或者第几本书是什么。思路:赤裸裸的Splay,只是有些小事需要注意。因为他有的时候问你一个书在哪,这个事情不能只在Splay中就能解决,我们需要辅助他解决。注意到操作中没有加入书的操作,也就是书的总数并不会变化,而且Splay的过程中只是指针的变动,所以不会有点发生变化,所以在一开始建树的时候维护一个数组,表示这本书原创 2014-11-11 20:39:12 · 736 阅读 · 0 评论 -
BZOJ 3589 动态树 树链剖分+容斥定理
题目大意:给出一棵树,每一个节点有一个权值,一开始所有节点的权值都是0。有两种操作,0 x y代表以x为根节点的子树上所有点的权值增加y。1 k a1 b1 a2 b2 ……ak bk代表询问。一共有k条边( k 思路:子树修改,区间查询,很明显用树链剖分解决,树链剖分维护一个size域,那么x的子树的范围就是pos[x]到pos[x] + size[x] - 1这一段上,可以用线段树原创 2014-10-25 08:08:03 · 1134 阅读 · 0 评论 -
BZOJ 1038 ZJOI 2008 瞭望塔 半平面交
题目大意:给出一个村庄的轮廓,在这个村庄里可以在任意的地方建一个瞭望塔,这个塔需要足够高,使得能够看得村庄的全貌。求这个瞭望塔的最小高度。思路:对于村庄中的每一条边,瞭望塔为了看见它,必须要在这个直线左侧的半平面区域。这样的话为了满足所有的边的需求,做一次半平面交,瞭望塔的最高点必须在所有边的半平面交的区域内。如下图样例。所有边的半平面交区域就是上面的图形。设上面半平面的函原创 2014-10-24 15:51:46 · 961 阅读 · 0 评论