【gcj 2008 1c】长数字串运算计数,递增子序列计数

第二题  长数字串运算计数

长度为D的数字串(D<=40)在其中加上加号、减号或者不加符号(不加符号则相邻数字连接为一个数,让结果至少能被2 3 5 7之一整除,问有多少种方法。

两次DP 

第一次用于区间[l, r] 对应的大整数对小整数 求余(见数字分类下的某篇文章)。 第二次是区间分解dp。

code: https://github.com/stevenberge/acm/blob/master/gcj/20081c2.cc


第三题 递增子序列计数

 给定一个数列,求严格的单增子序列的个数。给定数列长度有50w...

小数据: dp

cnt[i] = E(cnt[j<i], a[j]<a[i]), 时间复杂度O(n^2)

大数据:线段树/树状数组做区间查询Sum+数组元素离散化

for i=0 to n-1: 
      tree[b[i]] +=sum{  tree[b[j]], b[0]<=b[j]<b[i] }  //查询[0,i-1] 区间的sum
时间复杂度O(nlgn)
code:
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值