Codeforces #320 Div1 解题报告

Source

Codeforces #320 Div1

A

首先排除无解的。。b不能比a大
然后最小的肯定是b。。不行的话我们就慢慢放大x,发现总是某个三角形的右边碰到(a, b)。而且是在这个点左边且离这个点最近的那条斜边,然后就算算前面有多少个边,再列两个方程解一下x。。
题解一堆式子看着就头疼。。
貌似有用二分过的。。

B

感觉比A简单多了。。看了就秒了。。A题我想了好久。。
肯定是把所有操作给一个数。。那个数肯定有最大的二进制的1。。不见得是最大的那个数。。反正直接枚举是哪个就好了。。
然后我比较蠢地算全部数每个二进制位共有多少个1,然后考虑去掉一个数,会不会导致那位变成0。实际上可以按官方题解,求个前缀或和及后缀或和。

C

题解的两个做法都不错哦。。几何的那个不太懂怎么写。。
我的做法是几何的思想,三分的写法。。
首先考虑原序列,就是求最大子串和,或者最小子串和(如果得到的是负数)。如果是后者绝对值大的话我们就全部数取个负号,不会影响结果。然后就可以画图了。。每个区间是 abs(ri=la[i]+(rl+1)x) ,也就是斜率和截距固定的一堆射线(有的走到y=0再折回来)。。对于每个x,取的是射线中y最大的。这是一个下凸壳。。准确来说是只有一个极值点也是最值的那种,也就是一个单峰函数。。然后就可以三分x找到那个最小值了。。

D

题解的dp做法看不懂,状态讲得太不详细了。。评论里的还能理解。。一段连续相同的肯定得一起考虑,对于一个连续相同子串aaa,我们删掉其中一个a,在某个位置补上一个字符,使得LCS为n-1就好,这个可以推一推。然后发现会有重复的,比如原串是ab,变成ba,LCS可以是a可以是b,也就是说删a和删b都会得到这个新串,造成重复的统计。这种情况出现在类似ababa的交替子串上。减去就好。

E F

还没看过。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值