Equation

来源:互联网 发布:淘宝的官换机靠谱吗 编辑:程序博客网 时间:2024/05/01 16:30

题目链接

Equation


Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 49    Accepted Submission(s): 18


Problem Description
Gorwin is very interested in equations. Nowadays she gets an equation like this
x1+x2+x3++xn=n, and here
0xinfor1inxixi+1xi+1for1in1

For a certain n, Gorwin wants to know how many combinations of xi satisfies above condition.
For the answer may be very large, you are expected output the result after it modular m.
 
Input
Multi test cases. The first line of the file is an integer T indicates the number of test cases.
In the next T lines, every line contain two integer n,m.

[Technical Specification]
1T<20
1n50000
1m1000000000
 
Output
For each case output should occupies one line, the output format is Case #id: ans, here id is the data number starting from 1, ans is the result you are expected to output.
See the samples for more details.
 
Sample Input
23 1005 100
 
Sample Output
Case #1: 2Case #2: 3
/*这可以看成是一个完全背包问题,但是由于数字比较多直接DP会超时。其实可以发现数字的种类最多是sqrt(n)级别的。那么就可以把复杂度降到nsqrt(n);Dp[i][j]代表前i个数字放好之后能组成j的和数是多少。递推方程是Dp[i][j]=dp[i][j-i]+dp[i-1][j-i]; 表示第i种数字放的时候,前面要么放了i,要么放了i-1边界条件是dp[i][j]=0 for i < jDp[0][0]=1;所以最后总的复杂度是n*sqrt(n)*/#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>using namespace std;int n,M,tt;int dp[50005][305];int main() {    //freopen("D://imput.txt","r",stdin);    int cur=1;    scanf("%d",&tt);    while(tt--) {        scanf("%d%d",&n,&M);        for(int i=1; i<=n; i++)            for(int j=1; j*(j+1)/2<=i; j++)                dp[i][j]=0;        dp[1][1]=1;        for(int i=1; i<=n; i++) {            for(int j=1; j*(1+j)/2<=i&&i+j<=n; j++) {                dp[i+j][j]=(dp[i+j][j]+dp[i][j])%M;                if(i+j+1<=n)                    dp[i+j+1][j+1]=(dp[i+j+1][j+1]+dp[i][j])%M;            }        }        int res=0;        for(int i=1; i*(i+1)/2<=n; i++) {            res=(res+dp[n][i])%M;        }        printf("Case #%d: %d\n",cur++,res);    }    return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 lol美服更新不了怎么办 支付宝没法实名额度上限怎么办 苹果手机软件被禁止联网了怎么办 幽灵行动荒野黑屏怎么办打开游戏 幽灵行动荒野一点战役就秒退怎么办 华为账号密码忘了怎么办 ios荒野行动掉帧怎么办 一个人心理产生极度恐慌失眠怎么办 肺被子弹打穿了怎么办 文明5完整版锁区怎么办 2017文明5锁区怎么办 软件安装了错误补丁打不开怎么办 小米sd卡不可用怎么办 电视用遥控器关上打不开了怎么办 求生之路2控制台打不开怎么办 比亚迪一键启动没反应怎么办 电动车车头锁开不了怎么办 锁里面卡了东西怎么办 电脑显示器闪屏然后黑屏怎么办 枪火游侠闪退怎么办 欧卡2气压过低怎么办 微信安装包己损坏怎么办 qq超市金币累计满了怎么办 我该怎么办?欠了那么多钱? 枪神王座被检测怎么办 酷派大神x7刷机出1004怎么办 水鬼捞锤塌方了怎么办 请事假领导不批怎么办 要请假领导不批怎么办 有急事请假不批怎么办 员工要请假不批怎么办 普法知识竞赛要重新参与怎么办 我被当兵的打怎么办 头发没了一小块怎么办 改革怎么看我该怎么办 笔记本电脑卡死了怎么办关不了机 电脑卡死了怎么办关不了机 火车上别人占座怎么办 火车上遇到占座怎么办 青少年体力差容易疲劳怎么办 四年级的孩子作业拖拉怎么办