数树
题意:
U 为所有 n个点的树的集合
对于给定的两棵树 S,T, 定义 F(S,T)=y公共的边数
Question1:给定 n,S,求 ∑T∈UF(S,T)
Question2:给定 n, 求 ∑S∈U,T∈UF(S,T)
做法:
我们可以把 yk贡献拆掉,yk=(y−1+1)k=∑ki=0(ki)(y−1)i
就转换成了选择一些边同时属于两棵树,贡献是 y边数
对于 Question1,如果这些边把 S 划分成了 m个联通块,每个联通块大小是 ai,利用 prufer 定理可以得到这个划分的数量是 nm−2∏mi=1ai,考虑一下组合意义,相当于找到树上若干个联通块,然后每一个联通块选一个根,这部分写一个树形 dp 就好了
对于 Question2 也是类似的想法,也是先枚举一下边集,计算两棵树都包含这个边集的方案数
ans=n−1∑m=0yn−m∑∑mi=1ai=nn!∏mi=1aai−2iai!m!×(nm−2m∏i=1ai)2=n!ynn4[xn]n−1∑m=0(n2y∑nj=1jjj!xj)mm!
写一个 exp 就好了(细节省略掉啦)
远古计算机
subtask1 题意理解点
subtask2 打表用 jmp 代替 if
subtask3 bfs 一下
subtask4 把图建出来网络流啊
subtask5 人类智慧易得他是一张网格图,所以构造一下就好了
I 君的商店
题意:
交互题
给定长度为 n的 0/1 序列 a,至少有一个 1,已知 1 个数的奇偶性, 定义一个集合 S的 value 为 ∑i∈Sai ,每次可以问交互库两个集合,交互库会返回 value 大小关系,如果两个集合 value 相等,那么交互库就会自己返回一个数,目标为确定整个序列。
做法:
先介绍一个 7N 的做法。
2N 确定最大值 a,然后每一次找两个还没有确定的 x,y,询问 x+y 和 a 的关系,然后再询问 x 和 y,代价为 5N 确定 x,y 中的一个数。
前面的 2N 并不是必要的,subtask3 告诉我们,可以二分确定一条递增的链。
优化一下之前7N的做法,先随便找一个a,然后找两个还没有确定的x,y,询问x+y和a以及x和y,假设 x≤y,如果 x+y≤a,那么 x=0,否则 y≥a,这样 y−>a就是找到的一条链。最后在这条链沿用 subtask3 的做法就好了。
7 条评论
Zepto · 2019年2月3日 4:57 下午
远古计算机的 Subtask 4 不是被出题人点名不是网络流嘛。
foreverpiano · 2019年2月4日 7:51 下午
类似于 CTSC 一道叫做家园的题目的建图。
枚举一下答案(周期数)记为 d,把一个点拆成 d 个点排成 d 层,第 i 层向第 i+1 层练边,然后如果满流了就好了啊。
简要题解是不是过于简要了啊 qwq。
litble · 2019年2月11日 7:24 下午
大神求教 QAQ
这个网络流做法是保证求出最优解,还是只是构造一种较优的方案?
为什么我这么做还是要 8 个周期才能出解啊?
foreverpiano · 2019年2月14日 7:11 下午
非常抱歉回复晚了。。
这个做法是我同学在考场中写的,他 A 了 subtask4,我实现了一下好像是要 8 个周期,7 个周期是 49 个数。
好像还有另外一种做法可以在 7 个周期出解,看起来很玄学的样子。差不多是先跑多源(51~100) 最短路,然后反过来 bfs,如果同一时刻有多个冲突了,开一个队列存一下,每一次传队首未传递的。
我怎么感觉网络流 hack 不掉啊,不知道发生了什么。(明天我去问问他考场怎么做的
litble · 2019年2月14日 7:29 下午
我在洛谷看到题解里有个人用了你说的玄学做法,我发现 TA 的构造代码跑出来的答案一个 node 用了多次,运行 checker 可以 7 个周期出解。修复一个 node 用多次后却无法 7 个周期出解了(可能是我修复的方法不对)。
我有点怀疑这题是不是有锅,它没说一个 node 用多次会记零分而是说用多次会出现未知错误,我怀疑这个未知错误可能反而导致错误的构造方案 AC。
litble · 2019年2月12日 3:43 下午
T2 能不能稍微讲仔细点啊 QAQ
Remmina · 2019年2月13日 9:49 上午
估计 foreverpiano 正在