Problem

对于数字串 S ,S[l]S[l] 表示串 S 的第 l 个数字( l 从 1 开始标记)。

F(j, i)=(Σil=jS[l])F(j,\ i) = (\Sigma_{l=j}^iS[l])

对于每个 i ,求 Σij=1F(j, i)\Sigma_{j=1}^iF(j, \ i)

限制条件

T ≤ 5

N ≤ 50000

k ≤ 100

解题思路

模拟暴力求每一项的结果:

第一项:(S1)k(S_1)^k

第二项:(S1+S2)k+(S2)k(S_1+S_2)^k+(S_2)^k

第三项:(S1+S2+S3)k+(S2+S3)k+(S3)k(S_1+S_2+S_3)^k+(S_2+S_3)^k+(S_3)^k

这样的复杂度将达到 O(N2×logK)O(N^2\times \log{K}) ,即使通过预处理出 45 万数(最大前缀和)的 K 次结果,复杂度仍将有 O(N2)O(N^2)

考虑前缀和表示结果

第一项:(Pre1−Pre0)k(Pre_1-Pre_0)^k

第二项:(Pre2−pre0)k+(Pre2−Pre1)k(Pre_2-pre_0)^k+(Pre_2-Pre_1)^k

第三项:(Pre3−Pre0)k+(Pre3−Pre1)k+(Pre3−Pre2)k(Pre_3-Pre_0)^k+(Pre_3-Pre_1)^k+(Pre_3-Pre_2)^k

将其展开:

第一项:C0kPrek1+C1kPrek−11(−Pre0)1+...+CkkPre01(−Pre0)kC_k^0Pre_1^k+C_k^1Pre_1^{k-1}(-Pre_0)^1+...+C_k^kPre_1^{0}(-Pre_0)^k

第二项:C0kPrek2+C1kPrek−12(−Pre0−Pre1)1+...+CkkPre02(−Pre0−Pre1)kC_k^0Pre_2^k+C_k^1Pre_2^{k-1}(-Pre_0-Pre_1)^1+...+C_k^kPre_2^0(-Pre_0-Pre_1)^k

第三项:C0kPrek3+C1kPrek−13(−Pre0−Pre1−Pre2)1+...+CkkPre03(−Pre0−Pre1−Pre2)kC_k^0Pre_3^k+C_k^1Pre_3^{k-1}(-Pre_0-Pre_1-Pre_2)^1+...+C_k^kPre_3^0(-Pre_0-Pre_1-Pre_2)^k

将 Pre0+Pre1+...+PrejPre_0+Pre_1+...+Pre_j 记作 PPrevjPPrev_j ,预处理出所有的 PPrevjPPrev_j 。

对每一项乘法求解的复杂度为 O(K)O(K) 。整体复杂度为 O(N×K)O(N\times K)

代码

#include<bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
int T, N, k;
long long pre[50010][110], pprev[50010][110], c[110][110];
char s[50010];
void init(){c[0][0]=1;for(int i=1;i<=100;++i){c[i][0]=c[i][i]=1;for(int j=1;j<i;++j)(c[i][j]=c[i-1][j-1]+c[i-1][j]) %= mod;}
}
int main()
{   init();scanf("%d", &T);while(T--){scanf("%d %d %s", &N, &k, s+1);for(int i=1;i<=N;i++){pre[i][0] = 1;pre[i][1] = pre[i-1][1] + s[i]-'0';for(int m=2;m<=k;m++)pre[i][m] = (pre[i][m-1] * pre[i][1]) % mod;}for(int i=1;i<=N;i++){for(int m=0;m<=k;m++)(pprev[i][m] = pprev[i-1][m] + (m%2?-1:1) * pre[i][m]) %= mod;}for(int i=1;i<=N;i++){long long ans = 0;for(int m=0;m<=k;m++){ans += c[k][m] * pre[i][k-m] % mod * pprev[i-1][m] % mod + mod;ans %= mod; }printf("%lld%c", ans, i==N?'\n':' ');}}
}

