01 2014 档案

bzoj 1301 后缀数组
摘要:比较裸的后缀数组。/************************************************************** Problem: 1031 User: BLADEVIL Language: Pascal Result: Accepted Time:808 ms Memory:5304 kb****************************************************************/ //By BLADEVILvar s, str :array[0... 阅读全文

posted @ 2014-01-23 17:10 BLADEVIL 阅读(391) 评论(0) 推荐(0)

bzoj 1067 特判
摘要:这道题的大题思路就是模拟 假设给定的年份是x,y,首先分为4个大的情况,分别是 x的信息已知,y的信息已知 x的信息已知,y的信息未知 x的信息未知,y的情况已知 x的信息未知,y的情况未知 然后对于每一种情况可以根据x到y区间是否存在空位,最大值是否唯一,以及x,y,区间最大值的关系来判定。 所以对于区间的问题的合并与处理我们用线段树来存就行了。 反思:开始对情况的优先级判断不清,没有整理好思路就开始写。最后发现线段树的合并函数写错了。/************************************************************** Pr... 阅读全文

posted @ 2014-01-22 19:27 BLADEVIL 阅读(228) 评论(0) 推荐(0)

bzoj 2819 博弈论
摘要:我们可以把n为偶数的时候,n*n的棋盘看成若干个不相交的2*1的格子,那么对于每个2*1的格子,如果先手选了其中的一个,另一个人都可以选另一个,所以最后使先手没有可以选的格子,先手必败(这里的先手并不是原题中的先手,原题我们可以看做bob为先手,且已经选了左上的格子),否则n为奇数的时候,先手必胜。 /************************************************************** Problem: 2463 User: BLADEVIL Language: Pascal Result: Accepted Time... 阅读全文

posted @ 2014-01-20 19:27 BLADEVIL 阅读(253) 评论(0) 推荐(0)

bzoj 1022 SJ定理
摘要:与传统的SG游戏不同的是,完成最后一个状态的人是输的,我们把这一类问题称作Anti-SG,这类问题的解决我们需要引入一个定理—SJ定理: 对于任意一个Anti-SG游戏,如果我们规定当局面中所有的单一游戏的SG值为0时,游戏结束,则先手必胜当且仅当:(1)游戏的SG函数不为0且游戏中某个单一游戏的SG函数大于1;(2)游戏的SG函数为0且游戏中没有单一游戏的SG函数大于1。 (引自2009年国家集训队论文贾志豪论文《组合游戏概述——浅谈SG游戏的若干拓展及变形》) 这样对于这个问题我们就可以很好的解决了: 1、所有堆的石子数都为1且游戏的SG值为0; 2、有些堆的石子数大于1且游戏... 阅读全文

posted @ 2014-01-20 17:38 BLADEVIL 阅读(557) 评论(0) 推荐(0)

bzoj 2151 贪心
摘要:几乎完全类似于1150的思路,直接参考那个就行了。 http://www.cnblogs.com/BLADEVIL/p/3527193.html/************************************************************** Problem: 2151 User: BLADEVIL Language: Pascal Result: Accepted Time:3224 ms Memory:15092 kb****************************************************... 阅读全文

posted @ 2014-01-20 17:24 BLADEVIL 阅读(280) 评论(0) 推荐(0)

bzoj 1060 贪心
摘要:设根到每个叶子节点的距离为dis,比较容易的看出来,我们需要把这颗树的所有叶子节点的值都变成其中最大的内个,我们设为max,那么对于一颗子树来说,设其中dis值最大的为x,我们需要将这个子树根节点和子树根节点的父亲节点的边的值增加max-x,这时从贪心的角度来考虑,因为不论如何,对于当前最大的这个点来说,我们都需要将他的值增加max-x,那么我们只需要让这增加的更有价值,也就是使更多需要增加的点都被增加些,那么因为不能加多,所以取得是最大的点的dis值。那么dfs一遍就行了。 反思:过程中申请变量没有赋初值。 ps:这道题的数据有问题,生成输出数据的标程没有开longlong,开的是i... 阅读全文

posted @ 2014-01-20 17:22 BLADEVIL 阅读(321) 评论(0) 推荐(0)

bzoj 1076 状压DP
摘要:我们设w[i][s]为当前到第i关,手中的物品为s的时候,期望得分为多少,其中s为二进制表示每种物品是否存在。 那么就比较容易转移了w[i][s]=(w[i-1][s']+v[j])*(1/k),其中j为枚举当前关可能出现的物品,s‘为s的子集且s’与s只可能相差第j位的物品,且s'包括j物品的所有前提物品,因为每个物品都是随机出现的,所以乘上出现的概率(1/k),因为我们采取的是最优策略,所以对于每个物品的出现我们还需要和w[i-1][s]取一个max,代表这个物品即使我们能取,也可能不取。 /***************************************** 阅读全文

posted @ 2014-01-20 17:10 BLADEVIL 阅读(561) 评论(0) 推荐(0)

bzoj 1150 贪心
摘要:首先选取的线段一定是相邻两个端点线段,那么我们贪心的考虑这个问题,我们先在这n-1条线段中选出最短的一条,然后将这条线段的值改为左面的线段的值+右面的线段的值-自己的值,用这条线段取代原来这三条线段,继续做,那么这个取m次出来之后的就是答案,对于证明,我们可以大概的去想,选了新的线段代表不选这条原本的线段,然后选另两条相邻的线段,这样选的线段的条数只是+1,相当于又取了一条线段,正确性的证明可以大概感知。 至于选最小的用堆来维护就行了,因为需要删除精确到点编号,对堆用的不熟悉,所以用sbt代替。/********************************************... 阅读全文

posted @ 2014-01-20 16:47 BLADEVIL 阅读(677) 评论(0) 推荐(0)

bzoj 1412 最小割 网络流
摘要:比较明显的最小割建模,因为我们需要把狼和羊分开。 那么我们连接source和每个羊,流量为inf,代表这条边不能成为最小割中的点,同理连接每个狼和汇,流量为inf,正确性同上,那么对于每个相邻的羊和狼,连接边,流量为1,代表隔开这两个点需要1的代价,对于每个空地和狼或者羊,连接边,流量为1,代表隔开这个两个点的代价为1,同时需要注意的是,对于空地之间的连边也应该是1,因为很有可能狼和羊通过空地相遇。这样做最大流就行了。 反思:手残将空地之间的连成inf了。。。/************************************************************** ... 阅读全文

posted @ 2014-01-17 12:49 BLADEVIL 阅读(422) 评论(0) 推荐(0)

bzoj 3212 线段树
摘要:裸的线段树/************************************************************** Problem: 3212 User: BLADEVIL Language: Pascal Result: Accepted Time:100 ms Memory:19756 kb****************************************************************/ //By BLADEVILtype rec =record ... 阅读全文

