自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 求SG模板(附:HDU1848 &HDU1536)【pascal】

关于SG函数的理论知识以及理解,请见这里,目前我没有看见比这个说得更棒的=w=这里只是用来贴模板的首先定义mex(minimal excludant)运算,这是施加于一个集合的运算,表示最小的不属于这个集合的非负整数。例如mex{0,1,2,4}=3、mex{2,3,5}=0、mex{}=0。对于一个给定的有向无环图,定义关于图的每个顶点的Sprague-Grundy函数g如下

2016-11-07 19:49:11 491

转载 博弈问题及SG函数(怒赞,耐心地仔细看一定能看懂)

博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多。(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要看“博弈论”的时候。)Nim游戏是博弈论中最经典的模型(之一?),它又有着十分简单的规则和无比优美的结论,由这个游戏开始了解博弈论恐怕是最合适不过了。Nim游戏是组合游戏(Comb

2016-11-07 10:50:40 622

原创 尼姆博弈 (附:HDU1850)

尼姆博弈:有三堆各若干个物品,两个人轮流从某一堆取任意多的物品,规定每次至少取一个,多者不限,最后取光者得胜。这种情况与二进制有着很大的关系,我们用(a,b,c)来表示某种局势,那么(0,0,0)必然为奇异局势,(0,n,n)也是种奇异局势。因为如果对手在其中一堆取m个石子(m直接说结论吧:对于任意的奇异局势(a,b,c),都有a^b^c=0。(^为异或运算)。

2016-11-07 10:02:04 582

原创 威佐夫博弈(附POJ1067)

威佐夫博弈:有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。我们用(ak,bk)(ak局势。如果甲面对局势(0,0),说明甲输了,我们把这种情况叫做奇异局势。现在的问题我给你一个局势(a,b),我们怎么判断它是不是奇异局势呢?判断公式为:ak=[k(1+√5)/2](向下取整),bk=ak+k(k=0,1

2016-11-07 09:36:18 715

原创 巴什博弈 (例:HDU1846&HDU1847&HDU2188&HDU2149)

巴什博弈:只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。    显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。换句话说,也就是面对这个局面的先手必输(谁面对这个局面谁一定输)=。=因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m)

2016-11-07 09:33:28 607

原创 字符串hash模板【pascal】

const base=137; step=13; mo=1000000;var n,ans,p,l :longint; s :array[0..10010] of ansistring; heap :array[0..1000010] of

2016-11-17 20:49:02 482

原创 openjudge9278旅行 错排

错排递推:f[1]=0;f[2]=1;f[i]=(i-1)*(f[i-1]+f[i-2])注意要用单精度*高精度和高精加=。=(丧心病狂)type rec=array[0..410] of longint;var n,t,l :longint; f :array[0..210] of rec;

2016-11-17 07:31:26 497

原创 左偏树模板【pascal】

var n,m,x,t,root,size:longint; i :longint; l,r,dis,key :array[0..1000010] of longint;procedure swap(var a,b:longint);var c:longint;begin c:=a;

2016-11-16 21:51:23 457

转载 左偏树详解

//本文转自:这里2.1.2 可并堆的定义可并堆(Mergeable Heap)也是一种抽象数据类型,它除了支持优先队列的三个基本操作(Insert, Minimum, Delete-Min),还支持一个额外的操作——合并操作:H ← Merge(H1,H2)Merge( ) 构造并返回一个包含H1和H2所有元素的新堆H。 O(n),用它来实现可

2016-11-16 21:49:29 706

原创 判断负环 dfs-spfa 模板【pascal】

var n,m,t,l,x,y,z :longint; i :longint; flag :boolean; last,dis :array[0..200010] of longint; vis :array[0..200010

2016-11-16 20:05:26 1191

转载 差分约束系统详解

一直不知道差分约束是什么类型题目,最近在写最短路问题就顺带看了下,原来就是给出一些形如x-y好神奇的是这类问题竟然可以转换成图论里的最短路径问题,下面开始详细介绍下比如给出三个不等式,b-a由题我们可以得知,这个有向图中,由题b-a根据以上的解法,我们可能会猜到求解过程实际就是求从a到c的最短路径,没错的....简单的说就是从a到c沿着某条路径后把所有权值和

2016-11-16 15:20:35 322

原创 Codevs 3052 多米诺 (二分图染色+二分图最大匹配)

一个多米诺占用相邻的两个,那么把相邻的两个分开的话,就可以把一个多米诺看做一个成立的二分图匹配于是把棋盘进行二分图染色,染成黑白棋牌的那种,即一个格子与它上下左右的格子颜色不同所以我们就把每个格子与它上下左右的格子连边,连边的条件就是这两个格子都是可以放的(因为只有二分图左右两边的都是可以放的格子才可以把匹配看做一张多米诺)然后跑匈牙利算法就可以了=w=const

2016-11-16 10:22:53 509

原创 poj3177 tarjan缩点+割边 模板 【pascal】

1、tarjan缩点求割边2、缩点后此时一定形成一棵树,再把割边加回来求缩点后的各个点的度3、至少在树上添加(leaf+1)/2 条边,就能 使树达到边二连通,leaf的度为1var n,m,l,ans,a,b :longint; time,top,p,q :longint; vis :array[0..

2016-11-16 07:56:30 501

原创 洛谷 P1330 封锁阳光大学 二分图染色模板

裸的二分图染色模板,由于求最少的河蟹,所以在每次重新更新颜色(dfs)的时候ans=ans+min(ans1,ans2),而不能到最后再统计颜色为1的有几个、颜色为0的有几个,因为此时并不能保证最优var n,m,l,ans1,ans2,x,y:longint; ans :longint; i

2016-11-15 23:55:30 538

原创 openjudge9269:Big String超级字符串 详解

9269:Big String超级字符串查看提交统计提问总时间限制: 10000ms 单个测试点时间限制: 1000ms 内存限制: 131072kB描述fish在无数次oi竞赛的狱炼之后,悟出一个真理,往往越容易的题目,陷阱越深。由此,fish创作了这道题目。 fish首先给出两个短串A=’4567’ (4个字符), B=’123’(3

2016-11-15 18:55:54 1598

原创 poj1144 割点模板

tarjan求割点(low[p]>=low[x]) 的模板题,注意对dfs序列根节点情况的单独考虑(必须访问至少两次)var n,ans,l,x,y :longint; time,top,son :longint; last,low,dfn,z :array[0..110] of longint; vis,flag

2016-11-15 17:13:41 398

原创 Codevs 1222 信与信封问题 二分图匹配

首先要确定每一封信都能找到

2016-11-15 15:44:22 547

原创 poj1195 二维树状数组【pascal】

二维树状数组模板=。=var tt,n,x,y,l,b,r,t,z:longint; i,j :longint; c :array[0..1025,0..1025] of longint;function lowbit(x:longint):Longint;begin exit

2016-11-15 11:42:43 530

转载 彻底搞懂二维树状数组

二、树状数组可以扩充到二维。 问题:一个由数字构成的大矩阵,能进行两种操作 1) 对矩阵里的某个数加上一个整数(可正可负) 2) 查询某个子矩阵里所有数字的和,要求对每次查询,输出结果。 一维树状数组很容易扩展到二维,在二维情况下:数组A[][]的树状数组定义为:   C[x][y] = ∑ a[i][j], 其中,     x-lowbit(x) + 1   

2016-11-15 09:22:59 727 1

原创 一维树状数组模板【pascal】

1、单点修改,区间查询Pascal:var n,m,tt,x,y :longint; c :array[0..500010] of longint; i :longint;function lowbit(x:longint):longint;begin exi...

2016-11-15 09:13:29 1025

原创 codevs2370 lca倍增

带边权的lca,加一个dis数组维护就可以,dis数组同样用倍增累加求出:dis[i,j]=dis[i,j-1]+dis[jump[i,j-1],j-1]var n,a,b,l,m,ans,c :longint; i,j :longint; vis :array[0..50010]

2016-11-15 07:33:00 375

原创 noip2013货车运输 最大生成树+LCA 【pascal】

裸的最大生成树+LCA=。=,两个模板一下就好=w=type rec=record ll,rr,len:longint;end;var n,m,l :longint; i,j :longint; a :array[0..50010] of rec

2016-11-15 07:23:40 485

原创 Codevs1036 商务旅行 LCA【pascal】

LCA模板题,注意是双向边=。=,而且是顺次经过m个城市var n,a,b,l,m,ans :longint; i,j :longint; vis :array[0..30010] of boolean; last,d :array[0..300

2016-11-15 07:20:02 1018

原创 lca(最近公共祖先)倍增模板【pascal】

var n,m,root,x,y,l :longint; i,j :longint; last,d :array[0..500010] of longint; vis :array[0..500010] of boolean; pre,other ...

2016-11-14 21:37:40 1110

原创 noip2011聪明的质检员

二分W+check=.=由于让绝对值最小所以会有以下两种情况:1、check>s 那么就说明我们的check还可以更小也就是W还可以更大->l:=mid+12、checkr:=mid-1关键是check怎么算0.0如果直接暴力枚举每个区间和每个区间的每个w去比较的话O(nm),50%,50分=。=然后就要把它优化到O(n) 或 O(m) 用什么呢?一看是连续的区间查

2016-11-14 11:32:23 583

原创 noip2011选择客栈o(n)

一位神级大大说:这题不A的会编程么 orz好吧,其实暴力贪心的方法虽然不是严格O(n)的但是也可以过0.0所以这里只介绍O(n) 的思路和代码,即正解orz我们枚举1~n的客栈,以我们枚举的客栈作为选择的最右边的客栈1、如果这个客栈可以喝咖啡,那么它前面所有的客栈都可以选,choose=num, ans=ans+之前同色客栈数      并且它之后与它同色的客栈都可以选, 

2016-11-14 09:45:11 953

原创 noip2011观光公交贪心详解

这题就是个贪心,但是细节决定成败(给跪了)每个人到起始站的时间为s[i],到达的目的地为t[i],arrive[i]表示到第i站的时间,last[i]表示第i站最后一个人到达的时间(读入时O(m)处理)则每个人在车上的时间=到达目的站的时间-这个人到达起始站的时间即n个人的总时间ans:=sigema(arrive[t[i]]-s[i])(1易知每一站的到站时间只由从前

2016-11-14 08:08:43 475

原创 noip2014寻找道路

题目描述在有向图G 中,每条边的长度均为1 ,现给定起点和终点,请你在图中找一条从起点到终点的路径,该路径满足以下条件:1 .路径上的所有点的出边所指向的点都直接或间接与终点连通。2 .在满足条件1 的情况下使路径最短。注意:图G 中可能存在重边和自环,题目保证终点没有出边。请你输出符合条件的路径的长度。输入输出格式输入格式:

2016-11-12 20:02:34 481

原创 noip2003侦探推理详解

耗费了我三个多小时才想明白,orz orz orz这题就是个坑←_←,这数据就是个逗比→_→ 题目要求各位自寻,我不想再看见这道题第二遍=A=(数据我就珍藏了=。=)读入的处理完全是noip提高组的难度,这里P党感觉敲过去就好=。=对于数据的吐槽我就不写了,因为根本吐槽不完,出数据的简直就是认(sang)真(xin)负(bing)责(kuang),网上有一个吐槽:http://

2016-11-12 08:53:42 3383

原创 noip2003神经网络【Pascal】

这题就是个拓扑排序,注意题目要求:1、输入层的c[i]按照输入所给直接传递,不需要用公式-u[i]    (其实也没办法用公式,输入层入度为0,没有边连入)2、答案是最后状态非0的输出层(出度为0)3、只有当c[i]>0的时候才向下传递,只有此时对于它所连的点才使用公式var n,m,x,y,l,z,h,tl :longint; cur,p

2016-11-12 07:49:26 591

原创 noip2001一元三次方程求解(二分)

题目描述 Description有形如:ax3+bx2+cx+d=0  这样的一个一元三次方程。给出该方程中各项的系数(a,b,c,d  均为实数),并约定该方程存在三个不同实根(根的范围在-100至100之间),且根与根之差的绝对值>=1。要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后2位。提示:记方程f(x)=0,若存在2个数x1和x2,且x1,f(

2016-11-11 16:11:12 920

原创 bzoj 1303 中位数 题解

4.中位数(median.pas/c/cpp)【问题描述】给出1~n的一个排列,统计该排列有多少个长度为奇数的连续子序列的中位数是b。中位数是指把所有元素从小到大排列后,位于中间的数。【输入】第一行为两个正整数n和b ,第二行为1~n 的排列。【输出】输出一个整数,即中位数为b的连续子序列个数。 【样例输入】7 45 7 2 4 3 1 6 【样例输出】

2016-11-10 21:52:04 2205

原创 noip2012Vigenère密码【pascal】

水过水过....var l2,i,l,j:longint; m:array[1..1010] of char; kl:array[0..110] of longint; cl:array[0..1010] of longint; k,c:ansistring; ch:char;begin readln(k); readln(c)

2016-11-09 19:13:04 660

原创 noip2014联合权值 (贪心+数学推导)

然而我并不知道正解是什么然而我也不知道它想考什么但是贪心加上瞪眼观察法这这道题很简洁、很简单就AC了=w=这就叫做简约高端有内涵=w=由于距离为2,满足条件的两点一定会过一个中心点(他俩中间隔的那个点),我们把每一个点看成中心点分别处理,只考虑与它直接相连的点这样,题目要求的距离为2,显然是蓝的和蓝的之间才能满足要求由于根据题目,同两个点是可以算两遍的,所以我们这种...

2016-11-09 16:46:50 503

原创 取模运算

很多题目中的基础一个必须要了解的基础数论的常识=w=一、定义给定一个正整数p,任意一个整数n,一定存在等式 :n = kp + r ;其中 k、r是整数,且 0≤ r ,则称 k 为 n 除以p 的商,r为 n 除以 p 的余数。对于正整数 p 和整数 a,b,定义如下运算:(1)取模运算:a % p(或a mod p),表示a除

2016-11-09 09:51:04 1523

转载 CSDN博客积分标准(含常见问题和勋章等)

推荐博客规则CSDN博客所有用户均有机会推荐自己的博文到博客频道首页。发布博文时选中“发布到CSDN博客首页”单选框即可。用户推荐要求:a. 博主积分需超过100分,否则不能推荐自己博客文章到频道首页b. 普通用户每天有5次机会推荐自己的博文到博客频道首页,博客专家无次数限制。c.推荐到频道首页必需是高质量、对别人有帮助的文章d. 发布到首页后,一旦被管理员撤下,3天内将没有权限再推荐

2016-11-08 21:15:23 711

原创 NOIP2014生活大爆炸版石头剪子布【Pascal】

对于正常的N提高组选手来说,水过拿分就好=。=var n,l1,l2,ans1,ans2 :longint; i,j,k :longint; a,b :array[0..210] of longint; map :array[0..7,0..7] of boo

2016-11-08 21:11:59 822

原创 NOIP2014无线网络发射选址【Pascal】

其实,一看数据范围,水过就好,乱搞模拟就可以过=。=var d,n,ans,x,y,sum,t :longint; i,j,k,l :longint; map :array[0..200,0..200] of longint;begin read(d); read(n); for i:=

2016-11-08 21:09:04 375

原创 NOIP2015跳石头

其实openjudge上二分答案中也有这道题,叫做河中跳房子,应该是来自USACO的,只是考试题的题目描述中没有了奶牛=。=,连数据范围都一模一样好吧,最短距离最长,显然的二分答案=。=var len,n,m,l,mid,r,ans:longint; i :longint; sum

2016-11-08 07:39:33 876

原创 NOIP2015信息传递

Tarjan求最小强连通分量(注意要形成一个环而不是一个点,即size>1).Pascal:var n,x,l,time,top,t,minn:longint; i :longint; dfn,low,z,size :array[0..200010] of longint; ...

2016-11-08 07:05:02 513

空空如也

空空如也

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

TA关注的人

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