Codeforces Round #496 (Div. 3) ABCDE1

http://codeforces.com/contest/1005



id:threeh20


A

数1出现的个数,水题


B

从尾部遍历记录后缀一样部分的长度


C

用map记录哪些数字出现过,并且出现了几次。

然后对于每一个数字,用2^0-2^32这32个数字去减,看剩下的数字在map中存不存在。

要注意如果剩下的数字和本来这个数字一样,那么map的值应该>1 才可以


D

dp[i]记录前i个中能够分割出能被三整除的最大答案。

对于每一个i,我们往前遍历3个数字来找最大值。

至于为什么只遍历3个就可以,我也不是很明白,可能有什么定理吧,可以记一下。

其实4 5 6 7 8 9 10 个都可以的。

E1

用一个map记录在m的左边中,<m的数量与>m的数量的差值。

即p[i]表示左边数字中<m的数量比>m的数量多i个的情况,i当然可以为负数。

这样遍历一边之后,答案初始化就是p[0]+p[-1]. 因为这题中位数在偶数个数字的情况下为偏小的那个。

再遍历右边。对于右边,对于每一个子串的情况,我们可以求得该串中>m的数量比<m的数量多多少个。

那么假如多j个,那么答案是不是就要加上左边<m的数量比>m的数量多j个或者多j-1个的情况,也就是加上p[j]+p[j-1]个。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值