posted @ 2014-01-15 19:16 BLADEVIL 阅读(359) 评论(0) 推荐(0)

bzoj 1942 斜率优化DP
摘要:首先我们贪心的考虑,对于某一天来说,我们只有3中策略,第一种为不做任何行动,这时的答案与前一天相同,第二种为将自己的钱全部换成a,b货币,因为如果换a,b货币,代表在之后的某一天卖出去后会赚钱,那么当时手中的a,b货币越多,盈利越多,所以全买。第三种策略为将自己的货币全部卖出,贪心正确性和第二种类似。 那么我们设w[i]为到第i天,手中最多有多少钱,那么就可以比较容易的列出转移方程w[i]=max(w[i-1],第j天将所有的货币卖出,第i天卖掉的钱),这样的时间复杂度为n^2,显然不能通过全部测试数据,那么我们考虑优化。 w[i-1]比较容易考虑,那么我们现在要求的就是对于固定的i,... 阅读全文

posted @ 2014-01-14 17:16 BLADEVIL 阅读(323) 评论(0) 推荐(0)

bzoj 1876 高精
摘要:首先我们知道,对于两个数a,b,他们的gcd情况有如下形式的讨论 当a为奇数,b为偶数的时候gcd(a,b)=gcd(a div 2,b) 当b为奇数,a为偶数的时候gcd(a,b)=gcd(a,b div 2) 当a为偶数,b为偶数的时候gcd(a,b)=2*gcd(a div 2,b div 2) 当a为奇数,b为奇数的时候,根据欧几里德定律,有gcd(a,b)=gcd(a-b,b)(a>b)时 那么这道题就变成了不断地缩小a,b的范围了。直接高精就行了。当然数据为1,10^1000的时候会tle,题目比较良心没有这样的数据。高精写渣了。/******************... 阅读全文

posted @ 2014-01-13 15:54 BLADEVIL 阅读(375) 评论(0) 推荐(0)

bzoj 1880 最短路
摘要:我们首先知道,答案肯定是最短路图中的某段公共链,那么设(x,y)为x到y的最短路,那么答案为((s1,t1)+(s2,t2)-min((s1,s2)+(t1,t2),(s1,t2),(s2,t1))) div 2,这两种情况分别可以画成下面的图 这样就可以十分明显的看出了。因为中间的一段算了两遍,所以要div 2。/************************************************************** Problem: 1880 User: BLADEVIL Language: Pascal Result: Accepted ... 阅读全文

posted @ 2014-01-13 09:17 BLADEVIL 阅读(281) 评论(0) 推荐(0)

斜率优化DP讲解
摘要:对于斜率优化的DP转移方程,一般以w[i]=max(w[j]+(sum[i]-sum[j])*v)的1D1D形式为主,直观看来就是前j个为若干个阶段,第j+1到第i个为一个阶段,每个阶段有自己的代价或价值。 我们从一道题来入手,bzoj 1911 http://61.187.179.132/JudgeOnline/problem.php?id=1911这是一道典型的斜率优化题,作为练手的入门题再适合不过。 这道题的大概意思为将1-n个数划分为若干区间,每个区间有一个价值=a*Σ(a[i])^2+b*Σ(a[i])+c,最后使代价和最大。 设前缀和为sum,那么很容易写出转移方程w[i... 阅读全文

posted @ 2014-01-12 22:00 BLADEVIL 阅读(972) 评论(0) 推荐(1)

bzoj 1996 DP
摘要:我们可以发现,对于最后队列的一段区间[i,j],不论这一段区间如何插入,除了最后一个插入的对象外,剩下的对后续插入没有影响,这启发我们可以用DP来解决这一问题。 w[i][j][0..1]代表区间[i,j],最后一个插入的元素是i(0)或者j(1)的方案数,那么就可以根据判断当前插入元素与上一元素的大小关系很容易的转移了。 /************************************************************** Problem: 1996 User: BLADEVIL Language: Pascal Result: Acc... 阅读全文

posted @ 2014-01-11 21:16 BLADEVIL 阅读(254) 评论(0) 推荐(0)

bzoj 1083 最小生成树
摘要:裸的最小生成树。/************************************************************** Problem: 1083 User: BLADEVIL Language: Pascal Result: Accepted Time:44 ms Memory:344 kb****************************************************************/ //By BLADEVILvar n, m :longint; ... 阅读全文

