自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(57)
  • 收藏
  • 关注

原创 Linux系统下得到更精确的时间

不知道各位童鞋在Linux系统中写对拍有没有出现过困扰,一般我写初始化随机化种子都用srand(time(0));然而在Linux系统下time函数返回的时间只能精确到秒,这也就意味着我们每秒最多只能拍一组数据,而这在很多题目中是不太够的。怎么在Linux系统下得到更为精确的系统时间呢?LYP告诉了我一种方法,可以精确到微秒。#include int main(){

2011-11-02 22:03:06 469

原创 朝着FlyJudge前进

Topcoder老是登不上,干脆打打酱油,学一学图形化编程。第一个比较大的目标就先定成做一个简陋的评测器吧,名字就叫FlyJudge吧。顺便提一下,Qt是一个不错的东西。

2011-10-24 09:19:13 327

原创 【FFT快速傅里叶变换】除草

前几天的SRM和一个ACM比赛居然都很坑爹的考了FFT,现在的题目还真是想怎么出就怎么出啊。于是就参考算导研究了一下FFT,发现无论是思想还是实现都挺简单的,就只要用一些个复数的定理来用O(nlogn)的时间完成DFT,然后再用一个非常诡异的定理把DFT弄成逆DFT,然后就可

2011-09-17 09:51:55 656

原创 新手写时的c++各种脑残错误

这一部分均于本人调试NOI05 sequence时所犯1.scanf读变量时没加&2.==写成=3.!m和m搞反4.有多个max函数嵌套的情况下还使用 #define max(x,y) ((x>y)?x:y),这样一个嵌套n次的max最后的复杂度就是O(2^n)

2011-08-24 22:43:33 543 1

原创 痛苦的转C中

亚历山大啊啊啊

2011-08-17 15:49:13 305

原创 最近的几道好题

由于题目不是自己人出的,所以题面就不给了吧CSDN贴代码不能缩到一起了,所以这篇文章会显得比较冗长Day1:1.Hash or 后缀数组大概的做法:枚举答案长度,暴力匹配验证答案即可代码:program syj;type arr=array[0..200005]of lo

2011-07-25 15:57:07 547 1

原创 【一句话小结各种网络流】

