上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 25 下一页

bzoj 1854 构图 并查集

摘要: 我们可以把一件装备看成一条边,两个属性看成两个点,那么这就相当于读入了一张图当读入每一个x,y时,我们找到两个点的祖先节点,fx,fy,我们保证祖先节点在该连通块中编号(装备属性)最大,用flag数组记录能否过第I关,那么两种情况fx=fy 这种情况就是加入这条边之后,图中成了一个环(可能这个环之前就存在),那么对于 一个环,假设是1-x节点的环,我们肯定可以全选择(题目中的选择),之前假设是一颗树 的话,X个节点,我们可以选择x-1个,也就是只有一个点选不了,我们肯定让最大的 点没法选,所以除了祖先以外应该全都是true,那么加上这条边之后,祖先也可以选了,所以 将祖先也就是fla... 阅读全文
posted @ 2013-12-14 11:35 BLADEVIL 阅读(817) 评论(0) 推荐(1) 编辑

bzoj 1432 数学(找规律)

摘要: 我们可以发现所有的情况(除n=1时),都可以找到两个交叉的直线,就是第一层的那两个线段所在的直线如图中左那么我们以这个为准,两边对称着加直线,会得到右图,每一层是折线,且每加一对儿就多两条线段,一共要加k对儿,所以答案是2*k,由于图是对称的,就是这张图从上往下看和从下网上看是对称的,所以上面第k个是下面第n-k+1个,所以比较下这两个大小,k取min然后输出2*k就行了/**************************************************************Problem: 1432User: BLADEVILLanguage: PascalResult: 阅读全文
posted @ 2013-12-13 20:05 BLADEVIL 阅读(587) 评论(0) 推荐(0) 编辑

bzoj 2324 ZJOI 营救皮卡丘 费用流

摘要: 题的大概意思就是给定一个无向图,边有权值,现在你有k个人在0点,要求走到n点,且满足1:人们可以分头行动,可以停在某一点不走了2:当你走到x时,前x-1个点必须全部走过(不同的人走过也行,即分两路走,其中一路走过1-x-1点,另一路可以走x点)3:道路可以多次走,点在满足2的情况下可以多次经过求所有人走过的总路程最短这道题历尽挫折。。。首先我们知道想要走到x点,一定是从前x-1个点走过来,假设我们从y走过来,yb then min:=b else min:=a;end; procedure connect(a,b,c,d:longint);begin inc(l); pre... 阅读全文
posted @ 2013-12-13 17:55 BLADEVIL 阅读(733) 评论(0) 推荐(0) 编辑

bzoj 1297 矩阵乘法变形

摘要: 首先对于矩阵乘法的功能有很多,记得有篇论文叫矩阵乘法在信息学竞赛中的应用,里面详细介绍了矩阵的作用其中一个就是求图的固定时间方案数,也就是给定一张图,每两个点之间由一条边长为1的边相连,求任意两点之间的路径和为x的方案数论文很详细,这里只做简要的说明对于矩阵乘法,具体代码为for i:=1 to n do for j:=1 to n do for k:=1 to n do a[i,j]:=a[i,j]+b[i,k]*c[k,j];那么如果b矩阵,b[i,j]代表I到J,路径长为x的方案数,c[i,j]代表I到J,路径长为Y的方案数,那么k相当于中转点c[i,j]... 阅读全文
posted @ 2013-12-12 23:37 BLADEVIL 阅读(448) 评论(0) 推荐(0) 编辑

bzoj 1007 凸壳

摘要: 首先明确一个概念左面内个叫上凸壳,右面那个叫下凸壳然后我们只需要维护一个上图壳就行了,先按着斜率排序,每次加进来一条边,判断tot边和这个边与tot-1边的交点横坐标,如果这条边的横坐标小就一直弹栈就好了/**************************************************************Problem: 1007User: BLADEVILLanguage: PascalResult: AcceptedTime:360 msMemory:3352 kb*************************************************** 阅读全文
posted @ 2013-12-12 11:27 BLADEVIL 阅读(711) 评论(0) 推荐(0) 编辑

bzoj 1221 软件开发 费用流

摘要: 应该比较好看出来是费用流,那么就考虑怎么构图首先我们把一天拆成两个点,XI,YI,分别代表这一天买了多少和洗多少,再加入源和汇S,T1.每一天我们可以买新的毛巾,所以连接一条从S到XI的边,流量为正无穷(因为可以买好多),费用为f2.然后我们对于买来的毛巾可以洗,每天都产生need[i]的毛巾可以洗,那么连一条从S到YI的边,流量为need[i],费用为0(因为只决定要洗,没有确定洗的方案,所以先不算费用)3.每一条要用a方法洗的毛巾,我们连一条从YI到X(I+a+1)的边,流量为正无穷(下文解释),费用为fa的4.每一条要用b方法洗的毛巾,我们连一条从YI到X(I+b+1)的边,流量为正无穷 阅读全文
posted @ 2013-12-12 09:23 BLADEVIL 阅读(534) 评论(0) 推荐(0) 编辑

bzoj 1433 二分图匹配

摘要: 裸地匈牙利或者最大流,直接匹配就行了需要注意的是(我就没注意细节WA了好多次。。。)每个人和自己之间的边是0,但是应该是1不是在校生是没有床的。。。。/**************************************************************Problem: 1433User: BLADEVILLanguage: PascalResult: AcceptedTime:84 msMemory:268 kb****************************************************************///By BLADEVILva 阅读全文
posted @ 2013-12-12 00:09 BLADEVIL 阅读(406) 评论(0) 推荐(0) 编辑