Hihocoder 1430 A Boring Problem (数论)相关推荐

  1. hihoCoder 1430 A Boring Problem(数论)

    https://hihocoder.com/problemset/problem/1430?sid=1202564 分析: AC代码: #include <iostream> #inclu ...

  2. 北京区域赛I题,Uva7676,A Boring Problem,前缀和差分

    A Boring Problem 题解 其实这题不难,只要想到了前缀和差分就基本OK了. 我们要求的是第iii项的式子: F(i)=(a1+a2+...+ai)k+(a2+...+ai)k+...+( ...

  3. 2020 ACM-ICPC澳门区域赛 B Boring Problem 主元法

    B Boring Problem 题意: 给出n≤100n \le 100n≤100个长度为m≤100m \le 100m≤100的串TiT_iTi​和一个串RRR,对每个RRR的前缀,每次在其末尾以 ...

  4. codeforces798C - Mike and gcd problem (数论+思维)

    原题链接:http://codeforces.com/contest/798/problem/C 题意:有一个数列A,gcd(a1,a2,a3...,an)>1 时称这个数列是"漂亮& ...

  5. hdu 4143 A Simple Problem 数论

    y^2 = n +x^2 这道题目我做了一个小时多小时,你说累不累. 首先两个 平方数之间的差距 1^2   2^2 3^2  4^2 5 ^2 之间的 差距是  3 5 7 9  所以 只要是  奇 ...

  6. 【hihocoder1430】 A Boring Problem

    大意: 给定n个数字序列S,定义 F(j,i)=(S[j]+S[j+1]+-+S[i−1]+S[i])kF(j, i) =(S[j] + S[j+1] + - + S[i-1] + S[i]) ^ k ...

  7. 安装Anaconda3时遇到的问题

                昨天总结了装python和pycharm.本来想着马上接着总结Anaconda 的,谁知道,这一安装,竟然花了我一天一夜的时间,(悲伤辣么大啊简直).遇到了各种各样的问题,重装 ...

  8. ACM学习历程—Hihocoder [Offer收割]编程练习赛1

    比赛链接:http://hihocoder.com/contest/hihointerview3/problem/1 大概有一个月没怎么打算法了.这一场的前一场BC,也打的不是很好.本来Div1的A和 ...

  9. 电子数字 网易游戏在线笔试 第一题 hihocoder

    题目链接 http://hihocoder.com/contest/ntest2016spring1/problem/1 这个题目有几个算法考点: (1)对于一个LED数码管(由7个发光二极管封装在一 ...

最新文章

  1. 常用代码整理(重要)
  2. mysql添加另一个表的某条数据库,在MySQL中,如何将一个表的内容复制到同一个数据库中的另一个表?...
  3. 截图后粘贴或拖拽上传
  4. 深度学习:网络的编程模式比较
  5. 【离散数学中的数据结构与算法】六 排列与组合二
  6. pushpop指令的操作数必须是字操作数_PLC的指令,电气人必须了解的基础内容
  7. jmeter 压测 RabbitMQ_单机
  8. Spark:通过start-slaves.sh脚本启动worker报错:Permission denied
  9. 浏览器接收响应消息并显示内容
  10. 滚动条滚动到页面底部继续加载
  11. 转载PHP的静态变量介绍
  12. FSCapture录屏软件
  13. 二维条码 PDF417 zxing-cpp解码详细过程
  14. SAP ABAP 字符串替换
  15. 来自网页的消息服务器不能创建对象,电脑IE浏览器提示“Automation服务器不能创建对象”怎么办...
  16. 手把手教你集成Andriod百度地图SDK
  17. AWS Elastic BeanStalk 部署错误总结
  18. 2020使用html、js、正则表达式做一个前端注册表单信息验证
  19. 干货 | PCB设计中焊盘的种类和设计标准
  20. 【C语言】验证哥德巴赫猜想:任何一个大于2的偶数均可表示成为两个素数之和。

热门文章

  1. 12款开源数据资产(元数据)管理平台选型分析(一)
  2. 淘宝开放平台TOP SDK调用对接淘宝或天猫
  3. 鸿蒙操作系统开发工具DevEco下载和安装(图文详细教程)
  4. jQuery-1.9.1源码分析系列(七) 钩子(hooks)机制及浏览器兼容
  5. F5亮相甲骨文全球大会,与甲骨文共同构筑云环境
  6. 深入理解CNI(容器网络接口)
  7. java中Static内存图解
  8. 【Java】数组:动态初始化 、静态初始化
  9. 数字电路基础知识系列(一)之LC滤波器基础知识
  10. 组合数学拉丁方是什么