posted @ 2014-01-11 19:32 BLADEVIL 阅读(182) 评论(0) 推荐(0)

bzoj 2039 最小割模型
摘要:比较明显的网络流最小割模型,对于这种模型我们需要先求获利的和,然后减去代价即可。 我们对于第i个人来说,如果选他,会耗费A[I]的代价,那么(source,i,a[i])代表选他之后的代价,如果不选他,我们会产生Σw[i][j] 1b then min:=b else min:=a;end;procedure connect(x,y,z:longint);begininc(l);pre[l]:=last[x];last[x]:=l;other[l]:=y;len[l]:=z;end;procedure init;vari, j :longint;x :longint;sum :longi... 阅读全文

posted @ 2014-01-11 09:03 BLADEVIL 阅读(390) 评论(0) 推荐(0)

bzoj 2749 杂题
摘要:我们可以发现,phi(x)与x相比,相当于x的每个质因子-1后再分解质因数,添加到现有的质因子中,比如质因子13相当于将13变成12,然后分解成2*2*3,再将2的质数+2,3的指数+1,除了质因子2之外的所有质因子都满足这一性质,每次有一个质因子2相当于变成1,也就是没有了。那么我们可以将问题转化成一个大数,每个质因子分解到最后会分成多少个2,比如刚才的13,变成2*2*3,然后3变成2,那么13求phi到最后就是3个2,也就是消掉一个13需要求3次phi,如果我们可以处理出每个质数最后分解成多少个2,就可以解决问题。 求分解多少个2可以线性筛的时候处理,设w[i]代表i这个数分解成多... 阅读全文

posted @ 2014-01-10 18:07 BLADEVIL 阅读(307) 评论(0) 推荐(0)

