首页 > 其他 > 详细

P1025 数的划分

时间:2019-09-09 21:35:01      阅读:96      评论:0      收藏:0      [点我收藏+]

此题我是做过的,挑战上的一道题

刚开始想:不就是隔板法吗?但是此题不同顺序算同一种方案,隔板法显然无法解决此类问题,只能用计数类DP

但是由于数据水,暴搜也可以过

我们根据是否包含1划分 ,f[i][j]=f[i-1][j-1]+f[i-j][j];

这体现了“围绕一个基准点把一个大问题划分为两个没有交集的部分”的思想

#include<bits/stdc++.h>
using namespace std;

#define go(i,a,b) for(int i=a;i<=b;++i)
#define com(i,a,b) for(int i=a;i>=b;--i)
typedef long long ll;

ll f[206][26];
int n,m;

int main(){
    //freopen("input.txt","r",stdin);
    cin>>n>>m;
    if(m>n){
        puts("0");
        return 0;
    }
    f[0][0]=1;
    go(i,1,n)
        go(j,1,min(i,m)){
            f[i][j]=f[i-1][j-1]+f[i-j][j];
        }
    printf("%lld",f[n][m]);
    return 0;
}

P1025 数的划分

原文:https://www.cnblogs.com/White-star/p/11494306.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!