随笔分类 - bzoj题解
摘要:题目大意:lL公司有N个工厂,由高到底分布在一座山上。如图所示,工厂1在山顶,工厂N在山脚。 由于这座山处于高原内陆地区(干燥少雨),L公司一般把产品直接堆放在露天,以节省费用。突然有一天,L公司的总裁L先生接到气象部门的电话,被告知三天之后将有一场暴雨,于是L先生决定紧急在某些工厂建立一些仓库以免产品被淋坏。 由于地形的不同,在不同工厂建立仓库的费用可能是不同的。第i个工厂目前已有成品Pi件,在第i个工厂位置建立仓库的费用是Ci。对于没有建立仓库的工厂,其产品应被运往其他的仓库进行储藏,而由于L公司产品的对外销售处设置在山脚的工厂N,故产品只能往山下运(即只能运往编号更大的工厂的仓库),当然
阅读全文
摘要:题目大意:求可能的最小生成树有多少棵、解:这个要用一些证明,这里只写自己的一些看完各神牛的blog后的想法总结,证明并不严谨。首先我们用kruskal求最小生成树的原理是,用权值为c的边把一些强连通分量连起来,然后c从小到大递增,用并查集判可行性。如果反证伪,则在最后一步时,存在比c小的边把强连通分量连起来了,但kruskal的特性不会让这种事情发生。所以可以证明,在第n步,对于 相同的图 来说,如果存在不同的最小生成树,对应的不同只是在第n步选择的边的可能,而设原最小生成树的第n步用的边的大小为c,那么一定有其他最小生成树的第n步,用的边也一定是c,而且使用的边的数量相同,而且连接的强连通分
阅读全文
摘要:题目大意:求删去图上一些点后,剩下的连通块有多少个。解:自己终于开始有想法了,就是离线算法,把询问记录,全部删去后在反过来加上去,用并查集维护分量的根,囧死人的是不知道为什么用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...
阅读全文
摘要:题目:物流公司要把一批货物从码头A运到码头B。由于货物量比较大,需要n天才能运完。货物运输过程中一般要转停好几个码头。物流公司通常会设计一条固定的运输路线,以便对整个运输过程实施严格的管理和跟踪。由于各种因素的存在,有的时候某个码头会无法装卸货物。这时候就必须修改运输路线,让货物能够按时到达目的地。但是修改路线是一件十分麻烦的事情,会带来额外的成本。因此物流公司希望能够订一个n天的运输计划,使得总成本尽可能地小。第一行是四个整数n(1<=n<=100)、m(1<=m<=20)、K和e。n表示货物运输所需天数,m表示码头总数,K表示每次修改运输路线所需成本。接下来e行每行
阅读全文
摘要:组合数学一下,快速幂..之前写过了= =,只是忘记了(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...
阅读全文
摘要: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也可
阅读全文
摘要:Bzoj 1012 [jsoi2008]最大数maxnumber题目大意:维护一个队列,每次往队尾加一个数或者一个询问(末尾的l个数中的最大值是多少)解:我是用树状数组维护最大值,我沙茶地把lowbit(x)-1写成了lowbit(x-1),wa了若干次还以为是自己写错了。本题线段树亦可,然后还有一种单调队列+并茶几的算法,这个可用于离线的rmq问题,复杂度O(n),下面分段说。因为这个队列只会往后增加而不会减小,有一个单调队列的性质(维护单调递减),f[i]表示从第i个数到末尾的最大的数的下标,然后不断把这些最小的数连向他后面的最大的数即可。挺囧的是线段树参考了别人的程序,查了老半天说我擦a
阅读全文
摘要:Bzoj 1001题目大意:在一个平面图上(网格图+斜边),求最小割;解:因为点数可以去到10000000,所以网络流不行= =,我自己一开始自信满满地说好水啊,结果尼玛直接wa掉了,检查半天不出错,去看discuz,发现是用平面图转构图(参见国家集训队2008day2周冬神牛地论文)然后最短路。自己一个数组写小了,因为特殊的原因,提交在wa和re徘徊,自己检查一晚上代码..还以为是构图写错了,去q群里吐槽一下发现时数组的问题= =,改了立马ac..View Code 1 // bzoj 1001 [beijing 2006] 2 const 3 maxn=1001; ...
阅读全文

浙公网安备 33010602011771号