bzoj 2190 线性生成欧拉函数表

摘要: 首先我们知道,正方形内个是对称的,关于y=x对称,所以只需要算出来一半的人数然后乘2+1就行了,+1是(1,1)这个点开始我先想的递推那么我们对于一半的三角形,一列一列的看,假设已经求好了第I-1列的,那么第I列加上之后,不会影响前I-1列能看见的人,那么第I列一共加上I个人,设坐标是(I,Y),我们可以发现如果gcd(I,Y)1的时候这个点是看不见的,因为横纵坐标存在约数,也就是前面有一个整点点和这个点还有原点在同一直线上(三角形相似),那么我们要找第I列I,Y互质的点,也就是和I互质的点的个数,也就是phi(i),那么就不用递推了,我们每个I都要累加phi,也就是生成1-n-1的欧拉函数表 阅读全文
posted @ 2013-12-11 23:22 BLADEVIL 阅读(381) 评论(0) 推荐(0) 编辑

bzoj 1500 修改区间 splay

摘要: 内个我也不知道哪儿不对,TLE了,说说思路吧其实思路也没什么说的,就是裸的splay,对于最后一个操作我们记下每个区间的最长前缀,最长后缀,那么最长子序列就是前缀,后缀,左子树的后缀+右子树的前缀+自己的值,里取max就行了更新的时候前缀由左子树的前缀,左子树sum+右子树前缀转移靠!!!!!!到底哪儿错了!!!!!TLE 你妹啊!!!!!/************************************************************** Problem: 1500 User: BLADEVIL Language: Pascal Result:... 阅读全文
posted @ 2013-12-11 21:38 BLADEVIL 阅读(355) 评论(0) 推荐(0) 编辑

bzoj 1045糖果传递 数学贪心

摘要: 首先我们假设平均数为ave那么对于第1个人,我们假设他给第N个人K个糖果,第2个人给1,第3个人给2,第n个人给第n-1个人那么对于第1个人给完n,第2个人给完1,第一个人不会再改变糖果数了,所以应该是ave那么第一个人原来是a1,给n之后是a1-k,代价是k,第2个人给1,使1的糖果数是ave,所以应该给ave-a1+k个,代价是abs(ave+k-a1)=abs(a1-k-ave),那么第2个人变成了a2+a1-k-ave个第3个人需要给2个人ave-a2-a1+k+ave=2*ave-a1-a2+k个,那么代价是abs(2*ave-a1-a2+k)=abs(a1+a2-k-2*ave), 阅读全文
posted @ 2013-12-11 10:06 BLADEVIL 阅读(576) 评论(0) 推荐(1) 编辑
上一页 1 ··· 15 16 17 18 19 20 21 22 23 ··· 25 下一页