【CF521C】Pluses everywhere(贡献)
题意:有一个长为n的数字字符串,要求其中插入k个加号,求所有合法表达式的和之和
0<=k<n<=1e5
思路:参考官方题解,讲的很好很清楚
字符串下标从0开始
考虑第i位d[i]的贡献,分两类讨论
1.d[i]不是最后一个串
枚举i到该串最后一个字符的距离l
d[i]之前未知,从d[i]到d[i+l]之间确定没有加号,d[i+l]后面是加号
有n-1个间隔,确定l+1个没有加号,剩余n-l-2个间隔内要放k-1个加号,方案数即C(n-l-2,k-1)
2.d[i]是最后一个串
d[i]之前未知,从d[i]到d[i+l]之间确定没有加号
有n-1个间隔,确定l个没有加号,剩余n-l-1个间隔内要放k个加号,方案数即C(n-l-1,k)=C(i,k)
最后需要交换一下求和顺序

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int,int> PII;
typedef pair<ll,ll> Pll;
typedef vector<int> VI;
typedef vector<PII> VII;
typedef pair<ll,ll>P;
#define N 200000+10
#define M 200000+10
#define INF 1e9
#define fi first
#define se second
#define MP make_pair
#define pb push_back
#define pi acos(-1)
#define mem(a,b) memset(a,b,sizeof(a))
#define rep(i,a,b) for(int i=(int)a;i<=(int)b;i++)
#define per(i,a,b) for(int i=(int)a;i>=(int)b;i--)
#define lowbit(x) x&(-x)
#define Rand (rand()*(1<<16)+rand())
#define id(x) ((x)<=B?(x):m-n/(x)+1)
#define ls p<<1
#define rs p<<1|1
#define fors(i) for(auto i:e[x]) if(i!=p) const int MOD=,inv2=(MOD+)/;
//int p=1e4+7;
double eps=1e-;
int dx[]={-,,,};
int dy[]={,,-,}; char ch[N];
ll fac[N],inv[N],ten[N],s[N],d[N]; int read()
{
int v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} ll readll()
{
ll v=,f=;
char c=getchar();
while(c<||<c) {if(c=='-') f=-; c=getchar();}
while(<=c&&c<=) v=(v<<)+v+v+c-,c=getchar();
return v*f;
} ll C(int x,int y)
{
if(y>x) return ;
return fac[x]*inv[y]%MOD*inv[x-y]%MOD;
} int main()
{
//freopen("1.in","r",stdin);
//freopen("1.out","w",stdout);
int n=read(),K=read();
scanf("%s",ch);
rep(i,,n-) d[i]=ch[i]-'';
fac[]=;
rep(i,,2e5) fac[i]=fac[i-]*i%MOD;
inv[]=inv[]=;
rep(i,,2e5) inv[i]=inv[MOD%i]*(MOD-MOD/i)%MOD;
rep(i,,2e5) inv[i]=inv[i-]*inv[i]%MOD;
ten[]=;
rep(i,,2e5) ten[i]=ten[i-]*%MOD;
s[]=d[];
rep(i,,n-) s[i]=s[i-]+d[i];
ll ans=;
rep(i,,n-) ans=(ans+ten[i]*C(n-i-,K-)%MOD*s[n-i-]%MOD)%MOD;
rep(i,,n-) ans=(ans+d[i]*ten[n-i-]%MOD*C(i,K)%MOD)%MOD;
printf("%I64d\n",ans);
return ;
}
【CF521C】Pluses everywhere(贡献)的更多相关文章
- 【CF521C】【排列组合】Pluses everywhere
Vasya is sitting on an extremely boring math class. To have fun, he took a piece of paper and wrote ...
- Sprint2团队贡献分
团队贡献分: 郭志豪:31% http://www.cnblogs.com/gzh13692021053/ 杨子健:22%http://www.cnblogs.com/yzj666/ 谭宇森:23% ...
- # Hawk:开源贡献计划,设计,反思
Hawk在发布之后,收到了不少朋友的感谢和使用反馈,沙漠君表示非常开心.软件肯定有很多的问题和不足,还有很多可扩展的空间,因此我希望更多的朋友,能够参与到改进Hawk的计划中来,为开源世界作出努力. ...
- final阶段成员贡献分
项目名:连连看 组名:天天向上 组长:王森 组员:张政.张金生.林莉.胡丽娜 final阶段各组员的贡献分分配如下: 姓名 个人工作量 组长评价 个人评价 团队贡献总分 张政 11 7 6 6.00 ...
- 点餐系统3个sprint的团队贡献分
第一次冲刺贡献分 团员名字 贡献分 麦锦俊 18分 冯婉莹 21分 李康梅 19分 张鑫相 20分 曹嘉琪 22分 第二次冲刺贡献分 团员名字 贡献分 麦锦俊 19分 冯婉莹 20分 ...
- final阶段团队贡献分分配
小组名称:nice! 小组成员:李权 于淼 刘芳芳 韩媛媛 宫丽君 项目内容:约跑app 代码git的地址:https://git.coding.net/muziliquan/niceGroup.gi ...
- [课程设计]Sprint Three 回顾与总结&发表评论&团队贡献分
Sprint Three 回顾与总结&发表评论&团队贡献分 ● 一.回顾与总结 (1)回顾 燃尽图: Sprint计划-流程图: milestones完成情况如下: (2)总结 本次冲 ...
- 我为开源做贡献,网页正文提取——Html2Article
为什么要做正文提取 一般做舆情分析,都会涉及到网页正文内容提取.对于分析而言,有价值的信息是正文部分,大多数情况下,为了便于分析,需要将网页中和正文不相干的部分给剔除.可以说正文提取的好坏,直接影响了 ...
- 3个sprint的团队贡献分
第一次冲刺贡献分 成员名字 贡献分 101丘娟 23 108周诗琦 26 107杨晓霞 24 124陈程 27 第二次冲刺贡献分 成员名字 贡献分 101丘娟 23 108周诗琦 27 ...
随机推荐
- python之cookies
#cookies保存在文档头的内部,将cookies信息保存在文档中 userinfo={'} r=requests.get('http://httpbin.org/get',cookies=user ...
- 厉害了,ES 如何做到几十亿数据检索 3 秒返回!
一.前言 数据平台已迭代三个版本,从头开始遇到很多常见的难题,终于有片段时间整理一些已完善的文档,在此分享以供所需朋友的 实现参考,少走些弯路,在此篇幅中偏重于ES的优化,关于HBase,Hadoop ...
- CF39H 【Multiplication Table】
这题可以枚举出每个i,j 位置的数>需要用到进制转换 int zh(int x){ long long sum=0,i=0; while(x){ sum=sum+((x%n)*pow(10,i) ...
- python-redis-订阅和发布
发布:redishelper.py import redis class RedisHelper: def __init__(self): self.__conn = redis.Redis(host ...
- 在Linux中,没有文件创建时间的概念。只有文件的访问时间、修改时间、状态改变时间
在Linux中,没有文件创建时间的概念.只有文件的访问时间.修改时间.状态改变时间.也就是说不能知道文件的创建时间.但如果文件创建后就没有修改过,修改时间=创建时间:如果文件创建后,状态就没有改变过, ...
- [Nest] 05.nest之数据库
数据库 Nest 与数据库无关,允许您轻松地与任何 SQL 或 NoSQL 数据库集成.根据您的偏好,您有许多可用的选项.一般来说,将 Nest 连接到数据库只需为数据库加载一个适当的 Node.js ...
- JSTL标签+El表达式把list集合数据展示到 JSP页面
JSP页面 <%@ page import="cn.itcast.domain.User" %><%@ page import="java.util.L ...
- 比特(bit)和字节(Byte)
比特(bit)和字节(Byte) 基础的内容就不说了,这里是一个小的学习笔记 比特和字节的写法差异与应用场景 标准的写法中,正如标题中写的那样,是通过大小写来区分比特和字节的:比特的b应该是小写,而字 ...
- 教你用python爬取网站美女图(附代码及教程)
我前几篇文章都是说一些python爬虫库的用法,还没有说怎样利用好这些知识玩一些好玩的东西.那我今天带大家玩好玩又刺激的,嘻嘻!对了,requests库和正则表达式很重要的,一定要学会!一定要学会!! ...
- js之运算符(逻辑运算符)
逻辑运算符通常用于布尔型(逻辑)值.这种情况下,它们返回一个布尔值.它经常和关系运算符一起配合使用.“&&” .“!”和“ ||” 运算符会返回一个指定操作数的值,因此,这些运算符也用 ...