当前位置: 首页 > news >正文

CF520E Pluses everywhere 题目分析

题目概述

给定一个 \(n\) 位的十进制数,可以在数字之间加恰好 \(k\)+,得到一个式子,求每种方案的这个式子的和。

\(10^9+7\) 取模,数据范围:\(1\leq n\leq 10^5\)

分析

有点意思。

不难想到设 \(f_{i,j}\) 表示前 \(i\) 个数填 \(j\) 个加号的方案和,转移是简单的,考虑在不在前面放 + 即可。

但是这不是本题的思路。

像这种求所有的全局的方案,一般考虑每一个位置对于总共答案的贡献是多少。

我们考虑从前往后的第 \(i\) 个位置,这个数填在当前分割出来的数的从前往后数第 \(j\) 位,显然 \(j\leq n - i + 1\)

那么对于当前他的数值方面的贡献为 \(a_i\times 10^j\),那么它的方案为 \(C_{n-1-(j-1)-1}^{k-1}=C_{n-j-1}^{k-1}\)

为什么是这个组合数?

\(n-1\) 是我们可选的位置,后面再 \(-1\) 是因为肯定所分割出来的数的后面有一个加号,再加上其长度为 \(j\),因此占有 \(j-1\) 个位置不能填 + 号。

那么这就引申出一个问题,当我的 \(j=n-i+1\) 时,那么我的后面是填不了 + 号的,因此此时方案为 \(C_{n-1-(j-1)}^{k}=C_{n-j}^k\)

形式化地讲就是:

\[\sum_{i=1}^n\left(10^{n-i+1}\times a_i\times C_{i-1}^{k}+\sum_{j=1}^{n-i}10^j\times a_i\times C_{n-j-1}^{k-1}\right) \]

我们注意到后面的组合数跟 \(i\) 无关,考虑先枚举 \(j\),有:

\[\sum_{j=1}^n\left(a_{n-j+1}\times 10^j\times C_{n-j}^{k}+C_{n-j}^{k-1}\sum_{i=1}^{n-j}a_i\right) \]

显然后面那一个求和是可以前缀和优化的。

代码

时间复杂度 \(\mathcal{O}(n)\)

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <stdlib.h>
#include <vector>
#define int long long
#define N 100005
using namespace std;
const int mod = 1e9 + 7;
int jc[N],inv[N],sum[N],a[N];
int C(int a,int b) {if (a < 0 || b < 0 || a < b) return 0;return jc[a] * inv[b] % mod * inv[a - b] % mod;
}
signed main(){jc[0] = jc[1] = inv[0] = inv[1] = 1;for (int i = 2;i < N;i ++) jc[i] = jc[i - 1] * i % mod,inv[i] = (mod - mod / i) * inv[mod % i] % mod;for (int i = 2;i < N;i ++) inv[i] = inv[i - 1] * inv[i] % mod;int n,k;scanf("%lld%lld",&n,&k);for (int i = 1;i <= n;i ++) {char x;cin >> x;a[i] = x - '0';sum[i] = sum[i - 1] + a[i];}int ans = 0;for (int i = 1,t = 1;i <= n - k;i ++,t = t * 10 % mod) {ans = (ans + t * a[n - i + 1] % mod * C(n - i,k) % mod) % mod;ans = (ans + t * sum[n - i] % mod * C(n - i - 1,k - 1) % mod) % mod;}cout << ans;return 0;
}
http://www.sczhlp.com/news/129921/

相关文章:

  • 网站负责人拍照网站域名购买后能修改吗
  • 北京网站设计多少钱签名设计在线
  • 网站建设数据库多少钱网站的ftp地址怎么查
  • java里面的IO流分为哪几种,他们的区别是什么呢
  • ReLU函数及它的导数
  • 网站做外链的具体步骤wordpress可以做相册吗
  • 国外网站打开很慢dnswordpress做相册
  • 天津公司建设网站怎样做一个简单的网站
  • 做企业平台的网站深圳工业设计展2024
  • 公司网站开发人员的的工资多少做网站网页需要多久
  • wordpress弹出式注册页面seo矩阵培训
  • 网站推广的作用画册设计模板图片
  • 长沙网站建设推荐模板网站制作视频
  • 上海网站建设86215吴忠建设网站
  • 知名网站制作泉州地区网站建设公司
  • 如何进入优容网站北京做网站推广兼职
  • 竞价网站如何设计建设注册管理中心网站
  • 基础数论
  • 第一次个人编程作业-论文查重
  • 使用Claude代码子代理生成项目特定提交消息的技术实践
  • 谁家网站用户体验做的好广告制作平台
  • 中小企业网站建设费用购买了网站如何使用吗
  • 怎么在自己的电脑上做网站手机网站设计要素
  • 制作的网站图片不显示专做h5的公司网站
  • 特色的合肥网站建设博兴网站建设
  • 网站运营方案案例织梦57网站的友情链接怎么做
  • 东莞大岭山网站建设黑龙江骏域建设网站专家
  • 商城建站流程企业销售网站
  • 建筑找活网站哪个最好成都网站建设小公司
  • 走迷宫(BFS)