camp day2

来源:互联网 发布:苹果电脑双系统卸载mac 编辑:程序博客网 时间:2024/05/18 00:42

C题:3种不同颜色的机器人,每种都有大于1000个,在1000*1000的格子上,分布是给出的,问每个都走m步之后,每种颜色机器人都走到了同一个格子,不同颜色的终点要求不同,问有多少种不同的走法.
题解:首先我们考虑容斥, 单独考虑每一种机器人,然后直接相乘,但是有相同的,我们再减去a b一样,c不一样, 以及ac bc 然后加上abc. 现在要做的就是1000左右个点,要求走到一个点的方案数(在我们枚举要走到哪里的前提下),要求o(1)的算出来,但是不会做.我们会做一维的,就是一个组合数.所以我们用一种方法技巧,计算(x + y, x - y),然后这是独立的,同时一定会走m步,然后再相乘就好了.
D题:1000个球,每个球有标号,现在有一个双端队列,每次一个球相等概率的往前或者往后放,然后放完之后算 xi > x(i+1)的个数cnt, cnt ^ k 的期望.k是给出的,k~50. 最后输出期望数*2^n.
题解:先定状态f[i][0/1][另外一端的数是多少] = num, 然后转移就是看i+1个球放在哪里,然后更新f[i+1]层, 如果新放的数多了一个逆数,那么我们不会只用num来搞出来新的num值,因为他是一个i个不同的东西合并出来的一个数.但是我们用x^k = 一个含斯特灵数的东西, 再换个序,然后需要f加一个[L]的来记录,就能够做. 公式在纸上推了没有往上敲QAQ
E题:一个n~1e5的字符串,给出m~1e5个现实xl, xr, yl yr.保证长度一样,意思是这样两段完全相等.现在每个位置只能填26个不同的东西,问有多少种合法的情况.
题解:首先是分段办法1:n个段长为sqrt(n)的,然后每次大段和剩下的小数字暴力,然后剩下了一堆段的关系.然后对于一个并查集中的段,统一for一下.
分段方法2:每次段都是2的幂次,从大往小走,每一层建一个树,就足够描述信息了,也就是n条边.每次都带着n条边往下一层走,往下一层走之前再跑出一个树.

0 0
原创粉丝点击