「Ceoi2004」Sweet
时间:2019-10-17
本文章向大家介绍「Ceoi2004」Sweet,主要包括「Ceoi2004」Sweet使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
\[ \begin{align} ans&=\prod_{i=1}^{n} (1+x+x^2+\cdots+x^{M[i]})\\ &=\prod_{i=1}^{n}{(x^{M[i]+1}-1)\over x-1}\\ &=(1-x)^{-n}\prod_{i=1}^{n}(1-x^{M[i]+1}) \end{align} \]
\[ (1-x)^{-n}=\sum_{k=0}^{+\infty}C_{n+k-1}^{n-1}x^k \]
对于\(\prod_{i=1}^{n}(1-x^{M[i]+1})\)的一项\(x^i\)
贡献为
\[
\sum_{k=a-i}^{b-i} C_{n+k-1}^{n-1}
\]
而
\[
\sum_{k=0}^{lim} C_{n+k}^k=C_{n+lim+1}^{lim}
\]
故复杂度为\(o(2^n)\)
#include <bits/stdc++.h>
//#pragma GCC target("avx,avx2,sse4.2")
#define rep(q, a, b) for (int q = a, q##_end_ = b; q <= q##_end_; ++q)
#define dep(q, a, b) for (int q = a, q##_end_ = b; q >= q##_end_; --q)
#define mem(a, b) memset(a, b, sizeof a)
#define debug(a) cerr << #a << ' ' << a << "___" << endl
using namespace std;
// char buf[10000000], *p1 = buf, *p2 = buf;
#define Getchar() getchar()//p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, 10000000, stdin), p1 == p2) ? EOF : *p1++
void in(int &r) {
static char c;
r = 0;
while (c = Getchar(), c < 48);
do
r = (r << 1) + (r << 3) + (c ^ 48);
while (c = Getchar(), c > 47);
}
const int mod=2004;
int val[15];
int mul;
long long Mod;
int C(int a,int b){
if(b>a)return 0;
long long v=1;
rep(q,a-b+1,a)v=1LL*v*q%Mod;
return v/mul;
}
int a,b;
int n;
int ans;
void dfs(int x,int len,int v){
if(x==n+1){
ans=(ans+v*(C(n+b-len,n)-C(n+a-len-1,n)))%mod;
return;
}
dfs(x+1,len,v);
dfs(x+1,len+val[x]+1,-v);
}
int gcd(int a,int b){
return !b?a:gcd(b,a%b);
}
int main(){
in(n),in(a),in(b);
mul=1;
rep(q,1,n)in(val[q]),mul*=q;
Mod=1LL*mul*mod;
dfs(1,0,1);
ans=(ans+mod)%mod;
cout<<ans<<endl;
return 0;
}
原文地址:https://www.cnblogs.com/klauralee/p/11692591.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 买卖股票问题合集
- 服务出错优先考虑及排查手册(待续整理)
- Android 沉浸式全屏
- Spark SQL 小文件问题处理
- vue常用的修饰符有哪些?
- 在 ASP.NET WebAPI 中使用 DataAnnotations 验证数据
- CSS简笔画:纯CSS绘制一艘邮轮
- NHibernate 多对多映射的数据更新
- 使用 AngularJS 的 $resource 连接 WebAPI Controller
- CentOS7.8下编译muduo库找不到Boost库报错的解决方法
- 使用 OWIN 搭建 OAuth2 服务器
- Hive on spark下insert overwrite partition慢的优化
- 系统学习Lambda表达式
- 一文搞懂 Flink Kafka Consumer 类两阶段提交
- 在 Nowin 下运行 ASP.NET 5 Beta 2