自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(48)
  • 收藏
  • 关注

原创 bzoj 3401 && bzoj 1657 单调栈

题意:对于每一个i,找到离它最近的j满足 i倒序单调栈type rec=record h,num:longint;end;var n,top :longint; i :longint; a,ans :array[0..100010

2017-02-28 23:22:56 350

原创 bzoj 1925 DP+滚动数组

这个题解不正经,可以不用看了...打表找规律生生找出来2333333,的并不知道正解是怎么YY出来的╮(~▽~)╭推荐正经题解:http://blog.csdn.net/aarongzk/article/details/44871391var f :array[0..2,0..4210] of longint; n,p,x,y

2017-02-28 21:27:15 314

原创 poj 3463 最短路和次短路

题意:n个点,m条有向边,给定起点和终点,求出起点到终点最短路和比最短路长1的路径的总条数dijkstra算法,邻接表建图改进Dijkstra算法。将状态扩展到二维,第一维仍然是顶点编号,第二维分别用于记录最短路和次短路。这样的数据有两个,dist[][2]记录距离,cnt[][2]计数。更新状态时:1)新值小于最短路径长:将最短路的相关数据赋予次短路,更新最短路径长,计数;

2017-02-28 19:53:55 454

原创 bzoj 1336 && bzoj 1337 最小圆覆盖 随机增量法

题意:n个点,求出最小圆覆盖,输出半径和坐标最小圆覆盖裸题...蒟蒻只会随机增量法...type rec=record x,y:double;end;var n,x,y :longint; a :array[0..100010] of rec;

2017-02-28 06:35:35 485

原创 bzoj 3626 树链剖分+离线处理

题意:给出一个n个节点的有根树(编号为0到n-1,根节点为0)。一个点的深度定义为这个节点到根的距离+1。q个询问,每个询问给出区间[l,r]和z,求在[l,r]区间内的每个节点i与z的最近公共祖先的深度之和好题...orz并不会写题解...const mo=201314;type rec=record l,r:

2017-02-27 09:35:05 364

原创 bzoj 4034 树链剖分模板

题意:有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种:操作 1 :把某个节点 x 的点权增加 a 。操作 2 :把某个节点 x 为根的子树中所有点的点权都增加 a 。操作 3 :询问某个节点 x 到根的路径中所有点的点权和。mdzz,居然没有1A,把点权和边权的弄混了...点权的最后更新的时候是可以num[x]=num[y]的

2017-02-26 21:58:57 324

原创 bzoj 1624 floyd

题意:n个点,任意两个点之间有一个危险指数,给定一个顺序ai,要求从点1到点n的路径中按照顺序经过点ai(不一定相邻),求最少的危险指数和floyd裸题floyd求出任意两点间的最短路,然后按照1->a1->a2->...->am->n的顺序求一下两点间最短路累加即可var n,m :longint; ans

2017-02-26 20:01:50 395

原创 bzoj 3245 spfa

