2013第六场多校

第六场多校:顾昱洲出题,数学题超多 ,继续跪。。。
1001 http://acm.hdu.edu.cn/showproblem.php?pid=4655   组合数学
(0)、比赛的时候,CJboy搞定了这题。 觉得题目可以一搞,赛后我也重做了一下。
(1)、设A为组合的所有方案数,A=a1*a2*a3*...an。然后每一个ai所带来的负面影响是min(ai,a[i-1])*(A/ai*a[i-1])。
(2)、min(x,y)*(A/(x*y)) 假设x>y 那么减去的就是 A/x。题目分析到这里解法就出来了,为了使得影响更小,则需要x尽量大。推敲一下发现,最优的方案就是大小交叉的排列。然后可以计算出每一位的负面影响,用A减去它就可以了。

1007 http://acm.hdu.edu.cn/showproblem.php?pid=4661  树形DP+数论
(0)、比赛的时候一直以为可以出,最后一个小时的时间,觉得足够了,可惜还是没有比赛的时候AC。当时NC地没有算好复杂度...太过乐观了,居然想都没想,就用了n*log(n)的求组合数的方法,赛后想起,何其NC。之前以为最快的求组合数的方法是n*log(n)的,看过标称过后才知道,还能O(n)预处理,O(1)求组合数!!!瞬间感觉这么多年白混了~~~
(1)、分析题目可以知道,消息必然会先聚集到一个点,然后四处扩赛。直观的想法就是枚举每个点作为根,遍历整棵树,求出拓扑序的方案数。树形DP优化,可以O(n)求出以某个点为根时的情况,然后递推出以所有点为根的情况。拓扑序方案的计算可以看成连个序列的合并,{a1,a2,a3,a4} {b1,b2,b3} 只要保证A之间的相对顺序不变,B之间的相对顺序不变,那么就是一个可行方案,答案就是C(|B|+|A|,|A|)。扩展到多个序列的话,可以先两个合并成一个,然后再与后面的合并。

1008 http://acm.hdu.edu.cn/showproblem.php?pid=4662 分析yy题
(1)、可以得到一个结论,就是讲U换成I并不会影响结果。将所有的U换成I过后,判断是否可行即可。

1011 http://acm.hdu.edu.cn/showproblem.php?pid=4665 图论、2sat
(0)、比赛的时候敲了300行的2SAT,尼玛赛后发现爆搜可以水过...难怪当时有人很早就过了.
(1)、分析一下题目,有一个条件很重要,每个数最多出现4次。假如说a出现了四次,分别按出现的顺序编号为a1,a2,a3,a4,那么匹配的情况只有两种:{a1->a2,a3->a4}或者是
{a1->a3 a2->a4}。2的情况可以看作4的一个特例,3和1是不可能出现的。
(2)、另外一个结论[a1 . . b1 . .  b2 . . a2] 如果a1->a2(表示a1匹配a2,他们处于不同的序列,且a1与a2相互对应)那么b1一定不与b2匹配,否则就是非法的。这种限制可以用2sat体现出来,作为2sat建图的依据。跑一遍2sat求出任意解即可。

原文地址:https://www.cnblogs.com/CooCoo/p/3252544.html