[SHOI 2017] 组合数问题
[题目链接]
https://www.lydsy.com/JudgeOnline/problem.php?id=4870
[算法]
回顾组合数的定义 :
C(N , M)表示将N个小球放入M个盒子里的方案数
我们发现题目要求的其实就是将nk个小球放入模k意义下于r个盒子中的方案数
不妨设Fi , j表示放了i个小球 , j个盒子(模k意义下)的方案数
有 : Fi , j = Fi - 1 , j - 1 + Fi - 1 , j
矩阵乘法即可
时间复杂度 : O(K ^ 3logNlogK)
[代码]
#include<bits/stdc++.h>
using namespace std;
const int N = 1e9 + ;
const int K = ;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld; int n , p , k , r;
int mat[K][K]; template <typename T> inline void chkmax(T &x , T y) { x = max(x , y); }
template <typename T> inline void chkmin(T &x , T y) { x = min(x , y); }
template <typename T> inline void read(T &x)
{
T f = ; x = ;
char c = getchar();
for (; !isdigit(c); c = getchar()) if (c == '-') f = -f;
for (; isdigit(c); c = getchar()) x = (x << ) + (x << ) + c - '';
x *= f;
}
inline void multipy(int a[K][K] , int b[K][K])
{
static int res[K][K];
for (int i = ; i < k; ++i)
{
for (int j = ; j < k; ++j)
{
res[i][j] = ;
}
}
for (int x = ; x < k; ++x)
{
for (int i = ; i < k; ++i)
{
for (int j = ; j < k; ++j)
{
res[i][j] = (res[i][j] + 1ll * a[i][x] * b[x][j] % p) % p;
}
}
}
for (int i = ; i < k; ++i)
{
for (int j = ; j < k; ++j)
{
a[i][j] = res[i][j];
}
}
}
inline void exp_mod(int mat[K][K] , ll n)
{
static int b[K][K];
for (int i = ; i < k; ++i)
{
for (int j = ; j < k; ++j)
{
b[i][j] = (i == j);
}
}
while (n > )
{
if (n & ) multipy(b , mat);
multipy(mat , mat);
n >>= ;
}
for (int i = ; i < k; i++)
{
for (int j = ; j < k; j++)
{
mat[i][j] = b[i][j];
}
}
} int main()
{ read(n); read(p); read(k); read(r);
for (int i = ; i < k; ++i)
{
++mat[i][i];
++mat[i][((i - ) % k + k) % k];
}
exp_mod(mat , (ll)n * k);
printf("%d\n" , mat[r][]); return ;
}
[SHOI 2017] 组合数问题的更多相关文章
- P3746 [六省联考2017]组合数问题
P3746 [六省联考2017]组合数问题 \(dp_{i,j}\)表示前\(i\)个物品,取的物品模\(k\)等于\(r\),则\(dp_{i,j}=dp_{i-1,(j-1+k)\%k}+dp_{ ...
- bzoj千题计划263:bzoj4870: [六省联考2017]组合数问题
http://www.lydsy.com/JudgeOnline/problem.php?id=4870 80分暴力打的好爽 \(^o^)/~ 预处理杨辉三角 令m=n*k 要求满足m&x== ...
- [BZOJ4870][六省联考2017]组合数问题(组合数动规)
4870: [Shoi2017]组合数问题 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 748 Solved: 398[Submit][Statu ...
- 洛谷P3746 [六省联考2017]组合数问题
题目描述 组合数 C_n^mCnm 表示的是从 n 个互不相同的物品中选出 m 个物品的方案数.举个例子,从 (1;2;3) 三个物品中选择两个物品可以有 (1;2);(1;3);(2;3) 这三种 ...
- P3746 【[六省联考2017]组合数问题】
题目是要我们求出如下柿子: \[\sum_{i=0}^{n}C_{nk}^{ik+r}\] 考虑k和r非常小,我们能不能从这里切入呢? 如果你注意到,所有组合数上方的数\(\%k==r\),那么是不是 ...
- 洛谷$P$3746 [六省联考2017]组合数问题 $dp$+矩乘+组合数学
正解:$dp$+矩乘+组合数学 解题报告: 传送门! 首先不难发现这个什么鬼无穷就是个纸老虎趴,,,最多在$\binom{n\cdot k+r}{n\cdot k}$的时候就已经是0了后面显然不用做下 ...
- BZOJ4870 [六省联考2017] 组合数问题 【快速幂】
题目分析: 构造f[nk][r]表示题目中要求的东西.容易发现递推公式f[nk][r]=f[nk-1][r]+f[nk-1][(r-1)%k].矩阵快速幂可以优化,时间复杂度O(k^3logn). 代 ...
- SHOI 2017 相逢是问候(扩展欧拉定理+线段树)
题意 https://loj.ac/problem/2142 思路 一个数如果要作为指数,那么它不能直接对模数取模,这是常识: 诸如 \(c^{c^{c^{c..}}}\) 的函数递增飞快,不是高精度 ...
- [六省联考2017]组合数问题 (矩阵优化$dp$)
题目链接 Solution 矩阵优化 \(dp\). 题中给出的式子的意思就是: 求 nk 个物品中选出 mod k 为 r 的个数的物品的方案数. 考虑朴素 \(dp\) ,定义状态 \(f[i][ ...
随机推荐
- C# 获取COM对象 ProgId ClsId
https://social.msdn.microsoft.com/Forums/vstudio/en-US/fe262fdd-a93f-427e-8771-2c64e7ac3064/getting- ...
- Odoo(OpenERP)开发实践:通过XML-RPC接口訪问Odoo数据库
Odoo(OpenERP)server支持通过XML-RPC接口訪问.操作数据库,基于此可实现与其它系统的交互与集成. 本文是使用Java通过XMLRPC接口操作Odoo数据库的简单演示样例.本例引用 ...
- 翻翻git之---有用的欢迎页开源库 AppIntro
转载请注明出处:王亟亟的大牛之路 今天没有P1.直接进入正题 今天上的是一个帅帅的app滑动介绍页 . 为什么说帅? 作者对自己的内容是这么定义的 Make a cool intro for your ...
- (利用DOM)在新打开的页面点击关闭当前浏览器窗口
1.在开发过程中我们前端的用户体验中有时候会要求点击一个按钮,关闭当前浏览器窗口,用HTML DOM就可做到 2.注意:本次写法要求在新窗口中关闭.target="_blank" ...
- Qt5的插件机制(6)--开发Qt插件时几个重要的宏
怎样开发Qt插件,能够在Qt Assistant 中搜索"Qt Plugins"或"How to Create Qt Plugins",看看那篇manual中的 ...
- 关于Win8 用不了USB转串口驱动
win8系统必需要关闭设备驱动自己主动更新,否则联网更新的驱动是用不了的.操作过程例如以下: 打开控制面板,搜索"设备".更改设备安装设置 watermark/2/text/aHR ...
- Nginx简单了解
1.静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML.图片)通过HTTP协议展现给客户端. 配置: server { listen80; # 端口号 lo ...
- 【TensorFlow-windows】(二) 实现一个去噪自编码器
主要内容: 1.自编码器的TensorFlow实现代码(详细代码注释) 2.该实现中的函数总结 平台: 1.windows 10 64位 2.Anaconda3-4.2.0-Windows-x86_6 ...
- secureCRT与vim配置
折腾了一天,给服务器新装了centos系统,用crt连接,vim用着很不习惯. 修改配色,快捷键啥的都不怎么起效. 后来发现.crt里的会话选项-终端-仿真 里配成xtream,使用颜色方案就可以了.
- 51NOD 1810 连续区间 分治 区间计数
1810 连续区间 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 80 区间内所有元素排序后,任意相邻两个元素值差为1的区间称为“连续区间” 如:3,1,2是连续区间,但3, ...