bzoj
文章平均质量分 50
ww140142
wwwwwww
展开
-
bzoj-1500 维修数列
题意:给出一个长度为n的数列和m个操作;对每个5,6操作输出一个答案;被bz吃掉的数据范围:你可以认为在任何时刻,数列中至少有1个数;输入数据一定是正确的,即指定位置的数在数列中一定存在;50%的数据中,任何时刻数列中最多含有30 000个数;100%的数据中,任何时刻数列中最多含有500 000个数;100%的数据中,任何时刻数列中任何一个数字均在[-1 00原创 2015-06-28 08:36:37 · 1408 阅读 · 0 评论 -
bzoj-3931 网络吞吐量
题意:给出一个n个结点的无向图,每个结点有一个吞吐量;规则是数据包传递一定按照最短路,求1到n的网络吞吐量;题解:正如黄学长所说,此题题意即题解;但是还是有几点需要注意的;最短路是dij还是spfa都可以,但是为了建图需要记录一下路径;如果用链式前向星可以将所有用来更新的边存下来建图;但是用vector或者邻接矩阵(不知道能不能过)存边就不能实现;我是用原创 2015-06-24 21:33:24 · 777 阅读 · 0 评论 -
bzoj-1570 Blue Mary的旅行
题意:给出一个有向的网络流,每个边每天限流为v;现有k个人要从1到n点,求最小时间;题解:枚举经过的天数,然后根据天数分层;每层的n个点之间根据流量连边,再从昨天向今天的相同点连容量为无穷大的边;然后求从第一天第一点到每天的n点的最大流;直到大于等于n时,天数减一为答案;(恩其实这就是网络流24题)代码:#include#i原创 2015-06-18 21:39:34 · 665 阅读 · 0 评论 -
bzoj-1305 dance跳舞
题意:有n个男生和女生,男女之间要么互相喜欢要么互相不喜欢;现在两两配对跳舞,两个人不能跳两次舞;和不喜欢的人最多跳k次舞,求这些人可以跳多少轮舞;n题解:考虑网络流建图:显然男生女生是不相交的,那么这就是个在二分图中的匹配问题;每两个人之间都有跳舞的可能,但是有k这个数的限制;所以就是每个男生和喜欢的女生有流量为1的边,和不喜欢的女生总计有流量为k 的原创 2015-06-17 21:35:46 · 694 阅读 · 0 评论 -
bzoj-1085 骑士精神
题意:对于一个5x5的棋盘,上面有12个白子12个黑子;给出一个目标棋盘,求一些棋盘最少走多少步能到达这个状态;题解:DFS显然是不可以的,很容易陷入无限循环;那么分析BFS的复杂度,每个状态向外拓展最多8个,最少2个;平均大概是在4个左右,层数最大是15,也就是说时间复杂度在O(4^15=1,073,741,824)这个数量级;最后一层的空间复杂度也很大,这样原创 2015-06-08 21:01:38 · 857 阅读 · 0 评论 -
bzoj-3675 序列分割
题意:给出一个长度为n的序列和m次操作;每次操作选择一个地方将序列分开,得分为左一半的和乘右一半;求最大的总得分;题解:首先显然分割的顺序与得分无关,只要在那几个地方割就可以是最优解; (为什么?难道要我@PoPoQQQ来证明一下?)然后可以设状态为f[i][j],表示在前j个数里选择i个点分割的最大得分;那么转移式显然为f[i][j]=max原创 2015-06-05 22:22:27 · 804 阅读 · 0 评论 -
bzoj-3110 K大数查询
题意:给出一段长为n的区间和m个操作;1是向[l , r]区间中每个点加入一个权值为k (k2是查询[l , r]区间中的第k大数;注意1操作是加入而不是加上,就是说此题是在n个盒子里放小球的意思;题解:此题自己并yy不动,所以想法都是各位神犇的;/*自己想的是外层线段树维护区间,内层treap维护排名;然而只能做到单点的修改,区间修改暴力搞势必不行;打原创 2015-05-26 20:55:28 · 907 阅读 · 0 评论 -
bzoj-2141 排队
题意:给出一段长为n的数列,求其逆序对数;然后给出m个操作,每次操作给出l,r;交换l,r并输出操作之后的逆序对数;n题解:求逆序对本来是一个很简单的事情,然而动态修改就不能用树状数组直接搞了;因为树状数组求逆序对是不支持区分某个数在它前面还是后面的;所以考虑求在它之前小于它的数的个数,用线段树维护区间,套treap维护排名;在求排名的过程中顺便记录一个原创 2015-05-26 09:27:23 · 1360 阅读 · 0 评论 -
bzoj-2150 部落战争
题意:在一个m*n的01矩阵中,1表示可以走而0表示不能走;每个部队可以走r*c的方格,并且只能向下而并不能向上;每个1点能且只能让一个部队经过并占领,部队可以从任意1点开始;求多少个部队可以占领全部1点;n,m题解:考虑每个1点都是可以从自身出发或者从上面的点到达;而又只能去下面的另一个点,因此所有路径是不可能出现环的;那么我们把一个点拆成两个,一个作为起点,原创 2015-05-20 11:27:34 · 1240 阅读 · 0 评论 -
bzoj-1503 郁闷的出纳员
题意:给出n个操作和最低值min;I:增加一个新的权值为k的节点;A:将全部节点权值加k;S:将全部节点权值减k;F:查询当前第k大的权值;无论何时若某权值小于min那么就要删除该点;输出询问的结果以及总共删去的多少节点;题解:查询第k大值的问题,用平衡树来维护此题;思路大概像线段树一样,用一个延迟标记来防止不需要的更新;(以上思路纯属yy,时间原创 2015-05-16 22:12:20 · 726 阅读 · 0 评论 -
bzoj-2330 糖果
题意:给出n个未知数以及m个等式或不等式;未知数均为正整数范围内;求它们的最小和;题解:显然是一道差分拘束的躶题,所以我们就先来说说差分拘束;所谓差分拘束就是给出一些形如 xi-yi 求出某两项的最大差(反之同理);我们观察这个不等式,如果我们令x,y分别表示求最短路中f数组的值;也就是某个源点到x,y的最短路;显然由最短路的定义可知,x必然是要小原创 2015-05-07 23:26:39 · 861 阅读 · 0 评论 -
bzoj-1878 HH的项链
题意:给定长为n的序列与m个询问;求询问的区间里不相同数字的个数;n题解:在线算法太过高深并不会,所以这道题就要离线做;分析数据范围,m个询问完全可以存下,1000000的数字也可以hash勉强不用离散化;那么考虑一段区间的数字种类数,大概就是 1 - R 减去 1 - ( L - 1 ) ;但是因为有重复的数字,对于重复了的数,我们只应该在L-R间计算原创 2015-05-03 20:32:51 · 798 阅读 · 0 评论 -
bzoj-3211 花神游历各国
题意:给出长度为n的非负序列与m个操作;操作1 查询区间和;操作2 将区间内所有数字开方;题解:本以为是到神题推了一会,结果是个傻题= =;总而言之就是10^9开五次平方就变成了1,就可以不再修改他;那么记录一个标记,表示这段区间是否还可以被开平方;线段树暴力搞就可以了,要开long long;代码:#include#include原创 2015-04-30 19:52:30 · 631 阅读 · 0 评论 -
Bzoj-1452 Count
题意 给出一个矩阵; 多次修改某元素的权值; 多次查询某种权值的在某矩阵中的个数;题解 一开始看这个题还是比较害怕的,但是数据范围出卖了它; n,m<=300;权值<=100; 这就没什么说的了,100个树状数组完美水过(笑);原创 2015-03-21 09:04:44 · 684 阅读 · 1 评论 -
bzoj-3172 单词
题意:给出n个单词,求在这n个单词组成的文章中每个单词出现了多少次;n题解:一开始考虑就是先建个自动机,然后对每个串匹配一次;经过的所有节点 和后缀的cnt全部+1;然后查询每个单词的危险结点的cnt值就是答案;复杂度O(n*len+k*n*len)基本也是线性的,似乎可过;结果我T了;然后查了一下题解,有种更好的思路,不需要用串去在自动机上匹配;就原创 2015-07-07 21:22:29 · 874 阅读 · 0 评论 -
bzoj-2957 楼房重建
题意:数轴上有n个楼,分别在1~n这些点上;m次查询,每次改变一个楼的高度,问从(0,0)这个点可以看到多少楼;题解:对于一个楼来说要想看到这个楼,那么前面的楼的斜率一定比这个楼小;那么考虑分块的话,就将块中楼的斜率都求出来;然后维护出一个从块首元素开始的递增序列;即包括块首元素的下标最小的序列;扫一遍所有块,取该块之前的所有楼的最大斜率为m原创 2015-07-08 20:12:19 · 861 阅读 · 0 评论 -
bzoj-2243 染色
题意:给出一个无根树和树上每个结点的初始颜色;然后进行m次操作;C:将x到y的路径所有点染成某个颜色;Q:查询x到y的路径上经过多少个颜色块;n,m题解:挺裸的树链剖分,修改的时候要用延迟标记维护;但是注意颜色可能为0,所以我单独开了一个bool的数组维护是否有标记;在合并两个区间的时候要判断两个端点的颜色是否相同;如果相同要将端点合并,也就是答案-原创 2015-07-12 13:54:43 · 931 阅读 · 0 评论 -
bzoj-3261 最大异或和
题意:给出一个长度为n的初始序列,和m次操作;A操作:在序列后面加入一个数;Q操作:给出一段区间[l,r]和一个数x,求区间中的p使p的后缀异或和与x的异或值最大;n,m题解:可持久化数据结构(2/4)进行中... ...先做一个转化,因为是在序列后面加数,维护后缀和并不容易;但是由于异或性质可以转化成前缀和的问题;也就是在区间中选一个数,使其与另一原创 2015-07-25 16:31:46 · 2258 阅读 · 0 评论 -
bzoj-2142 礼物
题意:求n!/m1!m2!...mt! mod P的值;P为合数,m不超过五个;若m的和超过n输出"Impossible";题解:看了一大堆Lucas定理的题解我就没看到哪里的组合数!!这些都不重要,因为反正它不适用(笑);合数这个特性使逆元几乎无法处理,所以要转化一下;将P分解质因数,变为∏pi^ti的形式;然后可以考虑对每个pi^ti处理一下;原创 2015-06-30 21:06:22 · 1019 阅读 · 0 评论 -
bzoj-2038 小Z的袜子 hose
题意:给出一个长度为n的序列,每次询问一个区间[l,r];查询在这个区间中取出两个数恰好相等的概率;每个数大小在[0,n]内,概率用既约分数表示;题解:考虑一个区间的答案,显然是合法方案数/取数的所有可能;也就是 ∑C[同种数字个数][2]/C[r-l+1][2];但是这个东西对一次询问的处理复杂度是O(r-l+1)的;那么考虑上莫队算法,处理这样的区间问题原创 2015-08-05 09:37:28 · 703 阅读 · 0 评论 -
bzoj-2219 数论之神
题意:求方程X^A = B(mod 2*K + 1)X ∈[0, 2K] 内的解的个数;题解:一道数论的好题;涉及知识点大概有:Crt推论,BSGS,EXGCD,原根与指标;这道题的主要问题在于两点:第一点:取模数不是质数,无法利用通常的方式解方程;但是有中国剩余定理这个东西,定理的推论告诉我们:一个取模数互质的同余方程组(未必线性),组合起来之后,这个原创 2015-08-20 20:02:10 · 2257 阅读 · 1 评论 -
bzoj-3203 保护出题人
题意:在一个诡异的植物大战僵尸游戏中,给出n关;第i关队首僵尸距房门xi,两个僵尸之间间隔为d;每次在队首添加一个血量为ai的僵尸,其他僵尸不变;每关在门前放一个攻击力任意的植物,求n关放置植物总攻击力的最小值;n题解:题意叙述略诡异。。建议还是去看一眼原题;首先考虑对于每一关的答案,应该是恰好将最难打死的僵尸打死的攻击力值;令s[i]为i这个僵尸血量与原创 2015-08-09 10:23:50 · 968 阅读 · 0 评论 -
bzoj-3052 糖果公园
题意:给出一颗n个结点的树,每个结点上有一种糖果∈[1,m];一个人经过这个结点品尝糖果j获得的愉悦度为w[time[j]]*val[j] (其中time[j]指j的品尝次数);给出q次操作,操作有两种:1:更改某结点的糖果种类;2:查询某两个结点路径上的愉悦度总和;题解:250s的神题,orz各位神犇;将树分块,每块n^2/3大小,分成n^1/3块;原创 2015-08-09 13:53:42 · 885 阅读 · 0 评论 -
bzoj-2693 jzptab
题意:有一个n*m的数表,(i,j)位置上的数是LCM(i,j);求这个数表的和;n,mCrash的数字表格加强版题解:考虑把lcm转化成gcd那答案就是然后神奇的设:就有:一样可以枚举 的取值,这是O(√n)的;然后求f(x,y);大概证明了一下= =线性筛之后也可以O(√n)求出f(x,y)原创 2015-08-24 14:31:23 · 1781 阅读 · 0 评论 -
bzoj-3529 数表
题意:令x的约数之和为g[x];多组数据,输入n,m,a;求∑g[gcd(i,j)],g[gcd(i,j)]题解:首先对于取值在非负整数集合的数论函数,有以下结论成立;此定理即莫比乌斯反演定理;有了这个结论,本题中我们定义两个函数;f [n]为gcd(i,j)==n的(i,j)对数;F[n]为n|gcd(i,j)的(i,j)对数;原创 2015-07-18 22:39:12 · 876 阅读 · 0 评论 -
bzoj-2301 Problem b
题意:求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k;1≤a≤b≤50000,1≤c≤d≤500001≤n≤50000,1≤k≤50000题解:首先可以把询问拆成四个,然后容斥一下就是答案问题转化成求gcd(x,y)=k,1令f(x)为满足条件的gcd(x,y)=x的(x,y)对数;令F(x)为满足条件的x|gcd(原创 2015-08-24 14:24:35 · 738 阅读 · 0 评论 -
bzoj-1492 货币兑换Cash (1)——平衡树维护凸包
题意:有n天和m的初始金钱,用来购买AB两种纪念券;n天里每天都有AB的价格,每天可以进行这样的操作;1.卖出手中x%的纪念券(AB分别都卖出x%);2.用x的金钱买入纪念券,买入AB券的比例在第i天为Rate i;求n天过去之后所获得的最大收益;金钱和券数均为实数;n题解:首先,虽然题中的买入和卖出都是任意数量的,但是同样的纪念券,分几天卖出得到的收原创 2015-07-11 09:37:45 · 1986 阅读 · 0 评论 -
bzoj-1492 货币兑换Cash (2)——CDQ分治
题意:略见上一篇题解:方程还是那个方程f[i]=A[i] * X[j] + B[i] * Y[j];化简为Y[i]=(-A[i]/B[i]) * X[i] + f[i]/B[i]这一坨;既然这个斜率不单调,那排个序让它单调不就行了;排序之后的问题就是,在i前面更新i的点不一定可以更新i,而应该用来更新i的点说不定还在i的后面;那么这时候就是用CDQ分治解决;原创 2015-07-11 10:10:33 · 1315 阅读 · 2 评论 -
bzoj-2115 Xor
题意:给出一个有权无向图;求1到n的路径上的最大异或和;n题解:由于异或的性质,我们可以知道对于任意一条连通图上的路径的异或和;都可以由另外一条路径异或若干个环的异或和得来;因为它们起点和终点都分别是1和n,那么这两个路本身就构成了一个可能经过相同边的环;而更加显然的是,一个这样的非简单环是可以由若干个简单环组成的;那么异或了这些简单环之后得到了这个非简原创 2015-07-18 09:01:26 · 835 阅读 · 0 评论 -
bzoj-3232 圈地游戏
题意:在一个n*m的网格里,边上有花费,格里有权值;从任意一个点开始绕一圈,绕一个简单环出来,里面的所有格子就是收益;求最大的收益/花费;所有数题解:考虑01分数规划的方式,但是花费和权值不在一起;那么考虑将格内的权值转化到边上;实际上将边有向化,按边方向左面一行的权值为正,右面为负,加起来作为选了这条边的权值;这样在围成一个环的过程中会将外面的点消原创 2015-08-10 19:13:05 · 1503 阅读 · 0 评论 -
bzoj-2006 超级钢琴
题意:给出一个长度为n的序列,取序列中L问这样的子串前k大个的和是多少;题解:好像是很神的题。。首先考虑一个子串的和是什么?比如[i,j]这个串,和就是sum[j]-sum[i-1] (sum表示前缀和);那么对于每一个j的答案,应该是sum[i-1]比较小的i值;怎么找到前k大,就用到了A*算法;我们首先将每个j对应的最小的sum[i-1]求值,之后插原创 2015-08-25 07:24:39 · 948 阅读 · 0 评论 -
bzoj-1042 硬币购物
题意:有四种面值的硬币ci,进行tot次购物;每次购物每种硬币有di个,问买s元的物品有几种方法;题解:硬币面值只有四种,可以猜测到算法复杂度不会很大;普通的背包无法限制di个这个条件;而将di个硬币拆开复杂度无法承受,并且一样难以统计方案;所以考虑容斥原理简化问题;去掉di的限制,令f[x]表示四种硬币购买x元的物品有几种方法;这个f数组可以在原创 2015-07-30 10:35:43 · 1067 阅读 · 0 评论 -
bzoj-4103 异或运算
题意:给出一个长度为n的a数组,和一个长度为m的b数组;现有一矩阵A[i][j]=a[i] xor b[j];q次求矩阵中某一块的第k大值;n题解:又是一个k大值问题,但是显然并不能将矩阵列出来求值;但是n和q的范围都小的诡异= =;所以考虑对于每个询问暴力枚举1-n的某区间;然后呢,对这些数去找第k大值;如果询问的是最大值,那么在可持久化Trie上原创 2015-08-25 21:58:07 · 1508 阅读 · 2 评论 -
bzoj-1467 clever Y / JDFZ-2940 EXBSGS
题意:求解方程A^x=B (mod C)在[0,C)中的最小解;C题解:此题C并不是质数,所以要用一种叫做EXBSGS的东西来解;考虑BSGS的适用条件,主要是在于A^k也就是A不一定对于C有逆元;那么约下去一些怎么样?令d=gcd(A,C),那么一定有 d|B或者x=0,B=1;x=0的情况比较特殊,直接特判即可;那么若没有d|B则无解;原创 2015-08-21 18:21:17 · 1150 阅读 · 0 评论 -
bzoj-3564 信号增幅仪
题意:给出平面上n个点和一个角度α,一个比值p;求一个长轴与x轴夹角为α,长轴与短轴比值为p的椭圆,包含了这n个点,且使半短轴最小;题解:本来只是上bz找找计算几何凸包啥的裸题刷刷,结果怎么碰上这么一个玄学的玩意。。。况且这题还不用凸包;看起来只是将圆拓展到了椭圆,但是直接按原模型乱搞似乎有些难度;判断点和椭圆的关系需要一部转化;两点间求椭圆,甚至三原创 2015-07-30 18:36:35 · 1162 阅读 · 0 评论 -
bzoj-1132 Tro
题意:给出n个点,求这n个点组成的所有三角形的面积和;n题解:这道题O(n^3)枚举三角形时间复杂度是无法承受的;所以考虑枚举一条边,多个三角形一起来计算,复杂度在O(n^2)的级别;求三角形面积可以底乘高的面积公式,也可以上叉积;如果采用底乘高的方法,求出所有的点到直线的距离之和,也是可以O(1)得到当前的解的;但是求距离之和这一步必然是O(n)的原创 2015-07-31 08:30:08 · 762 阅读 · 0 评论 -
bzoj-1194 潘多拉的盒子
题意:给出S个自动机,每个自动机有n个结点和m个输出结点;每个结点有两个后继'0'和'1',将当前走过的串末尾加那个字符,然后走到下一个结点;每次从0号点,以一个空串出发,到了输出结点时可以选择输出当前串;如果一个自动机x可以输出的所有串另一个自动机y也都可以输出,那么y是x的升级;求最大升级序列;S,n,m题解:这道题稍微考虑一下之后,发现难以处理的地方是原创 2015-08-26 19:25:55 · 1246 阅读 · 0 评论 -
bzoj-3011 Running Away From the Barn
题意:给出以1号点为根的一棵有根树,问每个点的子树中与它距离小于等于L的点有多少个。n题解:这题比较有意思;首先考虑的就是树形DP,但是DP完全无法转移;考虑一个结点的答案,那就是子树中与这个结点距离小于等于L的点数(废话);那它父亲在这个子树的答案呢?子树中每个点的距离都增加了,而相对大小关系没有改变;所以就用一个可并堆来维护子树,每次将堆中距离过原创 2015-08-25 22:34:53 · 1175 阅读 · 0 评论 -
bzoj-4172 弹珠
题意:白板题,略去;题解:首先根据操作用Splay维护序列;注意维护之后的序列应该保证是n个的;然后就有三个数组a[i],p[i],q[i];令f[i]表示用前面的弹珠撞击第i个弹珠的最大得分;那么f[i]=max(0,-a[i]*p[j]+q[j]);(0暂时不考虑0,变形可得q[j]=a[i]*p[j]+f[i];这显然是一个斜率原创 2015-08-12 16:25:36 · 703 阅读 · 0 评论 -
bzoj-1001 狼抓兔子
题意:给出一个n*m的下面这样的图,求此图的最小割;n,m题解:这题说好的简单题结果怎么如此丧病;最简单的想法就是求最小割就是求最小割嘛;然后一发Dinic搞定;然而似乎现在不能这么A了= =所以这个图有一些特殊的性质,这是一个平面图;而对于一个平面图的割来说,一定是一条曲线割开了一些线段;那么如果将这些平面视为点,边视为连接两个平面的边;原创 2015-08-12 15:38:04 · 1029 阅读 · 0 评论