【问题描述】
你是能看到第二题的friends呢。
——laekov
Hja和Yjq在玩游戏,这个游戏中Hja给了Yjq两个数,希望Yjq找到一些非负整数使得这些数的和等于n,并且所有数模maaaaaaaaaaaaaa       的值互不相同,求方案数。
【输入格式】
一行两个整数。
【输出格式】
一行一个整数代表答案对取模之后的结果。
【样例输入1】
3 3
【样例输出1】
9
【样例输入2】
523 44
【样例输出2】
338398304
【数据规模与约定】
对于100%的数据, n<=1e18 ,m<=100

题解:

      ①根据题意列出构造背包体积的式子:
            a1+a2+a3……+ak=n  然后%m得到:

            b1+b2+b3……+bk=n'(其中:bi=ai%m,n'=n%m)

      ②那么由于m的范围:  0<=bi<m 此时可以进行背包,物品体积独一无二。

      ③又因为∑bi 的最大值为:1+2+3+……+(m-1)=m*(m-1)/2 ,注意到可能会超过m

      ④令f[i][j]表示总共用了i个物品构造体积为j的方案数,就正常的背包DP转移就是了。

      ⑤此时的结果是取模下的结果,又因为:n=n'+k*m ,相当于物品总共还要增加k*m的权值

      ⑥由于状态记录了物品个数,也就是将k个m分给i个物品,此处为组合数计数(插隔板…)

      ⑦这道题由于要求内部组合顺序算作不同方案,因此需要乘上排列数。

      ⑧总结上述方法,答案为∑f[i][j]*C(插隔板)*(i!) (1<=i<=m,j=n%m+k*m且j<=m*(m-1)/2)

      ⑨主程序化简递推组合数式子可达O(n3),但是预处理依旧是O(n4),不要相信时间复杂度。

#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<algorithm>
using namespace std;
#ifdef unix
#define LL "%lld"
#else
#define LL "%I64d"
#endif
const int maxn=110;
const int maxs=maxn*maxn/2;
const int mo=905229641;
long long n;
int m,f[maxn][maxs],fac[maxn];
int calc(long long a,long long b)
{
long long ans=1;
for(int c=1;c<a;c++)ans=ans*(b+c)%mo;
return (int)ans;
} int main()
{
scanf(LL "%d",&n,&m);
f[0][0]=1;
int up=m*(m-1)/2;
for (int a=0;a<m;a++)
for (int b=m;b>=0;b--)
for (int c=up;c>=0;c--)
if (f[b][c]) f[b+1][c+a]=(f[b+1][c+a]+f[b][c])%mo;
fac[0]=1;
for (int a=1;a<=m;a++)
fac[a]=(long long)fac[a-1]*a%mo;
int x=(int)(n%m);
int ans=0;
for (int a=x;a<=n && a<=up;a+=m)
{
long long rest=(n-a)/m;
for (int b=1;b<=m;b++)
if (f[b][a])
{
int nowans=calc(b,rest%mo);
nowans=(long long)nowans*f[b][a]%mo;
nowans=(long long)nowans*b%mo;
ans=(ans+nowans)%mo;
}
}
printf("%d\n",ans);return 0;
}//Ztraveler

桌上那张发黄的相片,唤起我心中无尽的思念,

我终于失去你的那一天,我才明白你就是永远……——————汪峰《窗台》

         

