解析

再次被“组合数问题”吊打qwq
和上一次不一样的是,这次更加被恶心到了。
一方面受上一个组合数问题影响,另外出题人也十分阴间,一开始还给了个组合数的公式,更加使我坚定的认为这是一道数学推柿子题。
然后就开始各种打表+玩泥巴,没有任何卵用。
不过这题啥都不会暴力+几个部分分就有80,非常的棒,这考场谁还想正解啊。

让我们回归组合数的最基本的意义: (nm)\binom n m(mn​) 表示从 nnn 个物品中选 mmm 个的方案数。
那么题目要求的其实就是:从 nnn 个物品中选出物品个数模 kkk 结果为 rrr 的方案数
能想到这里这题基本就做完了。
这个东西似乎 openjudge 上还有一个题,当时是直接 O(nk∗k)O(nk*k)O(nk∗k) 的复杂度来暴力做。
而这个背包的合并显然是具有结合律的,所以可以直接像快速幂一样倍增的求出答案。
总复杂度 O(k2log⁡(nk))O(k^2\log(nk))O(k2log(nk))。
(如果那个卷积用 FFT 的话也许可以做到 O(klog⁡klog⁡(nk))O(k\log k\log (nk))O(klogklog(nk))?)
但巨大常数感觉可能甚至跑不过暴力卷积。

代码

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
#define debug(...) fprintf(stderr,__VA_ARGS__)
#define ok debug("OK\n")
using namespace std;const int N=1e6+100;
const int M=2e5+100;
const int inf=1e9;inline ll read(){ll x(0),f(1);char c=getchar();while(!isdigit(c)) {if(c=='-')f=-1;c=getchar();}while(isdigit(c)) {x=(x<<1)+(x<<3)+c-'0';c=getchar();}return x*f;
}
int n,k,r;
int mod;
struct node{ll w[55];node(){memset(w,0,sizeof(w));}
};
node operator * (const node &a,const node &b){node res;for(int i=0;i<k;i++){for(int j=0;j<k;j++){(res.w[(i+j)%k]+=a.w[i]*b.w[j])%=mod;}}return res;
}
node ksm(node x,ll k){node res;res.w[0]=1;while(k){if(k&1) res=res*x;x=x*x;k>>=1;}return res;
}signed main() {#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);freopen("a.out","w",stdout);
#endifn=read();mod=read();k=read();r=read();node x;x.w[1%k]++;x.w[0]++;node ans=ksm(x,1ll*n*k);printf("%lld\n",ans.w[r]);return 0;
}
/*
*/

P3746 [六省联考 2017] 组合数问题(倍增、dp)相关推荐

  1. [六省联考2017]组合数问题

    题目大意:求这个式子: ∑i=0∞Cik+rnk(modp) 这道题就是个数学题,做法其实就是优化的暴力--杨辉三角矩阵加速. 可以加速的原理,其实就是杨辉三角是一个一维递推,并且可以将递推描述为:复 ...

  2. 六省联考2017 Day1

    目录 2018.3.18 Test T1 BZOJ.4868.[六省联考2017]期末考试 T2 T3 BZOJ.4870.[六省联考2017]组合数问题(DP 矩阵快速幂) 总结 考试代码 T1 T ...

  3. 【BZOJ4873】[六省联考2017]寿司餐厅(网络流)

    [BZOJ4873][六省联考2017]寿司餐厅(网络流) 题面 BZOJ 洛谷 题解 很有意思的题目 首先看到答案的计算方法,就很明显的感觉到是一个最大权闭合子图. 然后只需要考虑怎么构图就行了. ...

  4. P3749 [六省联考2017]寿司餐厅(最大权闭合子图变形)

    P3749 [六省联考2017]寿司餐厅 最大权闭合子图 有两种建图方式 下面a[i]a_[i]a[​i]表示寿司iii的编号 第二种建图其实就是把di,i也当成一个寿司而已d_{i,i}也当成一个寿 ...

  5. BZOJ 4872 luogu P3750 [六省联考2017]分手是祝愿

    4872: [Shoi2017]分手是祝愿 Time Limit: 20 Sec  Memory Limit: 512 MB [Submit][Status][Discuss] Description ...

  6. [BZOJ4873][六省联考2017]寿司餐厅(最大权闭合子图)

    4873: [Shoi2017]寿司餐厅 Time Limit: 20 Sec  Memory Limit: 512 MB Submit: 490  Solved: 350 [Submit][Stat ...

  7. 黑吉辽沪冀晋六省联考 2017 BZOJ 486848694870487148724873

    趁着网络上题解还不是很多,赶快怒写一发骗一下访问量 这套题在BZOJ上的题号是4868-4873. 感觉还不错,就是有一些题弄起来有一点小恶心-- 这套题的部分分给得都很多,很良心的QAQ BZOJ ...

  8. bzoj千题计划262:bzoj4868: [六省联考2017]期末考试

    http://www.lydsy.com/JudgeOnline/problem.php?id=4868 假设 最晚出成绩的是第i天 预处理 cnt[i] 表示 有多少个学生 期望出成绩的那一天 &l ...

  9. [bzoj 4869] [六省联考2017] 相逢是问候

    相逢是问候 2017-09-09 Description Informatik verbindet dich und mich. 信息将你我连结.(s:看到这个就感觉有毒 B君希望以维护一个长度为n的 ...

最新文章

  1. Luna的大学读书史(1,Intro)
  2. Vivado 随笔(6) Timing Summary 相关讨论(一)
  3. 优化IIS7.5支持10万个同时请求的配置方法
  4. 解决function id unknown issue
  5. 对于SpringMVC框架使用的时候出现“警告: No mapping found for HTTP request with URI [/login]”的问题解决方案...
  6. 小米CC开机动画公布:扑面而来的青春活力
  7. 串口通信USART的波特率误差计算GD32、STM32
  8. 学安全测试需要多少钱?安全测试培训费一般多少?
  9. 携程校招2017编程题之股票最大利润
  10. PSM倾向匹配详细步骤和程序
  11. 计算机开机密码有几成,电脑密码设置有哪些类型 电脑开机密码忘了怎么解锁...
  12. 又写无关IT的东西:经济学术语
  13. 算法4 Java解答 2.4.18
  14. 使用fo-dicom读取Dicom文件的PixelData信息及像素信息(C# / fo-dicom)
  15. 微信视频号火力全开,新增直播三件套+巨大流量入口丨国仁网络
  16. SAP中WM仓库管理中关于仓储单位SU的应用理解
  17. 如何改变premiere pro的安装路径
  18. Java提取图片文字 tess4j
  19. c 语言 uint8 转char,关于c ++:将uint8_t *更改为char *?
  20. java获取当前时间代码(适合于是springboot+vue+java)

热门文章

  1. 一个女程序员征男友的需求说明书
  2. 趣图:你能Get到笑点么?
  3. sql语句ding_mybatis plus 写sql语句
  4. python 字符编码处理_浅析Python 字符编码与文件处理
  5. linux实验目的能学会什么意思,Linux实验.doc
  6. 参加计算机竞赛需要学什么知识,数学和计算机专业,我应该参加那些比赛?
  7. 7-34 任务调度的合理性 (25 分)(思路加详解+兄弟们冲呀)
  8. [Spring5]IOC容器_Bean管理_工厂Bean
  9. [Spring5]Spring框架概述
  10. [mybatis]映射文件_select_返回集合(List,Map)