最大流:DINIC or SAP最小费用最大流:SPFA+增广(费用的值较离散) or ZKW(费用的值集中)有源汇的上下界最大流:新建s', t',用(i, j, l, r)表示i到j有一条下界为l上界为r的边,将每条这样的边拆成(s', j, 0, l), (i, t', 0

2011-07-23 21:00:28 2122 3

原创 【两个双连通分量和O(nlogn)~O(logn)在线求LCA的tarjan算法】

小囧了一下,双连通分量有两种我是前两天才知道的相关概念参考byv牛的blog,这里记几个关键的点桥就是dfn[i] 割点就是它发出去的边(i, j)中至少一条满足dfn[i] 我一般求的是所谓 边双连通分量,实际上就是把桥去掉之后还在一起的点的集合而这里还有一个 点双连通分量,这个东西实际上就是差不多把割点去掉之后还在一起的边的集合ps:点 边,这个东西为什么不反过来叫呢?求法的话差不多,都是用tarjan算法,不过求边双连通分量时还要开一个边的栈,碰到一条满足dfn[i] 还有一个东西就是那个求LCA的

2011-05-22 22:19:00 955 2

原创 【计算几何画图器 For Pascal V1.01】

<br />计算几何难写主要的原因就是太不直观,而手画图“精度”有限,效率也不高,怎么办?<br />写程序画是一个不错的想法!<br />于是我就找盾哥学了一下graph和crt单元的一些用法,做了这样一个简陋的画图器<br />为了方便使用,我把这个画图器做成了一个库,要使用就只要uses draw_lib;就可以了<br />代码:<br />unit draw_lib;interfaceprocedure init(k:longint);procedure putpoint(x,y

2011-05-16 23:00:00 577 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 651

原创 【MT原创题 丘比特的烦恼】Hopcroft-Karp算法、tarjan

<br />题目H8OJ上有,这里就不罗嗦了<br />题目不难,简单讲一下解法<br />先求个最大匹配,再把无向边定向,匹配边由x集->y集,非匹配边由y集->x集,这样定向了之后,任意一条从x集出发y集结束的路径就对应了一条增广路<br />求出这个图的强连通分量,如果一条边的两个端点处于同一个分量内,那这条边其实没什么影响力,删了这条边原图仍然存在完备匹配<br />而如果这条边的两个端点不在一个分量内,那这条边如果是匹配边那就一定会被选,如果不是匹配边那就一定不会被选<br />可是,由于这个题的

2011-05-15 23:07:00 836

原创 【O(1)空间求出两个出现奇数次的数】搞笑题

<br />题目很简单,要求你用O(1)空间求出一个序列中两个出现奇数次的数(其他数都出现偶数次)<br />另外还有,输入将给出这个序列两遍<br />提示:解法用到了xor的性质和分类的思想<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。。<br />。

2011-05-12 19:28:00 716

原创 【SHOI2008 堵塞的交通】线段树维护条状网格图的连通性

<br />题意很简洁,这里就不复述了<br />这题其实是WC最短路的超级简化版,方法类似<br />大概就是用一个线段树维护一个区间的左端点到右端点的连通情况,这个信息显然是可以合并的<br />由于只有两层,所以我维护了如下几个信息<br />左上-左下<br />右上-右下<br />左上-右上<br />左上-右下<br />左下-右上<br />左下-右下<br />的连通性<br />修改的时候直接改就可以了,至于询问,由于我们维护的是仅在当前区间走的信息,而最终的路径可能跨区间,所以询问(l

2011-05-11 22:57:00 1358

原创 【搞笑算法小合集】单纯形、模拟退火、FFT

<br />小小地记一下CTSC酱油赛可能得到的一些搞笑算法,提交答案题可以拿来乱搞一下<br /> <br />单纯形:<br />这是用来搞线性规划的一种神器,因为很多东西归约之后都可以用线性规划做,所以这个算法应用面还是比较广的吧<br />具体做法参考算导吧,讲的非常详细<br />这里记一些我的理解<br /><br />核心操作是pivot(i, j)表示用j方程中i变量作为换出变量,j方程的松弛变量作为换入变量对所有方程“消一次”。<br />代码如下:<br />procedure pivo

2011-04-30 16:26:00 677 1

原创 【集训队试题 排队】线段树套平衡树

即使我第一个线段树套平衡树,也是一个比朴素还慢的树套树,不解释了{$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 842

原创 【集训队试题 礼物】数论、递归求值

题目见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 373

原创 【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 1691 1

原创 【POI08 PER】模意义下的的除法

取模这种东西到底还是好,将广大OIER从高精度的深渊中解放出来但是,取模也不总是那么方便的比方说,我们的操作中不可避免地出现了除法大部分时候题目会告诉我们取模的数是质数,或者至少除数和取模的数互质,这样我们就能用欧拉定理来解决这个问题了然而,不幸的事终还是发生了这道题所要求的取模的数就是任意的~~题目本身不难,从后往前按位统计+树状数组即可,但由于可重排列公式中不可避免地出现了除法,怎么办?盾哥从这个题的标程中抠出了下面这个不太优美的方法先将要取模的数分解质因数,然后每次要乘或要除一个数的时候,就将那个数的

2011-03-20 17:49:00 430

原创 【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 809

原创 【POI06 TET】二维线段树

<br />终于知道二维线段树怎么写了!<br />想来也有点好笑,我搞了这么久OI居然连二维线段树都不会写~<br />以前一直因为这个二维线段树的标记怎么放没搞得清就一直搁着没写,这才终于了却这一“心结”<br />这个题要求在二维线段树上支持两个操作<br />1:将一个子矩阵修改成某个值<br />2:询问某个子矩阵的最大值<br />整个矩阵中的值都是单调非降的,也就是说可以用一种不用下放标记的线段树写法来处理一维的情况<br />一维的情况:<br />线段树上的每个结点记录两个值<br />c

2011-03-15 10:49:00 1750

原创 【POJ2104 离线求区间K大数】划分树

<br />区间k大数怎么看都是一个比较重口味的东西,一不小心就要树套树,麻烦的代码,繁琐的调试,考场上性价比非常低<br />于是这个问题就一直搁置在这里<br />突然,划分树的亮相让人眼前一亮,优美的性质,漂亮的复杂度,简洁的代码,怎么看怎么好<br />好了,进入正题。<br />这个划分树的核心还是利用归并的思想,预处理出所有归并的中间结果,和s[i,j],第i层前j个进入左子树的元素个数,有了这个,就在每层都可以O(1)的判断当前区间k大数进入了左子树还是右子树<br />总的时间复杂度是预处理

2011-01-11 08:48:00 506

原创 【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 2038 3

原创 【NOIP2010】题目一览及详细题解

FLY BJS以下内容已被博主设置为回复可见

2010-11-08 17:45:00 505 34

原创 【费用流的一点改进】距离标号连续增广路费用流算法

其实标题中那个又长又霸气的名字只是用来唬人的,其实这个算法非常简单zkw算法的重点其实就是引入了一个距离标号,让程序一边更新标号求最短路,一边增广,从而使速度大幅提高可是zkw算法中每次调整标号只增广一次,感觉有点浪费,为什么不多次增广呢?如果说这个标号让增广的步伐加快了的话,那多路增广就能加大增广的步子,一步多跨一点,也就能让速度更快一点具体实现的话,可以像dinic一样,每次增广时找到一个最靠前的满流边,退到那个地方,继续做代码量并没有大多少,速度却可以飙升实测发现,可能卡到zkw的稠密图一般卡不到这种

2010-11-07 15:52:00 873

原创 【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 1626 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 346

原创 【HNOI 2009图同构计数】Pólya计数法的应用

不好意思地说,我拿到这道题时,第一个就把波利亚这条路排除了,囧组合数学无能力者syj是也不过这道题确实非常好,需要扎实的数学功底和精妙的模型转化技巧,而这正是我所欠缺的题目大意:n个点的图,要你求本质不同的图的个数,说两个图本质相同是指存在一组点的标号方法,使得边完全相同思路:   首先我们要往波利亚上面想,想办法构造置换群,从容易分析的点的置换推到同构本质的边的置换,再统计答案。   然而,本题n!的置换群个数逼得我们换一个角度思考   如果考虑总方案数有难度,不妨想想每个点事件会被算到多少次,统计所谓的

2010-11-06 21:29:00 1538 1

原创 【酱油记】HNCPC2010

我菜,5个小时就做了点水题,哎,又被虐了理工大学云塘校区还真是远,车都跑了半个多小时才到走到赛场门口,看见向上大牛,不久,雅礼众神牛均现身,显然,他们是来虐人的(事实证明,确实是这样)至于我自己,心情还算挺轻松,能勃一勃,自然爽,被虐了,就算是攒点RP吧就这样,我,mdt,阿隋开始了征程拿到题目,瞬间有被水到的感觉,ABC均为超级大水题3分钟搞定A题,我去看后面的题了,mdt搞第二题,不久也搞定,一交,竟wa了,我们一下子囧,随后他看看调调差不多搞了又10分钟,无解,我们让他先放一放,sz来重写(略去半个多

2010-10-31 22:54:00 498

原创 【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 1202

原创 【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 1108

原创 【wc2007剪刀石头布】最小费用最大流

<br />用的是我和盾盾研究出来的“距离标号连续最短增广路算法”,实测效果极佳<br />先贴代码,下次再解释<br />program syj;const maxn=105; maxm=maxn*(maxn-1)>>1; oo=maxlongint>>1;var e,s,t,n,m,nn,ans,i,j,x:longint; ok:boolean; h,d,b,sl:array[0..maxm+maxn]of longint; next,point,w,c:array[-(m

2010-10-29 20:57:00 741

原创 【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 2163

原创 【排序+归并+数据结构】统计类数据结构题的法宝——离线统计满足3个限制条件的信息

就先用一道题来做个引子吧:你有一个N*N的棋盘,每个格子内有一个整数,初始时的时候全部为0,现在需要维护两种操作:命令参数限制内容1 x y A1将格子x,y里的数字加上A2 x1 y1 x2 y211输出x1 y1 x2 y2这个矩形内的数字和其中,n题目很恶心难道要动用传说中的动态二维线段树?!真用个像树套树或是什么动态二维线段树之类的神级数据结构还是不太漂亮怎么样才能漂亮地完成这种麻烦的统计呢?说到漂亮,诸如归并排序,树状数组之类的东西就不免从脑中闪现题解寥寥数语,使用归并的思想,先递归完成l~mid

2010-10-26 21:29:00 586

原创 【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 377

原创 【任意维空间内最接近点对问题】随机旋转坐标系法、期望O(n)

<br />本来2维平面内的最接近点对问题是有O(nlogn)的算法的,但那个分治算法实用性不强<br />盾盾想到了一个十分飘逸的算法:<br />   随机旋一下系,按x排序然后直接裸找+break即可<br />通常情况下直接按x排序裸找是会被某些数据卡到的(某些无聊的同学就不要说按y排之类的话了)<br />但是,为什么会被卡到?无非就是点全排在一排上就break不动了嘛!<br />那我们随机旋系不就随便数据怎么搞都不容易被卡到了吧!<br />因此该算法有O(快排+k*n)的复杂度,实际测试中该

2010-10-26 16:03:00 597

原创 近期水题记录

<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 218

原创 【集训题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 310

原创 【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 1076

原创 【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 932

原创 【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 847 1

空空如也

空空如也

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

TA关注的人

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