GDOI2013 整数分拆
来源:互联网 发布:java返回值类型是类名 编辑:程序博客网 时间:2024/05/20 11:26
题目描述
题目要求求一个正整数
…
其中
解题思路
我们可以把原式改写:
…
这样我把前面的
设
参考代码
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)#define maxn 100005#define maxk 15#define mo 1000000007#define mem(a,b) memset(a,b,sizeof(a))#define ll long longusing namespace std;int b[maxk],s[maxk];int T,n,k;int f[maxk][maxn];ll x[maxk];int main(){ scanf("%d",&T); while (T--) { scanf("%d%d",&n,&k); fo(i,1,k-1) scanf("%d",&b[i]); s[0]=1; bool ok=0; fo(i,1,k-1) { s[i]=s[i-1]*b[i]; if (s[i]>n) { ok=1; break; } } if (ok) { puts("0"); continue; } mem(f,0); fo(i,0,k-1) { x[i]=1; fo(j,i+1,k-1) { x[i]+=s[j]/s[i]; if (x[i]>n) { x[i]=n+1; break; } } } fo(i,1,n / x[0]) f[0][i*x[0]]=1; fo(i,1,k-1) { fo(j,0,n) f[i][j]=f[i-1][j]; fo(j,x[i],n) f[i][j]=(f[i][j]+f[i][j-x[i]]) % mo; } printf("%d\n",f[k-1][n]); } return 0;}
1 0
- GDOI2013 整数分拆
- 【DP】GDOI2013 整数分拆
- Project Euler Problem 76-整数分拆
- 整数的分划
- 整数的分划
- 整数划分-分苹果
- 整数因子分解法
- JOJ 1124 Parliament 最大乘积的整数分拆
- poj 1664__放苹果,整数的分拆
- LeetCode 343. Integer Break(整数分拆)
- 蓝桥杯 波动数列 整数分拆 动态规划 数学 Java
- 【GDOI2013模拟1】屏保
- 整数的分划问题
- 整数的分划问题
- 整数的分划问题
- 整数的分划问题
- 整数的分划问题
- 整数的分划问题。
- 利用js对象的特性去除数组和重复项
- 关于View的ScrollTo, getScrollX 和 getScrollY
- Hdu 2104 hide handkerchief
- JVM垃圾回收(GC 笔记)
- 三连击(升级版)
- GDOI2013 整数分拆
- Transfrom
- ural 1126
- KNN python 算法实现
- POJ 1753 Flip Game(搜索+位运算)
- hdoj 1427 速算24点【经典dfs】
- Hive分析窗口函数之NTILE,ROW_NUMBER,RANK和DENSE_RANK
- (九)mybatis学习之缓存
- 商品内容页上传图片失败