02 2015 档案
bzoj2281
摘要:有思维难度的好题这种题我们一般可以先从部分分考虑30%的分数k=2也就是黑白各一个不难发现如果初始黑白棋子相邻那必然是先手必败态否则一定是先手必胜那么30分的部分分是很容易拿到的,组合数学如果有多个棋子,必败态又是什么呢由于黑白棋是相间隔的,我们不妨依次编号1号白棋,1号黑棋……一直编到k/2,我们... 阅读全文
posted @ 2015-02-25 20:23 acphile 阅读(268) 评论(0) 推荐(0)
bzoj2285
摘要:完全是为了拼凑才出出来的吧先分数规划求出到基地入口的最小安全系数然后再最小点权覆盖集,只不过这里是带一定精度实数的流,其实是一样的 1 const inf=100000000; 2 eps=0.001; 3 type way=record 4 po,next,ti,... 阅读全文
posted @ 2015-02-25 19:37 acphile 阅读(197) 评论(0) 推荐(0)
bzoj1558
摘要:好题,初看以为只要差分然后维护相同的段数目但是请注意下面的情况2 3 5 8 91 2 3 4 这显然答案是3而不是4因此我们还要再维护ld,rd表示左右单独的段长度和s表示不包括左右单独的段,中间部分最少划分成几个等差数列具体维护见程序,比较复杂,但其实不难这题还有一个坑爹的地方,我一开始忘开in... 阅读全文
posted @ 2015-02-25 19:34 acphile 阅读(250) 评论(0) 推荐(0)
bzoj1822
摘要:显然是二分+最大流判定但比较烦的是判断线段和圆及其内部是否有公共点我的判断方法是错的,但是数据弱目前只知道推公式分类讨论,如果有简单的方法求教 1 const inf=10000007; 2 type node=record 3 flow,po,next:longint; 4 ... 阅读全文
posted @ 2015-02-25 19:27 acphile 阅读(203) 评论(0) 推荐(0)
bzoj1559
摘要:自动机上状压dp,把单词是否存在压成二进制位注意这里面某些单词会包含其他单词,所以某些自动机上有些状态点对应多个二进制位方案只要再顺着有方案的状态搜一遍即可 1 var trie,go:array[0..110,'a'..'z'] of longint; 2 f,q,v:array[0.... 阅读全文
posted @ 2015-02-25 18:50 acphile 阅读(207) 评论(0) 推荐(0)
bzoj1570
摘要:购买的机票限制和数据范围很容易想到是网络流不难想到每个城市按时刻拆点,这也是一个经典模型由于时间不会太大,我们穷举时间,不断在残留网络上建图,跑最大流直至总流量为k即可 1 const inf=100000007; 2 type node=record 3 po,next,flo... 阅读全文
posted @ 2015-02-25 18:47 acphile 阅读(152) 评论(0) 推荐(0)
bzoj1444
摘要:显然自动机上高斯消元根据AC自动机上的转移可以列出一系列方程但这个样的方程解出来全0是一组解说明有线性组合的情况考虑除非没人能赢,否则每个人赢的概率和为1那么我们只要把原来的第一个方程换成这个即可 1 var ans,d:array[0..110] of double; 2 a:arra... 阅读全文
posted @ 2015-02-25 18:43 acphile 阅读(183) 评论(0) 推荐(0)
bzoj1758
摘要:好题显然是分数规划,二分答案之后我们要找是否存在一条边数在[l,u]长度和为正的路径可以用树的分治来解决这个问题我们假设当前处理的是过点root的路径显然我们不好像之前男人八题里先算出所有答案,然后再剔除不合法的这里我们的统计方法是依次处理每个子树,算这个子树中的从根到某个节点的路径和之前处理的子树... 阅读全文
posted @ 2015-02-25 18:14 acphile 阅读(136) 评论(0) 推荐(0)
bzoj3091
摘要:最近屯题都忘了把解题报告写上了这道题是一道比较烦的LCT,我们先考虑每个点上到底要维护什么我们设路径上有n个点,从起点到终点编号为1~n显然期望=S/[(n+1)n div 2]S=∑a[i]*i*(n-i+1) //这里理解一下=∑a[i]*[i*(n+1)-i*i]=(n+1)*∑a[i]*i-... 阅读全文
posted @ 2015-02-22 21:04 acphile 阅读(173) 评论(0) 推荐(0)
poj1741 bzoj2152
摘要:树分治入门poj1741是男人八题之一,经典的树分治的题目这里用到的是点分治核心思想是我们把某个点i作为根,把路径分为过点i和不过点i先统计过点i这样的路径数,然后在统计其子树中的答案,这样就不断地划分成规模较小子问题。要使划分最优,我们每次都选的是树的重心 1 type node=record ... 阅读全文
posted @ 2015-02-16 12:12 acphile 阅读(150) 评论(0) 推荐(0)
bzoj2125 3047
摘要:仙人掌上的最短路,这里有详细的题解http://pan.baidu.com/s/1wzCpC我觉得讲的很清楚,不懂的见代码注释吧 1 type node=record 2 po,next,num:longint; 3 end; 4 5 var e,w:array[... 阅读全文
posted @ 2015-02-15 22:57 acphile 阅读(194) 评论(0) 推荐(0)
bzoj3669
摘要:不难想到从小到大穷举a,判断在携带不超过a个B型精灵的情况下最少携带多少个B型精灵这是一个经典的问题,显然要求出最小生成树,树上1到N路径上最大的边即是答案所以我们要动态维护一个最小生成树可以用link cut tree维护根据最小生成树的回路性质,我们加入一条边(u,v),保留树上u-v路径上最大... 阅读全文
posted @ 2015-02-15 22:54 acphile 阅读(172) 评论(0) 推荐(0)
bzoj2631 3282
摘要:这两题都是link cut tree的裸题之前看Qtree的论文,只会在确定父子关系的情况下连边和删边如果在任意两个点连边删边怎么做呢?这时候我们不能随意的将一个点的父节点设为另一个点,因为其中某个点的父节点可能已经被设为另外某点了其实很简单,连边的时候,我们只要把x变成其所在原树的根,这样x是没有... 阅读全文
posted @ 2015-02-15 22:45 acphile 阅读(156) 评论(0) 推荐(0)
bzoj2553
摘要:似乎挂精度了,不过这是一道好题 很明显看题知算法,知道这道题肯定是AC自动机上矩阵乘法 首先要明确一点,对一个字符串,怎样划分禁忌串最多 根据求最多不相交线段可知,从头到尾能划分出禁忌串就划分 根据这一点我们先考虑普通做法,设f[i,l]表示字符串长为l时,到点i的概率 则f[i,l]=∑f[j,l 阅读全文
posted @ 2015-02-15 20:41 acphile 阅读(157) 评论(0) 推荐(0)
WC2015 滚粗记
摘要:Day 0和南师附中诸人去杭州,想到这是第三次去杭州有点感动想到noi还要在杭州,简直……火车站接送好评如潮ym大学军,到学军领资料然后到浙大宿舍安顿,noi的书包还是挺不错的看起来宿舍还可以,我住在316,附中的人住在315(其实不是隔壁)同宿舍的还有JX的ljl,南外的yyl(之前就认识),还... 阅读全文
posted @ 2015-02-15 14:58 acphile 阅读(308) 评论(0) 推荐(0)
JSOI2015 Round1——完挂
摘要:感觉眼前天地转了转……Day 0 和zxy,zyh一同坐车去扬中,同行的还有llr路上zyh基本在睡觉……入住的宾馆各种坑爹,同一层住的两个房间一个有网一个没网我有幸入住了有网的房间,zyh在隔壁不过服务台还是感人肺腑的弄了个路由器过来,怒把密码设置成了jsoi2015晚上一起去吃了巴西烤肉,感觉... 阅读全文
posted @ 2015-02-07 22:48 acphile 阅读(352) 评论(0) 推荐(0)
bzoj3530
摘要:比较恶心的题目不难发现是在自动机上做数位dp注意要考虑前导0,题目中给出的233是幸运数,20233不是为此我非常猥琐的写了一个四维dp,用记忆化搜索实现 1 const mo=1000000007; 2 var dp:array[0..1,0..1,0..1205,0..1505] of lo... 阅读全文
posted @ 2015-02-07 11:00 acphile 阅读(141) 评论(0) 推荐(0)
bzoj1030
摘要:自动机之后按照自动机上的状态转移做dp就可以了不用矩乘还是很良心 1 const mo=10007; 2 var q,f:array[0..10010] of longint; 3 trie:array[0..10010,'A'..'Z'] of longint; 4 can:arr... 阅读全文
posted @ 2015-02-07 10:55 acphile 阅读(153) 评论(0) 推荐(0)
bzoj1449
摘要:竞赛图一般是把每场比赛当作一个点,然后和相应球队连边每场比赛一赢一输对两支球队都有影响看起来不好搞实际上我们可以先假设参加后面后面所有球队都输(每场比赛双输)然后对每场比赛我们选择一支球队赢计算增加的收益,这样就很简单了下面就是经典的平方流的做法 1 const inf=2147483647; ... 阅读全文
posted @ 2015-02-07 10:52 acphile 阅读(140) 评论(0) 推荐(0)
bzoj2434
摘要:利用了bzoj3172提到的性质,x串在y串中的出现的次数即为在fail树上以x结尾节点为根的子树中有多少个节点在y串上所以很明显我们要离线解决,我们先把询问按y分类存起来然后我们顺着操作顺序来,出现一个字符就把fail树上对应节点标为1,删除之后就改为0;当一个串输出之后,我们就统计跟他有关的询问... 阅读全文
posted @ 2015-02-07 10:51 acphile 阅读(173) 评论(0) 推荐(0)
bzoj3172
摘要:这里学习AC自动机其实对KMP和trie掌握好了之后很容易扩展成AC自动机的这里运用了一个性质由失配指针反向可以建成一棵fail树x串在y串中的出现的次数即为在fail树上以x结尾节点为根的子树中有多少个节点属于y串,这很好理解而推广到这题,在文章中出现的次数即为单词结尾节点为根的子树的规模注意这道... 阅读全文
posted @ 2015-02-07 10:50 acphile 阅读(170) 评论(0) 推荐(0)
bzoj2333
摘要:好题,先离线把连通块变成连续的区间每次连通块合并就相当于两个区间合并这样就轻易的用线段树解决了 1 type node=record 2 wh:string[2]; 3 x,y:longint; 4 end; 5 6 var lazy,tree:a... 阅读全文
posted @ 2015-02-07 10:43 acphile 阅读(133) 评论(0) 推荐(0)
bzoj1486
摘要:这里学了一个新知识叫分数规划这道题目是求∑w[i]/S最小首先二分答案k,然后如果某个环∑w[i]/S∑w[i]-k*S∑(w[i]-k)0 do29 begin30 y:=w[i].po;31 if d[y]>d[x]+w[i].len-mid then32 ... 阅读全文
posted @ 2015-02-07 10:41 acphile 阅读(144) 评论(0) 推荐(0)
bzoj2257
摘要:不难发现其实这个捣鼓过程就是一个辗转相减所以最小燃料是瓶容量的最小公约数然后穷举约数即可 1 var a:array[0..3000010] of longint; 2 n,k,x,i,m,j,t:longint; 3 4 procedure sort(l,r: longint); 5 ... 阅读全文
posted @ 2015-02-07 10:32 acphile 阅读(211) 评论(0) 推荐(0)
bzoj1093
摘要:首先缩点然后半连通其实就是缩点后节点数最多的链注意这里一定是一条链才一定是半连通然后重建图拓扑排序上做dp即可 1 type node=record 2 po,next:longint; 3 end; 4 5 var w,e:array[0..1000010] o... 阅读全文
posted @ 2015-02-07 10:30 acphile 阅读(157) 评论(0) 推荐(0)
bzoj1487
摘要:还是仙人掌,和1023一样的考虑方法比1023简单但比1040难环形dp的处理方法和1040一样 1 type node=record 2 po,next:longint; 3 end; 4 5 var f:array[0..100010,0..1] of lon... 阅读全文
posted @ 2015-02-06 11:42 acphile 阅读(205) 评论(0) 推荐(0)
bzoj1023
摘要:研究了一下仙人掌首先,仙人掌虽然不是树,但却有很强的树的既视感如果把每个环都看做一个点,那么他就是一棵树当然这不能直接缩环,因为环和环可以有一个交点如果是树,求直径都会做,令f[i]表示i到子树的最长距离然后弄一弄但现在是树套环,怎么弄?我们先根据dfs时间戳的思想,dfs下去,构成了一棵dfs树我... 阅读全文
posted @ 2015-02-06 11:41 acphile 阅读(184) 评论(0) 推荐(0)
bzoj2038
摘要:网上大片的莫队算法题解,先orz一下莫队什么不会莫队?没事我来篇低端的分块大法好啊,我们知道对于区间[l,r]答案是S/P P是一下子可以算出来的,S=∑(pj-1)*pj/2 pj表示区间内颜色为j的数目先记录ans[i,j]表示第i块到第j块之间的S然后再记录颜色g[i,j]表示到第i块颜色为j... 阅读全文
posted @ 2015-02-06 10:56 acphile 阅读(255) 评论(0) 推荐(0)
bzoj1415
摘要:比较简单的数学期望,先预处理出当聪聪在i,可可在j时聪聪往哪个点走然后做dp即可,我用了记忆化搜索实现 1 type node=record 2 po,next:longint; 3 end; 4 5 var d,pos:array[0..1010,0..1010... 阅读全文
posted @ 2015-02-06 10:47 acphile 阅读(135) 评论(0) 推荐(0)
bzoj2004
摘要:反正N0 do43 begin44 inc(t);45 x:=x shr 1;46 end;47 for i:=t-1 downto 0 do48 begin49 a:=c;50 b:=c;51 mul;52... 阅读全文
posted @ 2015-02-06 10:42 acphile 阅读(156) 评论(0) 推荐(0)