题意:n个点,编号为0~n-1,m条有向边,限速不为0的边按照限速前进,限速为0的边按进入这条道路时的速度前进(即到该条边起点的速度),给定终点,初始起点为点0,初始速度为70,问从点0到终点最快时间的路径可以理解成拆点的spfadis[i,j]表示到达第i个点的速度为j,spfa更新时讨论该边的速度是否为0分别按两种方法更新,每次更新dis[i,j]时,记录转移来的点和转移来的速度(

2017-02-26 19:30:04 388

原创 bzoj 2662 && bzoj 2763 分层图spfa

题意:n个点,m条有向边,最多使k条边的边权变为原来的一半,每条边能且只能缩短一次,问从点1到点n的最短距离分层图就是有多维状态的有边长图,然后比起正常的最短路转移就是多了一种跨维度转移的状态转移。var n,m,k,ans,l,x,y,z:longint; i :longint; pre,other,len

2017-02-26 17:08:13 415

原创 bzoj 1143 && bzoj 2718 最长反链

题意:n个点,m条有向边,求最长反链又到了涨姿势的时候了...(果然蒟蒻)DAG中,有如下的一些定义和性质:链:一条链是一些点的集合,链上任意两个点x, y,满足要么 x 能到达 y ,要么 y 能到达 x 。反链:一条反链是一些点的集合,链上任意两个点x, y,满足 x 不能到达 y,且 y 也不能到达 x。一个定理:最长反链长度 = 最小链覆盖(用最少的链覆盖所有顶点)

2017-02-25 20:27:09 975

原创 bzoj 1641 floyd

题意:n个点,m条单向边,t组询问,询问点x到点y的路径上最大边权最小是多少数据范围暴露一切系列虽然看上去很像二分,但是n的数据范围才nvar n,m,t,x,y,z :longint; map :array[0..310,0..310] of longint; i,j,k :longi

2017-02-25 16:32:27 306

原创 bzoj 2788 / 洛谷3530 差分约束系统+floyd+tarjan

题意:n个正整数变量xi,有两种限制,第一种为xa+1=xb或xc很显然的差分约束系统,建边转化为最长路无解的情况当然就是出现正权环,可以用floyd判(跑floyd的时候不判断i、j、k互异,最后看map[i,i]如果不等于0就是出现了正权环)注意图的特殊性:第一类限制是双向边,第二类限制是单向边考虑求强连通分量显然强连通分量之间的边一定是第二类的单向边 A只要我们保证强

2017-02-25 14:50:06 401

原创 bzoj 1064 图论+dfs

题意:n个人带着m类面具,其中第i类面具能看到第i % m +1类的面具,给定一些a能看见b的关系,问m的最大最小值,要求m满足m>=3图论好题,作为一名蒟蒻我觉得考场上我就输出-1 -1 就可以了...(洛谷能得一个点)推荐一个十分好的带图的题解:http://blog.csdn.net/qpswwww/article/details/44044229这里简述一下分类讨论:(一)

2017-02-25 11:40:14 1019

原创 bzoj 2348 二分

题意:n个数,有多少个数对满足:a[i]无脑暴力O(n^2)还有50分也是醉了先从小到大排序解决第一个限制条件,然后对于排序后的第i个数,在[i,n]的位置中找到最大的满足条件的a[j],如果有多个相等的a[j]找到它最后一个位置,这个就用二分查找...然后ans+=pos-i对于0.9的处理两边都乘10就行了 (mdzz我还在纠结上取整和下取整),果然是蒟蒻var

2017-02-24 12:08:17 381

原创 bzoj 2016 二分答案

Description贝西从大牛那里收到了N块巧克力。她不想把它们马上吃完,而是打算制定一个计划,使得在接下来的D天里,她能够尽量地快乐。贝西的快乐指数可以用一个整数来衡量,一开始的时候是0,当她每天晚上睡觉的时候,快乐指数会减半(奇数时向下取整)。贝西把她的巧克力按照收到的时间排序,并坚持按照这个顺序来吃巧克力。当她吃掉第i块巧克力的时候,她的快乐指数会增加Hj。每天可以吃任意多块巧

2017-02-24 11:06:50 591

原创 bzoj 1614 二分+最短路

题意:找一条将1号和N号电话线杆连起来的路径,其余的电话线杆并不一定要连入电话网络。 电信公司最终同意免费为FJ连结K对由FJ指定的电话线杆。对于此外的那些电话线,要求最大边最小明显的二分答案,因为只要求1号和n号连起来,其他点不要求,所以跑最短路即可对于二分出mid,我们check时,找到1号到n号的最短路中,边权大于mid的边是否小于等于K,如果满足则为true否则为false所以

2017-02-24 07:12:46 445

原创 bzoj 1529 并查集

题意:n个存钱罐,每个的钥匙都在一个存钱罐里,想要把所有存钱罐中的钱都拿出,问最少砸几个存钱罐一眼看过去就是找tarjan缩点后重建的图中有几个入度为0的强连通块...mdzz爆栈了然后才发现,其实就是找连通块的个数,mdzz并查集不就行了(思想类似团伙)var n,ans,x,y :longint; i :lon

2017-02-23 10:24:29 824

原创 bzoj 3038 树状数组+并查集

同bzoj 3211鬼知道为什么数列中的数不大于1e12,但是要用int64来存开根号的数 var n,m,op,l,r,c :longint; f :array[0..100010] of longint; a :array[0..100010] of int64;

2017-02-22 23:32:23 322

原创 bzoj 1370 团伙 并查集

题意:n个人,朋友的朋友是我的朋友,敌人的敌人是我的朋友,互为朋友的组成一个团伙,问团伙的数量并查集入门题把一个人拆成两个,x表示朋友集合,n+x表示敌人集合朋友的朋友是我的朋友:直接合并x和y敌人的敌人是我的朋友:合并x和n+y ,合并 y 和n+1var n,m,x,y,ans :longint; vis :a

2017-02-22 21:36:43 344

原创 bzoj 3924 模拟+kmp

题意:给定两个字符串A、B,从前往后枚举A的每一个字符往另个串U里添加,若U的后缀的B则删除该后缀然后继续,保证最终答案不为空先对串B跑一遍kmp,然后对A串按照题意模拟,用kmp加速这个过程(注意对串A的每一个位置存一下最后匹配到的位置,因为会删除一个后缀所以匹配的指针不能不管)var s1,s2,ss :ansistring; i

2017-02-22 19:23:28 350

原创 bzoj 3670 kmp

题意:定义num[i]表示:对字符串S的前i个字符组成的子串,既是它的前缀又是它的后缀且该前缀与后缀不重叠,满足条件的字符串的数量记做num[i],ans等于(num[i]+1)的累乘,对1000000007 取模一看就是kmp..再一看数据范围必须O(n)...所以一开始naive的对每个i都递归一下i=next[i]是妥妥的TLE的 QAQ令 num[i]表示既是i前缀又是i后缀的

2017-02-22 11:10:53 438

原创 bzoj 2957 线段树

题意:n座楼,初始高度为0.每天修改一栋楼的高度(可增高可降低),问每天修改后在(0,0)能看到多少房屋,当且仅当一栋楼上存在一个高度与(0,0)的连线与之前的楼房不相交时,该楼可见易知,楼i可见的条件为 :任意 j,所以可见的楼的高度是严格单调递增的(注意并不是LCS)如果修改一个楼的话,会对所有的楼的答案情况都造成影响,所以它具有合并子问题的性质,那么我们就可以用线段树维护对于

2017-02-22 08:07:46 443

原创 bzoj 2843 LCT模板

题意:初始n个冰岛独立,三种操作:(1)判断A、B是否联通,当A、B不联通时输出yes并连接A、B,否则输出no(2)把点A的点权改为x(3)判断A、B是否联通,当A、B联通时输出从A到B的路径点权和否则输出impossible没有cut的LCT基础题...var n,m,x,y :longint; ch

2017-02-21 07:38:43 361

原创 bzoj 4292 枚举

题意:对于一个正整数n,定义f(n)为n在十进制下每一位的平方和,求在n属于[a,b]中满足k*f(n)=n的个数 (a、b、k我们很容易发现,k、a、b数据范围大的变态,但是f(n)的范围是 [1,9*9*18],而 a、b、k均为已知所以我们可以通过枚举f(n)然后check即可 const maxn=1458;var a,b,k,t,ans

2017-02-20 14:56:05 300

原创 poj 2185 kmp

题意:给你一个二维的字符矩阵,找到一个最小的子矩阵使得多次复制以后可以得到原矩阵(不要求整除)一开始我naive的觉得最小子矩阵的宽x就是每一行的最小循环节取个最大值,然后再把每行前x个字符组成的字符串看做一个整体,跑kmp出最小的矩阵长y然后随便来一个串就会知道,如果前l位是最小循环节,但是前(l+x)位不一定是一个循环节,所以每行最小循环节取最大值是naive的错误后来感觉取最大不

2017-02-20 12:01:41 254

原创 bzoj 1115 阶梯博弈

题意:n堆石子,每次可以从任意堆中拿走任意个,初始和每次操作后都要保证a1阶梯博弈...又到了涨姿势的时候了阶梯博弈:博弈在一列阶梯上进行,每个阶梯上放着自然数个点,两个人进行阶梯博弈,每一步则是将一个集体上的若干个点(i >=1 )移到前面去,最后没有点可以移动的人输我们可以只考虑在奇数堆上的操作,这样整个游戏就可以转化成NIM的模型玩家将奇数堆中的石子推到偶

2017-02-18 21:30:38 423

原创 bzoj 2132 经典二分图的最小割

题意:给定一个n*m的矩阵,每个位置可以作为商业区或者工业区且各有一个收益,如果相邻两块是不同的也会有一个收益,求最大收益一般这种方格的往二分图...网络流...想一想好吧,这题是最小割但是一般的建图是不行的,因为普通的建图是相邻的两块不同会对答案造成损失,但这题相邻两块不同也会有一个收益(对答案的贡献是积极的),所以如果按照普通建图的想法的话就应该连成负数的,但显然网络流是处理不了负

2017-02-18 19:26:17 515

原创 bzoj 2789 逆序对

题意:给出两个字符串A、B,只包含大写字母。每次交换A中相邻的两个字符,最少经过多少次变换可以变成字符串B,保证有解两眼就可做的水题,水水更健康~第一眼,答案妥妥的逆序对第二眼,因为只包含大写字母所以一些位置上的字母是一样的,但是没有关系,因为同样的字符一定是按照顺序一一对应的,处理一下就可以了然后归并排序或树状数组求逆序对

2017-02-18 07:04:00 455

原创 bzoj 1263 高精度b

题意:把正整数n化分成若干个正整数的和,并使这些正整数的乘积最大,求最大乘积(注意输出要求)《奥精》上的题目...结论:如果n是3的倍数 那么将n划分成 n/3 个3是最优的如果n是3的倍数+1 那么将n划分成 (n-4)/3 个3和2个2(1个4)是最优的如果n是3的倍数+2 那么将n划分成 (n-2)/3 个3和1个2是最优的po神给了证明 or

2017-02-17 21:14:33 364

原创 bzoj 1355 kmp

题意:给一个字符串,求最小循环节(可以不整除)裸kmp,next数组的性质 i % ( i - next[i] ) == 0 && next[i] != 0 , 则说明字符串循环,而且循环节长度为:   i - next[i]循环次数为:       i / ( i - next[i] )因为不要求整除所以ans=n-next[n]var n

2017-02-17 20:12:40 622

原创 bzoj 1305 二分+最大流

题意:n个男孩和n个女孩跳舞,每次跳舞恰好配成n对,每个男孩只会和一个女孩跳一支舞,有些男孩女孩相互喜欢有些则相互不喜欢,每个男孩只愿意最多和m个不喜欢的女孩跳舞,女孩也一样。给出相关信息,求最多能跳几支舞据说学长的贪心被hack掉了...因为每个人有喜欢和不喜欢两种,所以把每个人拆成两个点,一个代表喜欢,一个代表不喜欢。如果男孩i和女孩j互相喜欢,则连接(i,j,1);如果不互相喜欢

2017-02-17 19:26:21 375

原创 空中飞猴 题解 暴力

题目描述马戏团里新来了一只很特别的小猴子,不仅长得漂亮,还很聪明。自从它来到马戏团之后,“空中飞猴”成了马戏团里的保留节目,慕名观看的人络绎不绝。“空中飞猴”表演开始时,空中架着两根长长的钢丝。峰峰在其中一根上,它的目标是到达另一个根钢丝上,必须在爬行一定距离后纵身一跃,直接跳到另一根钢丝的某个位置。由于它的速度非常快,它的运动轨迹可以近似的看成一条直线段。为了不让自己太危险,希望自己的跳

2017-02-17 09:28:06 655

原创 tyvj 4752 数学逻辑题

题意:一个猜数游戏,规则如下:1、主持人在[a.b]中随机想一个数x,并告诉选手a和b2、选手猜的数为y,如果y=x则猜中                                    如果y                                     如果y>x则主持人不再说话,只用摇头和点头表示选手是否猜对求在最坏情况下至少猜几次能猜对首先我们发现,

2017-02-17 07:16:37 325

原创 bzoj 2836 树链剖分

题意:对一棵n个节点且每个节点初始值都为0的树,进行两个操作:1、Add x y z 表示x到y的路径上的点的点权都+z2、Query x 表示询问以x为根的子树的点权和树链剖分裸题,mdzz,8A....对于修改x到y的路径上的点的点权,注意x到y并不是一段连续的区间,需要跳到同一条链上才能用线段树进行区间修改对于查询,由于以x为根的子树在线段树中是一段连续的区间[num[x

2017-02-16 07:32:50 423

原创 bzoj 1036 树链剖分模板

题意:一棵n个节点的树,每个点都有一个权值w,三种操作:1、CHANGE x y 把x节点的权值改为y2、QMAX x y 询问x到y路径上节点的最大权值3、QSUM x y 询问x到y路径的节点和,包括x和y本身树链剖分裸模板..简单介绍下树链剖分一般用来维护两个点之间路径上各点(边)权值的最大、最小,权值和并且支持在线更改任意节点(边)的权值(把链剖出来挂在线段

2017-02-15 18:20:00 384

原创 uva 1664 并查集+贪心

题意:一棵n个节点的树,找到一个点到其他节点容量和最大,两点之间的容量为路径上的最小边经过简单的画图,发现可以用并查集..把答案节点维护成并查集的根节点解决两点的容量问题,因为是最小边,我们排序后从大到小枚举,这样我们所处理的边一定是端点a、b之间最短路,可以直接贡献答案对于a、b所在集合的根节点ta、tbsum[ta]=sum[ta]+len*size[tb]sum[tb]=

2017-02-15 09:58:39 371

原创 bzoj 2431 简单dp/递推

题意:对于一个1~n的全排列,逆序对数为k的排列有几个对于一个已经排好的1~i-1的排列,我们插入数i,可以贡献[0,i-1]个逆序对所以第1~i的逆序对为m的排列可以由1~i-1的逆序对为[m-i+1,m]的排列插入数i形成令f[i,j]表示1~i的全排列中逆序对数为j的排列总数得出关系(方程):f[i,j]=sigma(f[i-1,j-k]) (0时间复杂度为O(n^3)

2017-02-15 08:03:02 363

原创 bzoj 1706 倍增floyd

题意:给定一张无向图,求从s到e恰好经过n条边的最短路倍增floydFloyd是通过插入点的方法来找到最短路的,很适合此题,跑n遍floyd的就可以了显然这样做是T的我们将n进行二进制拆分,类似于快速幂的思想map[p][i][j]表示刚好经过2^p条边从j到k的最短距离,易知 map[p][i][j]=min{map[p-1][i][j]+map[p-1][i][j]}。

2017-02-14 18:23:07 798

原创 bzoj 2743 树状数组+离线处理

题意:n朵花,c种颜色,排成一排。共有m组询问,每个询问给出一个区间[l,r],输出[l,r]中满足个数大于等于2的颜色数蛮经典的思想...首先,我们用膝盖想出了可能用来维护区间的数据结构:树状数组、线段树我们很容易想到一道智障题:输出[l,r]的花朵数,很显然,答案就是(r-l+1),也就是把每朵花赋值为1,维护一个傻乎乎的前缀和当然,我们需要借鉴这种智障的思想回归正题我

2017-02-14 10:41:18 359

原创 bzoj 2002 link cut tree(LCT)

题意:n个位置,第i个位置有一个弹力系数为ki的装置,编号从0~n-1,会被弹到i+ki的位置。如果i+ki处无装置,则弹飞否则继续。两个操作:1、1 x 输出从第x处开始弹几次被弹飞2、2 x y x处装置的弹力系数改为yLCT基础题注意编号是0~n-1,这里我们都加1处理,使得范围为1~n我们很容易发现一个性质:有无数个点可以到达同一个点,但一个点只能到达一个固定的点

2017-02-13 21:30:26 281

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除