竞赛讨论区 > 【题解】牛客网NOIP赛前集训营-提高组(第五场)
头像
Key酱不是喵
发布于 2019-04-19 15:55
+ 关注

【题解】牛客网NOIP赛前集训营-提高组(第五场)

A同余方程
首先可以把区间变成前缀,只需要考虑问题 的情况就可以了
如果 ,不妨设 ,那么结果一定在区间 中,而 且每一个值出现了
对于更一般的情况,可以把 给表示成 log 段高位确定,低位随便放 的区间,然后两两之间统计答案


B旅游
相当于对每一条边设定一个 a[i] 表示通过次数,那么一个方案合法当且仅当 所有的 a[i] 都大于 0 切每一个点相邻的边的 a[i] 的和都是偶数
结论:只有最小生成树上的边的 a[i] 会 >1 证明:使用最小生成树上两点之间的路径一定是图中经过边权最大值最小的 路径可以直接得到
因此只需要求出最小生成树,然后在最小生成树上调整就可以了


C串串
t 是从 s 中删除一些字符得到的,t 一共有 C(c+d,c) 种,考虑逆过程,我们 在 t 上面插入 a-c 个 0,b-d 个 1 来得到 s
但是直接插入会计算重复,比如 t 是 000,插入一个 0 有 4 种位置,但是得 到的都是相同的结果
为了避免计算重复,我们限制所有统计的插入方案,必须对应着 t 在 s 中最 靠前的一次出现,比如在上面的例子中,我们只统计 0 插入到 最末尾的情 况。
显然在这样的要求下, 0 只能插入到 1 前面或者末尾,1 只能插入到 0 前 面或者末尾。因此在一共 c+d+1 个间隔中,除了末尾以外,其他间隔都只 能插入一种数字
可以枚举末尾有几个 0 几个 1,然后用插板法统计方案。


std

全部评论

(1) 回帖
加载中...
话题 回帖

等你来战

查看全部

热门推荐