一些瞎搞的题

字符串求方案数

CF 1084 C The Fair Nut and String 字符串求满足要求的子序列个数

求一个都是a的子序列, 且在原串里, 每两个a中间有一个b, 问有多少个这样的子序列.

首先. a和b之外的字符是没有意义的. 相连的b也是没有意义的, 相当于只有一个. 只需要用b把a分割成多个子段, 

每个子段取1个a/不取, 所以答案就是(连乘)(每个段长+1)-1.

 

CF 1096 B Substring Removal 去掉一个子串使得剩下的只有同一个字符, 求方案数.

不要考虑去掉哪个子串, 而是考虑剩下的字符串, 肯定是前缀/后缀/前缀+后缀, 分类讨论即可

 

贪心好难.

CF 1093 C Mishka and the Last Exam 给出b数组, b[i]=a[i]+a[n-i+1], 求满足条件的a数组. 

用b[i-1]算完之前的答案后, 会对b[i]的划分a[i]的最小值和a[n-i+1]的最大值有所限制.

先让a[n-i+1]贪心到限制下的最大值, 根据a[i]再加以调整. 如果无论如何都不能满足, 就是无解.

 

图/树上瞎搞

CF 1087 D Minimum Diameter Tree

树上分配边的总权值s, 使最长路最短.

官方题解证明了为什么是2*s/l, l为叶子的个数.

 

CF 1099 D Sum in the tree

知道奇数深度的点到根的距离, 求每个点的权值, 使得总点权和最小.

官方题解证明了为什么偶数的点直接取合理的最大值即是最优解.

 

CF 1093 D Beautiful Graph 图上求染色的方案数

每个点可以放1/2/3, 要求相邻的两个点的和是奇数, 问染色的方案数.

两个数和是奇数, 那么一个是1/3, 另一个是2. 那么其实就是将这个连通块中的点分成了A和B两部分.如果A的点染2的话, B就可以染1/3, 这样方案数就是2^|B|, 反之亦然. 所以总方案数就是2^|A|+2^|B|. 此外, 如果图上有奇数个点构成的环, 或者说一个点在已经染为A组, 又要被分到B组, 那么就出现了矛盾, 这样整个图就没有合法的方案了.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值