bzoj 2748 DP
摘要:比较裸的背包,w[i][j]代表到第I个操作的时候音量j能不能达到,然后转移就行了。 /************************************************************** Problem: 2748 User: BLADEVIL Language: Pascal Result: Accepted Time:12 ms Memory:284 kb****************************************************************/ //By BLADEVILvar ... 阅读全文

posted @ 2014-01-10 16:53 BLADEVIL 阅读(224) 评论(0) 推荐(0)

bzoj 3190 维护栈
摘要:我们可以将每一辆赛车看成一条直线,斜率为速度,纵截距为初始位置,那么问题就转化为求这n条直线处于最上面的直线。最上面是指在坐标系中,假设从x轴向下看,能看到的直线,只露一个点也算能看见。那么就类似水平可见直线这道题了。先按照斜率排序,然后维护直线的栈就行了。 /**************************************************************Problem: 3190User: BLADEVILLanguage: PascalResult: AcceptedTime:84 msMemory:548 kb**********************... 阅读全文

posted @ 2014-01-10 16:36 BLADEVIL 阅读(363) 评论(0) 推荐(0)

动态最小生成树讲解
摘要:动态最小生成树是一类要求给定图,对于图的边有删除,插入,修改边权操作,满足查询MST(Minimum Spanning Tree)的问题。 在这里我们考虑修改边的操作,删除可以看成是将边权设成INF,插入可以看做是将一条INF的边边权赋值。 那么假设我们有q个询问,每个询问修改一条边的权值。 对于q个询问里修改的边,我们设这个边集为Q,全集为E,那么对于E-Q中的边,做一遍MST,MST中的边集设为G,那么对于E-Q-G中的边,不论询问怎么改变,这些边都不会在MST中,所以我们可以删除这些边,这时全集E不包括刚才删除的边,全集中的边的数量变成了n+q,n为MST中必要的边,q为询问中... 阅读全文

posted @ 2014-01-09 18:28 BLADEVIL 阅读(4223) 评论(0) 推荐(2)

bzoj 1303 杂题
摘要:首先如果一个数是中位数,在这段区间中比他大的数量=比他小的数量,那么如果一个数比他大设为1,比他小设为-1,设要求的数在数组中的位置是mid,那么我们可以用num[i] 表示1-mid这一段中,j-mid的和为i的j的数量。那么我们扫mid到n,假设mid到j的和为a,那么代表这段比他大的有a个,因为要保证数量相等,所以要在num数组里-a的个数累加答案。/**************************************************************Problem: 1303User: BLADEVILLanguage: PascalResult: Accep.. 阅读全文

posted @ 2014-01-09 11:47 BLADEVIL 阅读(199) 评论(0) 推荐(0)

bzoj 1047 单调队列
摘要:首先将每一列压成一行,ans[i,j]代表[i,j]位及以上共n位的最大值,这个可以每一列用单调队列处理,然后对于每一行,类似于上述的处理,这样就可以得出以[i,j]为右下角的边长为n的矩阵的最大值。然后将所有值取相反数,再求一遍最大值,再取相反数,这样就可以得出最小值,然后扫一遍合法的点更新答案。/**************************************************************Problem: 1047User: BLADEVILLanguage: PascalResult: AcceptedTime:4192 msMemory:24184 kb* 阅读全文

posted @ 2014-01-09 10:08 BLADEVIL 阅读(333) 评论(0) 推荐(0)

bzoj 2668 费用流
摘要:我们可以把初始状态转化为目标状态这一约束转化为将黑子移动到目标状态所需要的最少步数。 除了初始点和目标点之外,剩下的点如果被经过那么就会被交换两次,所以我们将一个点拆成3个点,a,b,c,新建附加源点source汇点sink。设每个点的交换次数为num[i],那么这个点的交换次数如果是奇数其实是没用的,那么我们连接(a,b,num[i] div 2,0),(b,c,num[i] div 2,0),这样代表这个点一共可以被经过num[i] div 2次,那么对于起始点和终点来说,因为不用被经过,所以原来是奇数的话可以走num[i] div 2+1次,所以(a,b,(num[i]+1) di... 阅读全文

posted @ 2014-01-09 08:18 BLADEVIL 阅读(368) 评论(0) 推荐(0)

组合数求法讲解
摘要:首先对于c(n,m),如果n,m比较大的话,这个值会很大,为了简化变成复杂度,也是为了更好的求解,都要求求c(n,m) mod p的值,我们由最简单的问题慢慢提高难度。 要求求解c(n,m) mod p,p为质数,且n,m1 then begin inc(tot); pj[tot]:=p; c[tot]:=1; end; for i:=1 to tot do begin pi[i]:=1; for j:=1 to c[i] do pi[i]:=pi[i]*pj[i]; end;end; f... 阅读全文

posted @ 2014-01-08 18:59 BLADEVIL 阅读(620) 评论(0) 推荐(1)

mobius反演讲解
摘要:mobius反演的基本形式为,假设知道函数F(x)=Σf(d) d|x,那么我们可以推出f(x)=Σmiu(d)*F(x/d) d|x,另一基本形式为假设知道函数F(x)=Σf(d) x|d,那么我们可以推出f(x)=Σmiu(d)*F(d/x) x|d,第二种形式可以由容斥定理得出,在此不再赘述。 我们由一个例子来了解mobius反演的作用。 求解ans=Σ(050000 then break; mindiv[i*prime[j]]:=prime[j]; if i mod prime[j]=0 then begin ... 阅读全文

posted @ 2014-01-08 18:13 BLADEVIL 阅读(862) 评论(0) 推荐(1)

01分数规划讲解
摘要:分数规划是将某个求解最优性问题转化为判定性问题,一般的形式为f(x)=a(x)/b=(x),求解f(x)的最优值,其中a,b,x为连续实数函数。 我们这里讨论f的最小值,即设w=min(f(x)=a(x)/b(x)),那么w=f(xmin)=a(xmin)/b(xmin)=>a(xmin)-w*b(xmin)=0 那么我们设一个新的函数g(w),g(w)=min(a(x)-w*b(x)),首先我们可以得到这个函数的一些性质。性质: 单减性:即对于任意w1g(w2),证明比较容易,假设x1为w1的最优解,x2为w2的最优解,那么有 g(w1)=a(x1)-w1*b(x1)>a(x.. 阅读全文

posted @ 2014-01-08 17:05 BLADEVIL 阅读(938) 评论(0) 推荐(0)

动态树之LCT(link-cut tree)讲解
摘要:动态树是一类要求维护森林的连通性的题的总称,这类问题要求维护某个点到根的某些数据,支持树的切分,合并,以及对子树的某些操作。其中解决这一问题的某些简化版(不包括对子树的操作)的基础数据结构就是LCT(link-cut tree)。 LCT的大体思想类似于树链剖分中的轻重链剖分(轻重链剖分请移步http://www.cnblogs.com/BLADEVIL/p/3479713.html),轻重链剖分是处理出重链来,由于重链的定义和树链剖分是处理静态树所限,重链不会变化,变化的只是重链上的边或点的权值,由于这个性质,我们用线段树来维护树链剖分中的重链,但是LCT解决的是动态树问题(包含静态树... 阅读全文

posted @ 2014-01-08 17:01 BLADEVIL 阅读(24342) 评论(0) 推荐(9)

莫队算法讲解
摘要:莫队算法的大体思路就是暴力的转移,尽量的减少转移的时间。 假设我们求出了区间[l1,r1]的答案,那么对于区间[l1,r1+1]我们可以o(1)的转移,对于不同的询问,我们将l当做横坐标,r当做纵坐标,这样建立的一张图,求最小manhattan生成树,需要转移的时间是最少的。 但是求一颗manhattan最小生成树的时间已经比较长了,所以我们退而求其次。将n个询问分成floor(sqrt(n))个块,对于每个块我们按照r排序,然后每个块之间暴力的转移,经莫涛证明,时间复杂度是O(n^1.5)的。理论上所有的区间询问都可以用这种方法尝试。 经典的应用为bzoj 2038:http://... 阅读全文

posted @ 2014-01-08 16:11 BLADEVIL 阅读(2761) 评论(0) 推荐(1)

树链剖分之点剖分(点分治)讲解
摘要:当一个问题可以分解成小问题时,我们一般可以采用分治算法,比如最简单的快速排序,就是分治算法的一个典型的应用。 那么处理树的问题时,假设求解满足条件的点对儿个数,对于一个树来说,两个点对儿的存在只能有两种情况,就是点对之间的路径过根和不过根,那么对于不过根的情况递归做,对于一棵树只考虑过根的情况,计算就行了。 以一个基础题为例子bzoj 2152 http://61.187.179.132/JudgeOnline/problem.php?id=2152 题的大概意思就是给定一棵树,求满足两点路径和为3的倍数的点对儿数量。 现在说下具体的实现,首先3的倍数可以转化为边长和mod3为0... 阅读全文

posted @ 2014-01-08 13:15 BLADEVIL 阅读(671) 评论(0) 推荐(0)

Blog Explanation
摘要:有疑问或blog中说明错误的欢迎评论或联系QQ:30056882,邮箱BLADEVIL@outlook.com。本人水平不高,欢迎讨论问题。 blog中所有随笔均为原创,转载请注明来源。 (已退役。) 阅读全文

posted @ 2014-01-08 13:04 BLADEVIL 阅读(443) 评论(3) 推荐(1)

冬令营
摘要:今儿得到消息可以去WC了,本来一年前挺想去的,现在也不是那么想去了。。。。还是努力准备吧。。。 阅读全文

posted @ 2014-01-08 12:51 BLADEVIL 阅读(264) 评论(0) 推荐(0)

bzoj 2152 点剖分
摘要:比较裸的点剖分,访问到每个重心时,记录一个b数组,代表当前子树中长度为i的边的数量是b[i],因为是3的倍数,所以边长mod 3保存就行了,然后记录一个sum数组,代表当前子树中一个子节点为根的子树中的情况(类似b),然后用这两个数组不断的更新答案就行了。/**************************************************************Problem: 2152User: BLADEVILLanguage: PascalResult: AcceptedTime:572 msMemory:1360 kb************************* 阅读全文

posted @ 2014-01-08 08:28 BLADEVIL 阅读(383) 评论(0) 推荐(0)

bzoj 3208 暴力
摘要:对于每个操作,直接暴力做就行了,询问的话搜一遍,然后就这么水过去了。/**************************************************************Problem: 3208User: BLADEVILLanguage: PascalResult: AcceptedTime:17276 msMemory:9032 kb****************************************************************///By BLADEVILvarn, m :longint;map, w :array[0..1000, 阅读全文

