【BZOJ 4870】【2017六省联考】组合数问题
来源:互联网 发布:剑灵天族数据 编辑:程序博客网 时间:2024/06/05 12:00
其实我刚看到题目跟大部分人的反应是一样的,暴力Lucas定理。。。
后来发现没说模数一定是质数,那没事还是能骗好多分的。
然而事实上是那些暴力分根本用不到Lucas定理。。。
正解:
所求式子的意义:从nk个物品中取 模k余r 个物品的方案数。
显然有
我写的是倍增算法,其实差不多,之前转移是一个一个转移,倍增则是n个n个转移,
一个坑爹的细节:注意k=1的初始化!
#include<cmath>#include<cstdio>#include<vector>#include<queue>#include<cstring>#include<iomanip>#include<stdlib.h>#include<iostream>#include<algorithm>#define ll long long#define inf 1000000000#define mod 1000000007#define N 2005#define fo(i,a,b) for(i=a;i<=b;i++)#define fd(i,a,b) for(i=a;i>=b;i--)using namespace std;struct arr{int s[N];} a,res;ll n;int p,k,r;inline void operator *= (arr &u,arr b){ arr a = u; int i,j,t; memset(u.s,0,sizeof(u.s)); fo(i,0,k-1) fo(j,0,k-1) { t = (i + j) % k; u.s[t] = (u.s[t]+1ll*a.s[i]*b.s[j])%p; }}int main(){ scanf("%lld%d%d%d",&n,&p,&k,&r); n = (ll)n * k; a.s[0] = 1; a.s[1%k] += 1; res.s[0] = 1; while (n) { if (n&1) res *= a; a *= a; n >>= 1; } printf("%d\n",res.s[r]); return 0;}
0 0
- 【BZOJ 4870】【2017六省联考】组合数问题
- [六省联考2017]组合数问题
- 【洛谷3746】【六省联考2017】组合数问题
- 【BZOJ 4868】【2017六省联考】期末考试
- BZOJ 4870 HEOI 2017 组合数问题
- 【bzoj 4870】组合数问题
- 【BZOJ 4869】【2017六省联考】相逢是问候
- 【BZOJ 4872】【2017六省联考】分手是祝愿
- 【BZOJ 4873】【2017六省联考】寿司餐厅
- BZOJ 4870 [Shoi2017] 组合数问题
- bzoj 4870: [Shoi2017]组合数问题
- 洛谷 P3745 [六省联考2017]期末考试(bzoj P4868 [Shoi2017]期末考试)
- bzoj 4870: [Shoi2017]组合数问题 动态规划
- [DP 倍增] BZOJ 4870 [Shoi2017]组合数问题
- 【p3745】[六省联考2017]期末考试
- bzoj P4870 [Shoi2017]组合数问题
- 黑吉辽沪冀晋六省联考 2017 BZOJ 4868&4869&4870&4871&4872&4873
- BZOJ 4870: [Shoi2017]组合数问题 (递推+矩阵快速幂)
- 设备树基本语法及属性分析
- RateLimiter
- linux学习笔记系列-用户
- 自旋锁与互斥锁的区别
- Android Studio单元测试入门
- 【BZOJ 4870】【2017六省联考】组合数问题
- Active-MQ
- 最短路径-Floyd算法
- 引发类型为“Microsoft.SmartDevice.Connectivity.PlatformNotFoundException”的异常
- onkeyup和onafterpaste键盘输入限制
- PHP取整四舍五入取整、向上取整、向下取整、小数截取
- redis 主从配置/复制
- Wildlife summit gives reasons to be cheerful about conservation
- 省市区三级联动