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

bzoj 3027 [Ceoi2004]Sweet——生成函数

题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3027

化式子到 ( \mul_{i=1}^{n}(1-x^(m[i]+1)) ) / (1-x)^n 之后就不会了。

其实把分子拿出来后的部分可以展开成一个式子,用组合意义可知 k 次项系数是 C( n-1+k,n-1 ) 。

分子的那部分可以暴搜 2^n 种可能的项!一个项 k * x^y 对答案的贡献就是 k*( \sum_{i=L-y}^{R-y}C(n-1+i,n-1) );考虑完这 2^n 种情况对答案的贡献后答案就算好了。

组合数一列的求和可以是那个右下角位置的值。

模数可能让组合数不能除,但可以把要除的 n! 乘进模数里,即 % (mod*n!) ,最后就可以把答案除以 n! 再输出了。

注意负数。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const int N=15,M=1030;
int n,m,w[N],L,R;
ll mod,ans;
void upd(ll &x){x>=mod?x-=mod:0;}
ll calc(int k)
{
  ll ret=1;
  for(int i=k+1;i<=k+n;i++)
    ret=ret*i%mod;
  return ret;
}
void dfs(int cr,int xs,int cs)
{
  if(cs>R)return;
  if(cr>n)
    {
      ll d=calc(R-cs)+mod-(L-cs-1<0?0:calc(L-cs-1));
      upd(d);
      ans=(ans+xs*d)%mod;//xs may <0 so ans may <0!!!
      return;
    }
  dfs(cr+1,xs,cs);
  dfs(cr+1,-xs,cs+w[cr]+1);
}
int main()
{
  scanf("%d%d%d",&n,&L,&R);
  for(int i=1;i<=n;i++)scanf("%d",&w[i]);
  m=1;for(int i=1;i<=n;i++)m*=i; mod=(ll)2004*m;
  dfs(1,1,0); if(ans<0)ans+=mod;///
  printf("%lld\n",ans/m);
  return 0;
}

 

转载于:https://www.cnblogs.com/Narh/p/10029149.html

相关文章:

  • 将光源信息应用到立方体(一)
  • unity包内的内容读取
  • 栈和局部变量操作 将常量压入栈的指令
  • 将光源信息应用到立方体(二)
  • c++总结
  • DNS劫持
  • reflect vector
  • 113007
  • parallax mapping
  • 京东JData算法大赛高潜用户购买意向预测——复现(并没有),提供数据集
  • java 规范
  • 判定你的java应用是否正常(是否内存、线程泄漏)的一个简单方法
  • Java集合(本篇主要介绍List接口)
  • Shade4PointLights
  • 【笔记】Python集成开发环境——PyCharm 2018.3下载、注册、帮助文档
  • 2018一半小结一波
  • egg(89)--egg之redis的发布和订阅
  • ES学习笔记(12)--Symbol
  • iOS动画编程-View动画[ 1 ] 基础View动画
  • MYSQL 的 IF 函数
  • PHP那些事儿
  • Spring Cloud Feign的两种使用姿势
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 纯 javascript 半自动式下滑一定高度,导航栏固定
  • 动手做个聊天室,前端工程师百无聊赖的人生
  • 如何选择开源的机器学习框架?
  • 深入浅出webpack学习(1)--核心概念
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 自动记录MySQL慢查询快照脚本
  • # 数据结构
  • #HarmonyOS:基础语法
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (27)4.8 习题课
  • (搬运以学习)flask 上下文的实现
  • (二)学习JVM —— 垃圾回收机制
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (一)WLAN定义和基本架构转
  • .gitignore文件设置了忽略但不生效
  • .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  • .skip() 和 .only() 的使用
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @font-face 用字体画图标
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [20160902]rm -rf的惨案.txt
  • [ANT] 项目中应用ANT
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)
  • [bzoj1006]: [HNOI2008]神奇的国度(最大势算法)
  • [C/C++]数据结构 深入挖掘环形链表问题
  • [C++11 多线程同步] --- 条件变量的那些坑【条件变量信号丢失和条件变量虚假唤醒(spurious wakeup)】
  • [cocos2d-x]关于CC_CALLBACK
  • [C语言]一维数组二维数组的大小
  • [English]英语积累本
  • [HDOJ4911]Inversion