posted @ 2014-01-08 06:46 BLADEVIL 阅读(238) 评论(0) 推荐(0)

bzoj 2064 DP
摘要:这道题可以抽象成两个数列,将一个数列变换为另一个数列的代价最小首先我们可以处理出所有的状态代表,对于每个状态用二进制来表示,代表的是两个数列中的每一项选还是不选那么答案最多为n1+n2-2,也就是先将第一个数列合成一个数然后再依次拆成第二个数列,那么假设第一个数列选一些,第二个数列选一些,这个子问题合法(就是第一个数列的选出的和与第二个的相等),那么我们就没有必要将这个子问题再与大问题合并,也就是答案减少了2,这样DP就行了/************************************************************** Problem: 2064 Us... 阅读全文

posted @ 2014-01-07 16:15 BLADEVIL 阅读(387) 评论(0) 推荐(0)

bzoj 2002 LCT
摘要:LCT最基础的题,就用到了一个ACCESS操作首先我们将这个绵羊弹飞的情况看成一颗树,那么假设X点被弹飞到Y点,那么Y为X的父亲节点,弹飞的话父亲节点为n+1(虚设)那么每个询问就是询问X点到根节点n+1的路径长度(节点数)每个修改操作就是将以X为根节点的子树和X的父亲断开,连接到Y上这样简单的维护森林连通性的问题,动态树中的LCT解决就行了/************************************************************** Problem: 2002 User: BLADEVIL Language: Pascal Result... 阅读全文

posted @ 2014-01-07 10:43 BLADEVIL 阅读(365) 评论(0) 推荐(0)

bzoj 2697 贪心
摘要:就贪心就行了,首先可以看成n个格子,放物品,那么一个物品假设放3个,放在1,k,n处,那么价值和放在1,n是一样的,所以一个物品只放两个就行了,价值大的应该尽量放在两边,那么排序之后模拟就行了/************************************************************** Problem: 2697 User: BLADEVIL Language: Pascal Result: Accepted Time:0 ms Memory:228 kb************************************... 阅读全文

posted @ 2014-01-07 09:48 BLADEVIL 阅读(180) 评论(0) 推荐(0)

QQ空间关闭,开放博客,也不知道有没有人来。。。
摘要:RT 阅读全文

posted @ 2014-01-05 21:43 BLADEVIL 阅读(693) 评论(4) 推荐(0)

bzoj 3142 数学
摘要:找规律后可以之后答案就是k^(m-1)*(n-(m-1)*k)+(m+(m-1)*k+1)*k^(m-1) div 2/**************************************************************Problem: 3142User: BLADEVILLanguage: PascalResult: AcceptedTime:0 msMemory:224 kb****************************************************************///By BLADEVILvarn, m :int64;k, p 阅读全文

