摘要: 题目大意:求可能的最小生成树有多少棵、解:这个要用一些证明,这里只写自己的一些看完各神牛的blog后的想法总结,证明并不严谨。首先我们用kruskal求最小生成树的原理是,用权值为c的边把一些强连通分量连起来,然后c从小到大递增,用并查集判可行性。如果反证伪,则在最后一步时,存在比c小的边把强连通分量连起来了,但kruskal的特性不会让这种事情发生。所以可以证明,在第n步,对于 相同的图 来说,如果存在不同的最小生成树,对应的不同只是在第n步选择的边的可能,而设原最小生成树的第n步用的边的大小为c,那么一定有其他最小生成树的第n步,用的边也一定是c,而且使用的边的数量相同,而且连接的强连通分 阅读全文
posted @ 2012-04-25 12:26 F.D.His.D 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给出一副无向联通图,求把一些边改成有向边之后,整幅图还是为一个强连通分量。p.s.一开始在本地做的,没读懂题意,其实是让你把边改有向而非删除边,好像要求改的数量最多,本地我提交了一个把边读入输出的程序本地spj过了= =,poj上wa了才真正想算法的。解:我原意是把桥找出来,然后其他遍历,不过好像调错的样子。听说了fjy刷了个16ms p组第一,所以去参考了下,发现就是tarjan途中,桥输出双向,其他单向即可(因为tarjan就是在找一个最大的环),所以tarjan图中处理输出就行(注意横叉边也要输一次,也就是说除了输环,桥输双向,其他任意),不过后来还是跑了32ms..View 阅读全文
posted @ 2012-04-25 11:27 F.D.His.D 阅读(223) 评论(0) 推荐(0) 编辑
摘要: 人总是一时懒,一时勤奋,可问题是,我勤奋的时候都用来吐槽了。看神牛的blog总是让人热血,2个月切了百来题,orz,我现在这是一天一题都没有的渣速度,到底是想干什么?果断待在小地方就少有人激励自己么。一切都只能靠自己了,没有什么人能帮你..吃饭的时候,总觉得自己和lyh和zjl没什么话说了,仿佛大家都不是同一个世界的人了,我总觉得,oi与非oi间有莫大的隔阂,或者说,这个只是我自己的傲慢而已。弱菜的傲慢,不值钱。马上就是省选了,坐等虐爆,我希望自己还能爬起来。话说我也是被lsn鄙视过的人。接下来的日子,请严格对待自己,wmz,不然,你就只能被淘汰,还是每天都写点东西,用音乐把自己与世隔绝吧,写 阅读全文
posted @ 2012-04-23 18:02 F.D.His.D 阅读(140) 评论(0) 推荐(0) 编辑
该文被密码保护。 阅读全文
posted @ 2012-04-20 18:08 F.D.His.D 阅读(9) 评论(0) 推荐(0) 编辑
摘要: 题目大意:求删去图上一些点后,剩下的连通块有多少个。解:自己终于开始有想法了,就是离线算法,把询问记录,全部删去后在反过来加上去,用并查集维护分量的根,囧死人的是不知道为什么用dfs求连通分量会wa,用并查集就ac了,而且运行时间真的有点慢了..对拍下看看哪里错了..View Code 1 const 2 inf='1.txt'; 3 maxm=211111; 4 maxn=maxm << 1; 5 type 6 type_edge=record 7 dest, next, op: longin... 阅读全文
posted @ 2012-04-13 13:27 F.D.His.D 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 题目:物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够按时到达目的地。但是修改路线是一件十分麻烦的事情,会带来额外的成本。因此物流公司希望能够订一个n天的运输计划,使得总成本尽可能地小。第一行是四个整数n(1<=n<=100)、m(1<=m<=20)、K和e。n表示货物运输所需天数,m表示码头总数,K表示每次修改运输路线所需成本。接下来e行每行 阅读全文
posted @ 2012-04-12 19:23 F.D.His.D 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 组合数学一下,快速幂..之前写过了= =,只是忘记了(a-b)mod def = ((a mod def+def) –b)mod defView Code 1 //bzoj 1008 hnoi2008prison 2 const 3 def=100003; 4 var 5 tmp, ans, m, n: qword; 6 function power(m, n: qword): qword; 7 var 8 base: qword; 9 begin10 base := m;11 power := 1;12 while n<>0 do... 阅读全文
posted @ 2012-04-12 19:22 F.D.His.D 阅读(230) 评论(0) 推荐(0) 编辑
摘要: Bzoj 1010 [hnoi2008]toy题目大意:给n个数,求将这些数切成数段,每段的长度为(sum+(i-j+1)-l)^2,求总的长度和最小。裸dp dp[i] := min(dp[k] + (f[i]-f[j]-c) 有 i<j,f[i] = sum[i] + I; c = l+1把方程转化为 y=kx+ans,ans即我们要求的数,x,y,k通过枚举的j可知,所以在斜率一定的情况下,直线 k?+ans 第一个碰到的决策点即使ans最小。然后通过斜率优化,可以证明决策点的最优,构建维护一个单调队列(点与点之间的斜率单调递增)(队尾维护),然后队首则维护首2点斜率大于k(k也可 阅读全文
posted @ 2012-04-12 15:52 F.D.His.D 阅读(247) 评论(0) 推荐(0) 编辑
摘要: Bzoj 1012 [jsoi2008]最大数maxnumber题目大意:维护一个队列,每次往队尾加一个数或者一个询问(末尾的l个数中的最大值是多少)解:我是用树状数组维护最大值,我沙茶地把lowbit(x)-1写成了lowbit(x-1),wa了若干次还以为是自己写错了。本题线段树亦可,然后还有一种单调队列+并茶几的算法,这个可用于离线的rmq问题,复杂度O(n),下面分段说。因为这个队列只会往后增加而不会减小,有一个单调队列的性质(维护单调递减),f[i]表示从第i个数到末尾的最大的数的下标,然后不断把这些最小的数连向他后面的最大的数即可。挺囧的是线段树参考了别人的程序,查了老半天说我擦a 阅读全文
posted @ 2012-04-10 20:00 F.D.His.D 阅读(217) 评论(0) 推荐(0) 编辑
摘要: Bzoj 1001题目大意:在一个平面图上(网格图+斜边),求最小割;解:因为点数可以去到10000000,所以网络流不行= =,我自己一开始自信满满地说好水啊,结果尼玛直接wa掉了,检查半天不出错,去看discuz,发现是用平面图转构图(参见国家集训队2008day2周冬神牛地论文)然后最短路。自己一个数组写小了,因为特殊的原因,提交在wa和re徘徊,自己检查一晚上代码..还以为是构图写错了,去q群里吐槽一下发现时数组的问题= =,改了立马ac..View Code 1 // bzoj 1001 [beijing 2006] 2 const 3 maxn=1001; ... 阅读全文
posted @ 2012-04-10 12:49 F.D.His.D 阅读(497) 评论(0) 推荐(0) 编辑