【ZBH选讲·模数和】的更多相关文章

  1. 【ZBH选讲·树变环】

    [问题描述] 你是能看到第三题的friends呢.——aoao 树是个好东西,删掉树一条边要1的代价,随便再加一条边有1的代价,求最小的代价把树变成环.[输入格式] 第一行一个整数,代表树的点数.接下 ...

  2. 【ZBH选讲·拍照】

    [问题描述] 假设这是一个二次元.LYK召集了n个小伙伴一起来拍照.他们分别有自己的身高Hi和宽度Wi.为了放下这个照片并且每个小伙伴都完整的露出来,必须需要一个宽度为ΣWi,长度为max{Hi}的相 ...

  3. 2019暑期金华集训 Day6 杂题选讲

    自闭集训 Day6 杂题选讲 CF round 469 E 发现一个数不可能取两次,因为1,1不如1,2. 发现不可能选一个数的正负,因为1,-1不如1,-2. hihoCoder挑战赛29 D 设\ ...

  4. PJ可能会用到的动态规划选讲-学习笔记

    PJ可能会用到的动态规划选讲-学习笔记 by Pleiades_Antares 难度和速度全部都是按照普及组来定的咯 数位状压啥就先不讲了 这里主要提到的都是比较简单的DP 一道思维数学巧题(补昨天) ...

  5. PJ考试可能会用到的数学思维题选讲-自学教程-自学笔记

    PJ考试可能会用到的数学思维题选讲 by Pleiades_Antares 是学弟学妹的讲义--然后一部分题目是我弄的一部分来源于洛谷用户@ 普及组的一些数学思维题,所以可能有点菜咯别怪我 OI中的数 ...

  6. 正睿OI DAY3 杂题选讲

    正睿OI DAY3 杂题选讲 CodeChef MSTONES n个点,可以构造7条直线使得每个点都在直线上,找到一条直线使得上面的点最多 随机化算法,check到答案的概率为\(1/49\) \(n ...

  7. [转载]CSP-J/S 第一轮知识点选讲

    CSP-J/S 第一轮知识点选讲 转载自这里 感谢原博主的大力整理! 信息学史及基本知识 一.信息学及计算机史 计算机的顶级奖项:图灵奖.冯·诺依曼奖 图灵奖:由ACM(美国计算机协会)设立于1966 ...

  8. DP选讲

    $DP$选讲直接上题吧放个题单[各省省选DP](https://www.luogu.com.cn/training/151079)$P5322[BJOI2019]$排兵布阵一眼题,考虑$dp[i][j ...

  9. [入门向选讲] 插头DP:从零概念到入门 (例题:HDU1693 COGS1283 BZOJ2310 BZOJ2331)

    转载请注明原文地址:http://www.cnblogs.com/LadyLex/p/7326874.html 最近搞了一下插头DP的基础知识……这真的是一种很锻炼人的题型…… 每一道题的状态都不一样 ...

随机推荐

  1. Python——字典

    字典是一种key-value 的 数据类型,使用就想我们上学用的字典.可以通过笔画,字母来查对应页的详细内容. 特性:1. 字典是无须的.(如果光打印字典里的字符串,那么排序不会按照顺序排,因为字典是 ...

  2. Redis高可用

    redis高可用只要在于三个方面 主从复制 哨兵机制 集群机制 主从复制 主从复制作用: 1.数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式.2.故障恢复:当主节点出现问题时,可 ...

  3. Docker自学纪实(三)Docker容器数据持久化

    谈起数据卷 我一直觉得是个枯燥无聊的话题 但是通过今天的实操和阅读 我发现其实并不是 其实就像走夜路 没有光明,第一次都是恐惧 但是如果走的次数多了 或者静下心来去克制恐惧 也许就会驾轻就熟或者等到黎 ...

  4. Jongmah CodeForces - 1110D

    传送门 题意:你有n个数字,范围[1, m],你可以选择其中的三个数字构成一个三元组,但是这三个数字必须是连续的或者相同的,每个数字只能用一次,问这n个数字最多构成多少个三元组? 题解:三个一模一样的 ...

  5. POJ 3662 (二分+SPFA

    Telephone Lines Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8856   Accepted: 3211 D ...

  6. ASP.NET 使用 MySQL

    基本是通用的 C#与MySQL的交互, 先添加MySQL.Data.dll(位于MySQL安装目录下的Connector NET 8.0\Assemblies${version}目录下)引用, 之后代 ...

  7. Android面试收集录14 Android进程间通信方式

    一.使用 Intent Activity,Service,Receiver 都支持在 Intent 中传递 Bundle 数据,而 Bundle 实现了 Parcelable 接口,可以在不同的进程间 ...

  8. JWT应用

    调试器库简介问一件T恤! 精心制作 JSON Web令牌简介 新:免费获得JWT手册并深入学习JWT! 什么是JSON Web Token? JSON Web Token(JWT)是一个开放标准(RF ...

  9. loj2472 「九省联考 2018」IIIDX

    ref #include <algorithm> #include <iostream> #include <cstdio> using namespace std ...

  10. Dapper 学习笔记

    一.基础 1.Dapper代码就一个SqlMapper.cs文件, 前人测试Dapper速度较快 的Orm,读取速度接近IDataReader,超过DataTable. 2.a.下载地址 https: ...