posted @ 2014-01-01 20:52 BLADEVIL 阅读(297) 评论(0) 推荐(0)

bzoj 1800 暴力枚举
摘要:直接暴力枚举四个点,然后判断是否能组成矩形就行了注意枚举的点的标号从小到大,保证不重复枚举/**************************************************************Problem: 1800User: BLADEVILLanguage: PascalResult: AcceptedTime:0 msMemory:224 kb****************************************************************///By BLADEVILvarn :longint;sum :array[0..21] o 阅读全文

posted @ 2014-01-01 20:15 BLADEVIL 阅读(391) 评论(0) 推荐(0)

bzoj 3232 01分数规划+最大权封闭子图判定
摘要:我们的目标是使v/c最小化,所以构造函数g(x)=v-x*c,那么二分一个X,判断当时的v-x*c的值是多少,然后根据g(x)函数的单调递减性来二分,判断,直到g(x)=0的时候当前的X就是答案。然后我直接写的tle了,这是这两天tle的第3道题了。。。再改改。。。/**************************************************************Problem: 3232User: BLADEVILLanguage: PascalResult: Time_Limit_Exceed************************************ 阅读全文

posted @ 2014-01-01 10:53 BLADEVIL 阅读(364) 评论(0) 推荐(0)

bzoj 2327 构图暴力判断+独立集个数
摘要:首先我们可以处理出10^6以内的所有的勾股数,如果我们有2*i-1和2*j互质,那么A=(2*i-1)*(2*i-1)+(2*i-1)*(2*j),B=2*j*j+(2*i-1)*(2*j)为互质勾股数对,且保证所有的互质勾股数对都有这个性质,保证了了我们暴力可以枚举所有的勾股数对那么我们得到所有的勾股数对后,可以建图,得到一张类似于树的图,然后可能会有一些环,但是比较少,一棵树的独立集个数是可以DP求的,那么这样的图可以暴力规定每条非树边的两个端点取不取来每次都DP,得出所有情况,这样就行了。/************************************************* 阅读全文

posted @ 2014-01-01 08:26 BLADEVIL 阅读(442) 评论(0) 推荐(0)

bzoj 1028 暴力枚举判断
摘要:昨天梦到这道题了,所以一定要A掉(其实梦到了3道,有两道记不清了)暴力枚举等的是哪张牌,将是哪张牌,然后贪心的判断就行了。对于一个状态判断是否为胡牌,1-n扫一遍,然后对于每个牌,先mod 3,如果还有剩余,就需要和i+1,i+2凑成顺子,减掉i+1,i+2的值就行了,然后只要枚举到的i为负就是不可行,还有要枚举到n+2位,因为第n,n-1为可能减了n+1,n+2但是没扫到。/**************************************************************Problem: 1028User: BLADEVILLanguage: PascalResul 阅读全文

posted @ 2014-01-01 02:22 BLADEVIL 阅读(485) 评论(0) 推荐(0)

bzoj 1565 最大权闭合子图
摘要:因为每个植物都有保护的点(每排相邻的右面的算是保护左面的),所以连他和保护的点一条边,然后每个点有自己的权值,要找到最大的权值且满足每个点在访问时他的前驱一定被访问,那么反向建边,转化为后继必须访问,即求一个最大权闭合子图,然后转化为网络流最小割模型求解。。然后因为成环的点肯定不会被毁掉,所以直接删了,可以由拓扑排序得出,可以提高速度然后我还是tle了。。。有个480A的码,明儿看看啥意思吧。。。/**************************************************************Problem: 1565User: BLADEVILLanguage: 阅读全文

posted @ 2014-01-01 01:43 BLADEVIL 阅读(367) 评论(0) 推荐(0)