![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
solution
文章平均质量分 64
pouy94
艰苦奋斗
展开
-
【pku1830】开关问题 (高斯消元解xor方程组)
题目大意: 在一些有依赖关系的灯里(即改了这个,那个也改了),要通过改变若干灯的状态来从初始状态达到目标状态,每个灯最多改变一次,方案总数。分析: 由于每个灯只能改1次,那么最终的状态就只与跟这个灯相关的灯的改变情况有关,容易想到设立方程组来对问题求解。至于解方程组,高斯大牛已经帮咱们铺平了道路了,在此对他表示崇高的敬意。算法: 用0表示i号灯不改,1表示改,那么对于每个灯把跟它相关(包括自己)的所有灯的改变情况xor起来,就是最终的改变情况,而最终改变情况可以由初末状态得到,再原创 2010-07-20 23:51:00 · 589 阅读 · 1 评论 -
【HNOI2009 梦幻布丁】链表+启发式合并
<br />题解:<br />将同色的布丁用链表保存,并统计出一开始的答案Ans = ∑ord(a[i] <> a[i – 1]) 对于变色操作(x,y),若链x长于链y则交换x,y且以后遇到x时要替换成y,遇到y时替换成x 然后扫描链x,从Ans中减去与x有关的部分,再次扫描将其颜色改成y,再次扫描给Ans中加上与其有关的部分,最后将链表x接在链表y上即可。对于询问操作直接输出Ans即可 <br /> <br />这篇题解是mt留下来的,精炼而直切要点~~ <br /> <br />多说一点,关于这个算法原创 2010-11-07 15:27:00 · 1616 阅读 · 1 评论 -
【集训题 糖果分发、集装箱】一类特殊动态规划的优化方法
<br />先拿一道题(糖果分发)做引子(by Ly)<br />大意:给你n个物品,每个物品有个重量,你可以取m次,每次取出的物品重量之和不超过一个给定的数k,而且每次你只能在一段区间内选择,每次选的区间不能相交,求最多能取到的物品数。需要注意的是,题目中要求你在“一段区间内”取,但并不要求你取走这个区间内的所有物品<br />数据范围:1<=n<=2000,1<=m<=50,1<=k<=10000<br />分析:<br /> 算法显然是dp,首先容易得到一个O(n*m*k)的方程,但显然是过不了的原创 2010-11-06 22:34:00 · 339 阅读 · 0 评论 -
【HNOI 2009图同构计数】Pólya计数法的应用
不好意思地说,我拿到这道题时,第一个就把波利亚这条路排除了,囧组合数学无能力者syj是也不过这道题确实非常好,需要扎实的数学功底和精妙的模型转化技巧,而这正是我所欠缺的题目大意:n个点的图,要你求本质不同的图的个数,说两个图本质相同是指存在一组点的标号方法,使得边完全相同思路: 首先我们要往波利亚上面想,想办法构造置换群,从容易分析的点的置换推到同构本质的边的置换,再统计答案。 然而,本题n!的置换群个数逼得我们换一个角度思考 如果考虑总方案数有难度,不妨想想每个点事件会被算到多少次,统计所谓的原创 2010-11-06 21:29:00 · 1530 阅读 · 1 评论 -
【NOI2008志愿者招募】最小费用最大流
题解见【网络流总结】这里只放代码算了program syj;const oo=maxlongint>>1;var n,m,s,t,x,y,z,i,kk,e,ans,nn,flow:longint;ok:boolean; d,h,a,b,sl,fir,pre:array[0..1005]of longint; next,point,w,c:array[-15005..15005]of longint; q:array[1..200000]of longint;原创 2010-10-29 21:02:00 · 1102 阅读 · 0 评论 -
【酱油记】HNCPC2010
我菜,5个小时就做了点水题,哎,又被虐了理工大学云塘校区还真是远,车都跑了半个多小时才到走到赛场门口,看见向上大牛,不久,雅礼众神牛均现身,显然,他们是来虐人的(事实证明,确实是这样)至于我自己,心情还算挺轻松,能勃一勃,自然爽,被虐了,就算是攒点RP吧就这样,我,mdt,阿隋开始了征程拿到题目,瞬间有被水到的感觉,ABC均为超级大水题3分钟搞定A题,我去看后面的题了,mdt搞第二题,不久也搞定,一交,竟wa了,我们一下子囧,随后他看看调调差不多搞了又10分钟,无解,我们让他先放一放,sz来重写(略去半个多原创 2010-10-31 22:54:00 · 493 阅读 · 0 评论 -
【NOI2009诗人小G】动态规划、1D1D经典优化
<br />本题其实是个大裸题<br />f[i]=max{f[j]+w(j,i)}的方程基本上是摆明了的,这个方程显然是O(n^2),虽然有30s的时限,但也是过不了的<br />优化,势在必行<br />这个方程最麻烦的一点就在于w(j,i)的形式过于飘逸,连p次方都来了,以至于诸如斜率优化,单调队列等一般方法在这里用不上<br />那怎么办?只剩神法决策单调性了,这个方程有决策单调性吗?怎么证? p.s 决策单调性就是对于i<j,i的最优决策<=j的最优决策<br />本人数学不才,但可以隐约感觉到应原创 2010-10-29 21:21:00 · 1194 阅读 · 0 评论 -
【NOI2008志愿者招募 WC2007剪刀石头布 POI2002滑雪者】网络流总结
<br />先讲讲这几道题的题解和心得:<br /> <br />1.志愿者招募:<br /> 题意:见原题<br /> 根据流量平衡方程来构图非常方便,而且简单易懂,以后可能成为做网络流的神法之一<br /> 简单记一下流量平衡方程构图法的步骤:<br /> a.列出需求不等式<br /> b.通过设置松弛变量,将不等式变成等式<br /> c.两两相减,得到流量平衡方程<br /> d.观察方程,>0表示得到的流量,<0表示输出的流量,如果是跟需求量有原创 2010-10-28 17:35:00 · 2132 阅读 · 0 评论 -
【HNOI2009 有趣的数列】卡特兰数、筛选法
<br />首先可以通过推算或是打表发现题目就是卡特兰数<br />如果知道要求什么了,甚至差不多要搞出来了,却离ac就差那么一点点,是相当郁闷的,不是吗?<br />一个大问题接踵而来,如何求卡特兰数第1000000项?<br />有个组合公式ans=C(N,2N)-C(N-1,2N)<br />直接分解质因数? TLE?!(MDT打了个质数表+常数优化然后0.7sAC了~囧)<br />更高级的方法? <br />LY想出了一个O(n*(1+1/2+1/3+1/4+...+1/n))的算法:<br />原创 2010-10-25 21:17:00 · 926 阅读 · 0 评论 -
【POJ2104 离线求区间K大数】划分树
<br />区间k大数怎么看都是一个比较重口味的东西,一不小心就要树套树,麻烦的代码,繁琐的调试,考场上性价比非常低<br />于是这个问题就一直搁置在这里<br />突然,划分树的亮相让人眼前一亮,优美的性质,漂亮的复杂度,简洁的代码,怎么看怎么好<br />好了,进入正题。<br />这个划分树的核心还是利用归并的思想,预处理出所有归并的中间结果,和s[i,j],第i层前j个进入左子树的元素个数,有了这个,就在每层都可以O(1)的判断当前区间k大数进入了左子树还是右子树<br />总的时间复杂度是预处理原创 2011-01-11 08:48:00 · 502 阅读 · 0 评论 -
【NOIP2010解题报告】
第一题:模拟 直接按题目描述模拟,用一个队列实现。 由于是非负整数,所以要记得开0下标第二题:动态规划 首先问题只与所用卡片的个数和位置有关,所以可以根据这个设计状态进行动态规划 记f[i, j, k, l]表示用了i个1步的卡片,j个2步的卡片,k个3步的卡片,l个4步的卡片所获得的最大得分状态转移方程f[i, j, k, l]可以转移到f[i + 1, j, k, l] f[i, j + 1, k, l] f[i, j, k + 1, l] f[i, j, k, l + 1] 由于原创 2010-11-21 17:06:00 · 2005 阅读 · 3 评论 -
【集训队试题 礼物】数论、递归求值
题目见H8OJ 2142http://www.zybbs.org/JudgeOnline/problem.php?id=2142综合性比较强的求值题(这个名字好像不怎么样。。)my solution:本题有几个关键点,主要都是基于mod的快速求值a. 列出目标式:b. 将p分解质因数p =(ai为质数)(共t个质因子)c. 加速如下形式的式子的求值S = K! mod (ai^bi) (a为质数)即对p的t个质因子分别求值目标式中在分子的阶乘式直接乘,在分母的则取其原创 2011-04-10 20:15:00 · 365 阅读 · 0 评论 -
【HNOI 2008 明明的烦恼】树的prufer编码
<br />有一种叫树的prufer编码的神奇东西能将一棵点带标号的树一一对应地映射成一个长度为N-2的序列,方法如下:<br />每次取出未被删除的标号最小的度为1的点,将这个点相邻的那个点加入序列,同时删除这个点,直到整棵树只剩两个点<br />还原的话,只要从前往后扫这个序列a,将a[i]与序列a中i之后没出现的标号最小的且没被标记过点相连,同时将那个点标记一下,直到最后剩两个没标记的点,将他们相连即可<br />这个编码方法也顺便解释了n个点的树有n^(n-2)个<br />回到这道题,一个点的度数原创 2011-03-30 21:20:00 · 1660 阅读 · 1 评论 -
【圆的面积并】O(n^2logn)的解法
<br />题解完全参考的AekdyCoin牛、lishi牛和盾哥的题解,具体方法见这些人的文章,这里不罗嗦了<br />这里记几个值得一提的细节<br />1.叉积求面积记得除以2,还有扇形面积公式S = r^2 * p / 2,p是圆心角(弧度),刚好也要除以2<br />2.判好两个圆完全相同的情况,我用的是一个标记数组表示i有没有曾经被包含过,这个包含的意义是要取等号的,也就是说两个完全相同的圆,出现在前面的那个会被判为被包含,后面那个则不会<br />3.当区间跨极角的边界时,我的做法是拆成两个区原创 2011-05-16 22:38:00 · 645 阅读 · 0 评论 -
【MT原创题 丘比特的烦恼】Hopcroft-Karp算法、tarjan
<br />题目H8OJ上有,这里就不罗嗦了<br />题目不难,简单讲一下解法<br />先求个最大匹配,再把无向边定向,匹配边由x集->y集,非匹配边由y集->x集,这样定向了之后,任意一条从x集出发y集结束的路径就对应了一条增广路<br />求出这个图的强连通分量,如果一条边的两个端点处于同一个分量内,那这条边其实没什么影响力,删了这条边原图仍然存在完备匹配<br />而如果这条边的两个端点不在一个分量内,那这条边如果是匹配边那就一定会被选,如果不是匹配边那就一定不会被选<br />可是,由于这个题的原创 2011-05-15 23:07:00 · 809 阅读 · 0 评论 -
【SHOI2008 堵塞的交通】线段树维护条状网格图的连通性
<br />题意很简洁,这里就不复述了<br />这题其实是WC最短路的超级简化版,方法类似<br />大概就是用一个线段树维护一个区间的左端点到右端点的连通情况,这个信息显然是可以合并的<br />由于只有两层,所以我维护了如下几个信息<br />左上-左下<br />右上-右下<br />左上-右上<br />左上-右下<br />左下-右上<br />左下-右下<br />的连通性<br />修改的时候直接改就可以了,至于询问,由于我们维护的是仅在当前区间走的信息,而最终的路径可能跨区间,所以询问(l原创 2011-05-11 22:57:00 · 1347 阅读 · 0 评论 -
【POI08 PER】模意义下的的除法
取模这种东西到底还是好,将广大OIER从高精度的深渊中解放出来但是,取模也不总是那么方便的比方说,我们的操作中不可避免地出现了除法大部分时候题目会告诉我们取模的数是质数,或者至少除数和取模的数互质,这样我们就能用欧拉定理来解决这个问题了然而,不幸的事终还是发生了这道题所要求的取模的数就是任意的~~题目本身不难,从后往前按位统计+树状数组即可,但由于可重排列公式中不可避免地出现了除法,怎么办?盾哥从这个题的标程中抠出了下面这个不太优美的方法先将要取模的数分解质因数,然后每次要乘或要除一个数的时候,就将那个数的原创 2011-03-20 17:49:00 · 423 阅读 · 0 评论 -
【POJ1739、travel、画圈圈】连通性状态压缩DP
其实这所谓连通性状态压缩dp并不麻烦,有模板可循算法流程1. 预处理出所有有效状态,这个有效状态的定义是所有括号是配对的,即括号序列合法,并给每个状态一个唯一对应的哈希值(3进制),我用0表示无插头,1表示左插头,-1表示右插头2. 预处理出所有转移,形如g[i,j,k],表示轮廓线的状态为i,转折点为j,第k号转移到哪个状态(编号,不记哈希值)。一般是以下几种转移(但对于每个特定的格子只有两种转移)0 0 –> 0 0 or 1 -1 空格不管或在空格新建两个插头0 1 –>原创 2011-03-15 11:13:00 · 804 阅读 · 0 评论 -
【POI06 TET】二维线段树
<br />终于知道二维线段树怎么写了!<br />想来也有点好笑,我搞了这么久OI居然连二维线段树都不会写~<br />以前一直因为这个二维线段树的标记怎么放没搞得清就一直搁着没写,这才终于了却这一“心结”<br />这个题要求在二维线段树上支持两个操作<br />1:将一个子矩阵修改成某个值<br />2:询问某个子矩阵的最大值<br />整个矩阵中的值都是单调非降的,也就是说可以用一种不用下放标记的线段树写法来处理一维的情况<br />一维的情况:<br />线段树上的每个结点记录两个值<br />c原创 2011-03-15 10:49:00 · 1739 阅读 · 0 评论 -
近期水题记录
<br />1.异或游戏:给你n个数,求这些数两两异或的最大值(贪心)<br /> 把这些数用2进制表示,建成从高位到低位的“数字前缀树”,再把每个数取反,在前缀树上一边匹配一边更新答案<br />2.数列:求sigma(i*(i+1)*(i+2)*...*(i+k-1)),i=1..n(公式法)<br />3.分糖果:n个数,要求你取m次,每次取掉的数的和都不超过k,每次可以在一段区间内取(但并不要求取这段区间的所有数),每次取的区间不能重叠,取出尽量多的数(动态规划)<br /> 裸的O(nmk原创 2010-10-26 13:59:00 · 211 阅读 · 0 评论 -
【集训题1025——选木材】树的分治、单调队列
<br />题意:<br /> 求一棵树上一条长度为L~R之间的权值最大的路径,长度是这条路径上的边数,N<=100000,L<=R<=N<br />分析:<br /> 直接树形dp难度较大,由于是求一条树中XX路径,容易想到树的分治(详见QZC论文)<br />算法<br /> 这里讲一种基于点的分治,选树的重心为根,先算出经过自己的路径更新答案,再递归到子树<br /> 顺序处理每个子树,先搜出这棵子树中长度为1~r的所有路径,用个数组存之前的每个深度的路径最大权值,拿当前这棵子树去“合原创 2010-10-25 21:55:00 · 300 阅读 · 0 评论 -
【pku2763】线段树+rmq
<br />线段树的功能强大而实用,实现也方便,真是好东西<br />这个题重点其实不是线段树,是这个模型的转化,这里需要用到将lca问题转化为rmq问题的思想(参考郭华阳大牛论文)<br />好了,进入正题<br />本题是要求你完成树上的两种操作,一个是改变一条边权,还有就是询问两点间距离<br />如果只有第二个操作,那就是经典问题,dis(i,j)=d[i]+d[j]-2*d[lca(i,j)],d[i]是i到根的距离<br />那么考虑第一个操作的话,发现改变了某个边权,影响到的只有这条边下面的子原创 2010-09-25 20:33:00 · 336 阅读 · 0 评论 -
【pku2676+pku3074+pku3076】数独——dancing links
<br />终于搞出个dancing links啦,跳舞庆祝。。<br />先简单讲讲dancing links,大概就是处理一大类覆盖问题的神法。<br />这个算法处理的是一个叫做精确覆盖的模型,意思大概就是给你个01矩阵,要求你选出若干行,使得每列有且仅有一个1<br />不同于别的搜索,dancing links是搜每一列去被哪个行来覆盖,用一个双向十字链表来将所有的1链起来,从而达到去除冗余操作,提升运行速度的神奇效果,疗效显著,3盒一个疗程。。<br />好了,刚才有一点废话,进入正题。(那个d原创 2010-09-25 21:09:00 · 1363 阅读 · 0 评论 -
【pku2451+3525+3384+1755】半平面交O(nlogn)
<br />又来到了十分弱势的计算几何上,手中对付几何题的武器又多了一把<br />本人对牛书上那个N^2算法不感冒,便直接学习这个高级点的算法(集训队朱泽园论文)<br />略读一遍,英文太多十分之碍眼,加之论文讲的又不太清楚,所以一度陷入迷惘<br />磨蹭了良久,无意中翻见一标程,竟然就是一个简单的双端队列,豁然开朗,遂速切出此模板<br />好了,结束废话,进入正题<br />算法思想非常简单,把直线按极角排序之后,在顺序扫描的过程中求出可行域,整个过程有点类似于凸包那个扫描法<br />实现的时候原创 2010-08-31 00:20:00 · 1103 阅读 · 1 评论 -
【pku3657】二分答案+区间染色
<br />最近有点懒,很久没写总结了,估计今天相当差的状态跟这有关吧(向总笑而不语)<br />好了,废话不多说,还是随便记记最近做的的题目吧<br /> <br />pku 3657:<br /> 很有意思的题,大意是给你若干句形如a,b,c的描述,表示a~b的最小值为c,要你求第一句出现矛盾的话。<br /> 乍一看没什么好想法,模拟吧,不可能,线段树吧,判不出,怎么办?回过头想想,为什么麻烦了,麻烦在了哪里,依我看,就是麻烦在了"求第一句出现矛盾的话"上,"第一句"会卡死了我们的思路,怎么解决呢原创 2010-08-27 00:04:00 · 477 阅读 · 0 评论 -
【pku3691+pku2778】ac自动机 动态规划
再讲题目之前,先讲讲ac自动机吧看到ac这么吉利的东西,学会这什么ac自动机的欲望便来了ac自动机全名Aho-Corasick automation,挺长的,但经验告诉我们,名字越长往往编出来的代码越短,所以不要被这么虎的名字给唬住了好了,进入正题ac自动机就是用来进行多串模式匹配的一种算法(不是一种什么神奇的数据结构),它差不多就等于trie+kmp这个算法的思想非常简单,就在字母树上弄个next指针(相当于kmp中的next函数),然后对于每一篇文章我们就可以根据这棵字母树来O(len)的得到那些单词出原创 2010-08-12 00:16:00 · 787 阅读 · 1 评论 -
【test0724】求复杂多边形的边界
<br />又是麻烦得要死的计算几何题,这才发现我对计算几何太不熟练了,考试时想到算法没编完,相当郁闷<br />题目大意:<br /> 按顺序给你一个多边形(可能为复杂多边形),要你求这个多边形的边界,这所谓的边界,就是包含原多边形覆盖到的面积,顺着边界走,多边形内部在你的左手边,而且每个边界上的点(不一定为原多边形的顶点)可以出现多次,边界可以有公共点,但不自交,按顺序输出边界上的点<br />分析:<br /> 这个边界的定义还算好理解吧,那么我们就顺着定义来看,它要求顺着边界走时原创 2010-07-24 21:48:00 · 462 阅读 · 1 评论 -
【test0721】完美选手数(降维思想、树状数组统计)
<br />虽然考试时数据太水了,不过这个题目本身还是很有分析价值的<br />题目大意:<br /> 给你四次考试的排名(4个序列),若一个选手存在另一个选手在四次排名中的至少三次在他之前,那么我们就说这个选手不是完美的选手,要求统计完美选手的个数,n<=100000<br />分析: <br /> n平方的朴素显然是过不了的,那么我们稍作分析,就可以得到这样一个想法,把每个人某3次考试的排名抽象为一个3维空间内的点,若原点到i号人的长方体空间内有一个点,即存在j,使得a[j]<a[i],原创 2010-07-21 22:31:00 · 253 阅读 · 0 评论 -
【pku3580】SuperMemo(Splay维护区间信息)
一向对数据结构不感冒,这次有所改观盾哥对SPLAY 的崇拜使我也开始对这种感觉还比较好用的数据结构产生了兴趣先分析下SPLAY的特点: 1.它能维护一个序列,动态地支持一些操作(主要是区间型操作),任意时刻它的前序遍历都是当前序列,这棵树其实是以位置为“序”的 2.它可以通过提根操作完成区间型操作,这里要用到类似与线段树的LAZY标记,更基本的操作就是旋转 3.可扩展性非常好,支持非常多的操作,感觉上线段树能搞定的,splay基本上都没什么问题 4.它的常数因子非常大原创 2010-07-21 00:28:00 · 831 阅读 · 0 评论 -
【pku3237】动态树
<br />好久没搞麻烦数据结构了,因此借此题练练手,顺便巩固巩固这神奇的动态树<br />题目大意很简洁,就是要求你设计一个数据结构,支持3种操作:<br />改一个边的边权,把i到j的路径上所有边取反,询问i到j的路径上的最大值<br />题目很简洁,思路自然也简洁了,就动态树强做嘛!<br />但实现的时候,还是有一些技巧的,比方说取反,其实只要把i到根取反,再把j到根取反,自然就是把i到j取反了<br />这里我发现要对i到j的路径进行操作,有通法,如下:<br />先ACCESS(I);再ACCE原创 2010-09-25 10:52:00 · 384 阅读 · 0 评论 -
【noi2009 二叉搜索树】动态规划
神奇的二叉树出现往往意味着神奇的性质,这题也不例外题目悄悄地告诉了我们treap是干什么的,可是我惊奇地发现本题与平衡树的使用没有一点关系哎,乖乖地动归吧,别乱想,孩子经验告诉我们,二叉树往往能利用中序遍历序列转化为线性结构这题就比较明显了,二叉搜索树,摆明了就是一个数据值从小到大的序列嘛,好了,按数据值排好序后做区间型dp想我不一会儿便想到一个白痴n^3的方程,大概就是f[i,j]表示i到j这一段的最小花费,每次考虑枚举一个为根,再根据权值看把这个点提为根要不要多算花费十分得意地过了样例,一测,结果可想而原创 2010-09-30 22:22:00 · 1108 阅读 · 2 评论 -
【HNOI2009积木游戏】splay、链表
<br />太太太太太太太恶心了<br />不想多说,完全就是特判判过的。。<br />花了我差不多3天时间,1天yy,1天画图,1天debug<br />ms现在的程序还有一大堆问题,不想再调了,不过总算是把当时的数据a了<br />哎哟。。<br />{$M 10000000} // draw.txtprogram syj;uses math;const o:array[false..true,false..true]of longint=((1,0),(0,-1));va原创 2010-10-26 20:43:00 · 372 阅读 · 0 评论 -
【PKU1830开关问题】解异或方程组(更正版)
<br />之前的那个帖子写的解方程的方法是错误的!<br />之前的丑方法:<br /> 先用行列变换来消元,如果发现当前的i号元相关的所有系数都为0了,直接判其为自由元,同时跳过这个方程,完全忽略它然后接着做,最后回代判无解<br /> X X X X <br /> X XX X XX<br /> X X X X原创 2010-10-25 21:33:00 · 1046 阅读 · 0 评论 -
【pku3666】左偏树的应用、维护区间中位数
<br />先说明,不是所有区间中位数都可以用左偏树维护的,本题是有特殊性的<br />拿到这道题,相信大部分人都想到了n^2的dp,我一开始也是笨笨地编了那个裸裸的程序,结果怎么都得200ms+<br />瞬间就有被第一版的0ms暴虐的感觉,忽然发现discuss里惊现某神牛的3字帖:左偏树<br />这才想到05hhy论文里ms提到了这个题,而且事实上那道题n的范围达到了100000!<br />哈哈,爽一把<br />好了,进入正题,简单讲讲这个高级算法<br />其实本题的解法是贪心,把整个序列分成原创 2010-10-14 14:01:00 · 841 阅读 · 1 评论 -
【四川04年省选day2——洪水】状态压缩dp
题目:乡下有n(n分析:n=8,显然不是裸搜就是状态压缩dp,裸搜显然也是很难过的,那么本题的方向就出来了算法: 记f[i]表示i这个状态中所有的点连通的概率,如果直接把要选的点分成2个集合什么的做法是会算重的 而为了避免算重,我们需要规定一些东西,比方说可以这样规定:先孤立出所选集合中的第一个点,然后枚举其他点的连通情况,且其他点形成的连通块之间不能直接相连,只能和这个孤立出的点相连,如图里面需要套一个搜其他点连通情况的dfs,惊奇发现大过程套小过程,小过程还可以调用大过程,而且大过程的局部变量原创 2010-10-12 19:40:00 · 1252 阅读 · 0 评论 -
【noi2009 管道取珠】动态规划、神奇
<br />哎呀,这题太神奇了<br />设计状态想爆脑袋都想不到什么好的,感觉怎么搞都O了个状态总数,转移就更别谈了<br />一看题解,恍然大悟<br />哎呀。。<br />首先对 ans=sigma(a[i]^2)进行转化,将其这样理解:用A和B分别表示一种取珠的方法,将结果相同的两种取珠方法(不管这两种取珠方法本身是否相同)记为(A, B),不难发现ans就是所有这样的(A, B)的对数。<br /> 设状态f(a1, b1, a2, b2),如果f(a1, b1, a2, b2) = K,表示原创 2010-09-30 23:07:00 · 508 阅读 · 0 评论 -
【noi2009 植物大战僵尸】最大权闭合图、网络流
这题模型还真是。。裸连我这种网络流无能力者也在几乎刚读完题就想到了最大权闭合图的模型。。题目中的植物就是点,权值就是score,依赖关系就是每个点依赖于它右边那个点和能罩着它的点好了,最大权闭合图的具体搞法参考AMBER大神的论文,这题就搞得差不多了还有一个要注意的地方,这题中的依赖关系会成环,可以想到如果成环了,那这个环上的所有点都选不了了一开始我想丑了,其实拓扑排序一遍,把剩下的点删掉就可以了(就是把这个点权值改为负无穷就可以了)我的程序就裸找环,O(点数*边数),至于时间嘛,丑了点,但还是过了写的有点原创 2010-09-30 22:52:00 · 920 阅读 · 0 评论 -
10月1日水题记录
<br /> <br />学校神奇地给了7天假,又可以刷一阵子题了,happy<br />第一天嘛,就随便做了几道水题了<br /> <br />昂贵的聘礼:枚举等级最小的点再最短路就可以了<br /> <br />钉子与小球:题目本身是超级水的。但有个细节需注意,给两个分数通分相加时,要先约掉一点,不然就会爆int64<br /> 假设a/b+c/d=e/f,令k=gcd(b,d),那么e=a*d div k+c*b div k ,f=b div k*d,再对e、f约分这样才不会215<br />原创 2010-10-01 22:35:00 · 230 阅读 · 0 评论 -
【noi2009 变换序列】二分图匹配
每年noi还真是会留道水题给大家哈皮哈皮,今年也不例外好了,废话不多说,进入这道题首先容易将原序列和新序列弄成一个二分图模型,因为都是n的排列,那么必须一一对应题目其实就是求一个字典序最小的完备匹配这个嘛,不用官方题解那么麻烦的搞法,就按字典序从小到大连边,然后字典序从大到小for原序列那一排点直接匈牙利就可以了可以这样理解,我们去匹配一个点,先匹配上了一条边后面的就不会去试了,所以对于每个原序列中的点连出去的边要按字典序从小到大而for一排点的时候,越靠后的点就越不会被别的点增广掉,也就是越靠后for的点原创 2010-09-30 22:40:00 · 621 阅读 · 0 评论 -
【集训队试题 排队】线段树套平衡树
即使我第一个线段树套平衡树,也是一个比朴素还慢的树套树,不解释了{$inline+}program syj;const maxn=20005;var z,nn,m,n,i,j,k,k1,k2,k3,ans,x,y,ll,rr,tt:longint; a,b,c,s:array[0..maxn]of longint; aux,l,r,son,p:array[0..32*maxn]of longint; rt:array[0..4*maxn]of longint;p原创 2011-04-10 22:38:00 · 837 阅读 · 0 评论