Codeforces 785D 数学
来源:互联网 发布:制作头像的软件 编辑:程序博客网 时间:2024/06/05 18:33
题意:求有多少种删除方法 使得剩余的串前n/2个字符全部是 ( 后n/2个字符全部是 )
题解:
我们定义第i位如果是 ( 则第 i 位必选 后面的 ( 全不要 前面的做全排列 这样就保证没有重复的
如果 i 前面有t1个( i 后面有t2个 ) 那么方案数就是
C(t1,0)*C(t2,1)+C(t1,1)*C(t2,2)+...+C(t1,min(t1,t2-1))*C(t2,min(t1,t2-1)+1)
我们有这个公式
假设n<m
C(n,0)*C(m,0)+C(n,1)*C(m,1)+...+C(n,n)*C(m,n)=C(n+m,m)
变换下
C(n,0)*C(m,m)+C(n,1)*C(m,m-1)+...+C(n,n)*C(m,m-n)=C(n+m,m)
这个数学意义就是 从一个袋子中有n个球和一个袋子有m个球的两个袋子中取出m个球的方案
那么第一个式子就是 从两个袋子中取出m-1个球的方案
所以
C(t1,0)*C(t2,1)+C(t1,1)*C(t2,2)+...+C(t1,min(t1,t2-1))*C(t2,min(t1,t2-1)+1)=C(t1+t2,t2-1)
ps:我的代码中t1是包含当前位的 所以求组合数时候要减去1
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>using namespace std;typedef long long ll;const ll mod=1000000007;char s[200005];ll a[200005],b[200005],fac[400005];ll ans=0;ll quick(ll a,ll k){ll ans=1;while(k){if(k&1)ans=ans*a%mod;a=a*a%mod;k/=2;}return ans;}ll C(ll n,ll m){return fac[n]*quick(fac[m],mod-2)%mod*quick(fac[n-m],mod-2)%mod;}int main(){scanf("%s",s+1);ll len=strlen(s+1);ll i,j;fac[0]=1;for(i=1;i<=400000;i++)fac[i]=fac[i-1]*i%mod;for(i=1;i<=len;i++){if(s[i]=='(')a[i]=a[i-1]+1;else a[i]=a[i-1];}for(i=len;i>=1;i--){if(s[i]==')')b[i]=b[i+1]+1;else b[i]=b[i+1];}for(i=1;i<=len;i++){if(s[i]!='(')continue;ll t1=a[i],t2=b[i+1];if(t1==0)continue;else if(t2==0)break;if(t1==1){ans+=C(t2,1); }else if(t2==1){ans+=1;}else{ans+=C(t1-1+t2,t2-1);ans=ans%mod;}}cout<<ans<<endl; return 0;}
0 0
- Codeforces 785D 数学
- Codeforces-785D (组合数学)
- codeforces 546D (数学 水)
- CodeForces 66D 数学构造
- codeforces 735 D. Taxes (数学)
- codeforces - 276D【贪心+数学】
- Codeforces 509D. Restoring Numbers 构造+数学
- codeforces 30D King's Problem? 数学
- Codeforces 615D Multipliers 【组合数学】
- CodeForces - 630D Hexagons! (数学规律)
- Codeforces 658D Bear and Polynomials【数学】
- Codeforces 615D Multipliers(数学推公式)
- Codeforces 584D Dima and Lisa 【数学】
- Educational Codeforces Round 15 D 数学推导
- Codeforces 633D Fibonacci-ish 数学+暴力
- codeforces 735 D Taxes(数学)
- codeforces - 735D -Taxes(数学)
- Longest Subsequence codeforces 632D 暴力数学
- 第十一章-文件和流——python基础教程(第二版)笔记
- 欢迎使用CSDN-markdown编辑器
- 取jsp传过来的pid的参数值要使用 ${param.pid}
- 根据,一次完整的http 请求过程,谈1 form提交中的post提交 2http url(即ip地址中的地址)在整个http请求中的作用
- CocoaPods卡住在Updating local specs repositories的解决办法
- Codeforces 785D 数学
- linux串口查找
- controller跳转至下页,tabBarController.navigationController小错误
- composer install 与 composer update 区别
- git创建、删除分支和tag
- 把 Firefox 的圆角标签,变成直角标签
- .NET Framework 入门
- AC4: Black Flag Graphics Tech Explained
- python之xml