|
|
|
|
|
摘要:
NOIP2011结束了,搞了个不好不坏的成绩:460,河北省第8,高二第五,所幸没丢掉省选资格,而且经目测是河北唯一一个得到省一的高二女生……省选压力似乎小些吧……额、可是省选不是我的目标啊= =那样进省队后还不是各种不会各种被虐被鄙视~>_<~ 我的目标是湖南的沈添笑神牛。虽然沈添笑神牛在NOI2011上发挥的不理想,可HNOI2011见证了实力啊~现在还差很远,不到一年的时间,努力追吧! 额、我也老了……也讲了第一堂课……于是,我就有了把我的NOIP前Poj上的AC Record放上来的想法…… 嗯,新学的OIer和ACMer可以看看,老牌的OIer以及ACMer就不要鄙视了~ 阅读全文
posted @ 2011-10-08 09:23
This_poet
阅读(707)
推荐(1)
编辑
摘要:
今天状态不好,做欧拉路题目练手都很不顺利。再贴一遍求欧拉回路的模板加深印象:void Eular(int i);{ for (p,p<=code[i][0],p++) { if (! v[edge[i][p]]) { v[edge[i][p]]=true; Eular(code[i][p]); stack[stack_size++]=edge[i][p]; } }}具体的一些问题探讨:1、无向图存在欧拉回路条件:每个点入度都为偶数2、无向图存在欧拉路条件:只有两个点入度为奇数或每个点入度都为偶数3、有向图存在欧拉回路条件:每个点入度都等于出度4、有向... 阅读全文
posted @ 2011-10-08 00:32
This_poet
阅读(751)
推荐(0)
编辑
摘要:
最简单的区间贪心,但是考察细心。注意事项:1、考虑s>t的情况2、读入的时候要把s、t分别转换为(s+1)div 2和(t+1)div 2代码:Program poj1083;//By_ThispoetConst maxn=200;Var t,i,j,k,m,n :Longint; heap,l,r :Array[1..maxn*2]of Longint; heap_size :Longint; Procedure Down(i:Longint);var j:Longint;begin while ((i<<1)<=heap_size) do begin ... 阅读全文
posted @ 2011-10-03 15:46
This_poet
阅读(347)
推荐(0)
编辑
摘要:
参考罗穗骞神牛论文中求公共子串例题。将两个字符串合并为一个,中间加上一个没有出现过的字符,我加上的是‘}’然后求出height数组,并判断该height数组是否合法,如果合法就采用它来更新答案。也是后缀数组的模板题吧。代码:Program poj2774;//By_ThispoetConst maxn=200005;Var i,j,k,m,n,p,q,sum,ans :Longint; rank,sa,x,y,tmp,height :Array[0..maxn]of Longint; st :Array[0..maxn]of Char; pre,data :Ar... 阅读全文
posted @ 2011-10-03 11:21
This_poet
阅读(448)
推荐(0)
编辑
摘要:
经典的动态规划,LRJ神牛的书上经典例题第一题。开一个三维数组,f[i][j][k]表示将i~j这一段,连上后面的k个格子全部消去所能够获得的最大价值。状态转移方程:f[i][j][k]=Max{ Max{f[i][p][len[j]+k]+f[p+1][j-1][0]}(color[p]=color[j] and i<p<j)//和前面某段一起消掉 f[i][j-1][0]+sqr(len[j]+k)//马上消掉这一段 }其中,len[i]表示第i段连续区间的长度,比如说样例1中的len值分别为1,4,3,1代码很简单:Program POJ1... 阅读全文
posted @ 2011-10-03 11:14
This_poet
阅读(762)
推荐(0)
编辑
摘要:
可以转换成二分答案求最大连续子段和来做。每次在a[i]的基础上减去二分出来的答案。求出长度不小于f的最大连续子段和。如果大于0,则调整下边界,否则调整上边界。求长度不小于f的最大连续子段和需要一些小技巧,比如说判断以i为终点的连续子段和,就可以看sum[i]-sum[i-f]+dp[i-f]的正负。其中dp[i]表以i为终点的最大连续子段和。具体见代码。Program cowfnc;//By_ThispoetConst maxn=100005;Var i,j,k,m,n,f,ans :Longint; l,r,mid :Longint; a,dp,sum,b :A... 阅读全文
posted @ 2011-09-29 20:30
This_poet
阅读(1181)
推荐(0)
编辑
摘要:
按照铎铎大牛的AC Record做的第一题,就被虐得很惨。这是划分树的模板题。划分树,主要是求无更改的情况下区间第k小值。建树和线段树有些类似,但是划分树是在排序的基础上,左子树记录比中间值小的值,右子树记录比中间值大的数,在每棵子树中不改变原数列中的顺序。查找也类似线段树,规定查找区间,定义函数Find(code,l,r,kth,dep),code为当前查找到的节点值,l,r是区间左右界,为闭区间,dep代表当前查找的深度。如果l,r与code的管辖区间相同就返回b[l+kth-1](b为排好序的数列),否则令t1、t2为[tree[code].left,l-1]进入左子树的数的个数和[tr 阅读全文
posted @ 2011-09-29 17:11
This_poet
阅读(882)
推荐(0)
编辑
摘要:
KM算法模板题。友情链接:百度百科KM算法:http://bk.baidu.com/view/739278.htm注意事项:1、在每次Dfs做匈牙利算法的时候都要将可更新值slack赋为无穷大2、在扩大相等子图的时候注意要将不在交错树中的y节点的slack值减去更新值d3、百度百科上给的程序复杂度为O(n^4),我的代码时间复杂度是O(n^3)代码:Program KM;//By_ThispoetConst maxn=200;Var i,j,k,m,n,toth,totm,d,ans :Longint; slack,res,a,b :Array[1..maxn]of Long... 阅读全文
posted @ 2011-09-29 16:39
This_poet
阅读(564)
推荐(1)
编辑
摘要:
两道题都折腾了很长时间,总算过了。树形动规,主要在于动规顺序,其次才是状态的设计。POJ2486:先用左儿子右兄弟表示法进行多叉转二叉。f[i][j]表示从i点出发走了j步、最后不一定要回到i点能吃到的最多苹果数g[i][j]表示从i点出发走了j步、最后回到i点所能吃到的最多苹果数动规方程比较复杂:f[i][j]=Max{f[left[i],k],g[right[i],j-3-k]+a[i]}(0<=k<=j-3)f[i][j]=Max{f[i,j],g[left[i],k]+f[right[i],j-4-k]+a[i]}(0<=k<=j-4)g[i][j]=Max{g 阅读全文
posted @ 2011-09-27 10:50
This_poet
阅读(1709)
推荐(0)
编辑
摘要:
嗯,挺水的题,说说注意事项吧。坐标轴线段是这样覆盖的:|-------|-------|-------|-------|-------|-------|-------|-------|1 23 4 5 6 7 8而不是这样的:|-------|-------|-------|-------|-------|-------|-------|-------|0 1 2 3 4 5 6 78我在建立线段树的过程中加上了hash判重……避免被覆盖了的线段也被统计……注意hash不要写错了要采用lazy-tag思想,否则会TLE……我的代码:Program poj2528;//By_thispoetC. 阅读全文
posted @ 2011-09-25 10:35
This_poet
阅读(211)
推荐(0)
编辑
|
|