题意是给你2022可以被分成多少个10个数的方案
这题我当时一看裸的01二维费用,然后 然后不知道为什么就不对了...
现在再写就对了..
二维01背包翻译一下:
有2022个物品,每个物品有重量和体积,体积每个物品都是1,重量每个物品是自己本身的值
在体积是10,重量是2022的情况下有多少方案数
就就板子啊
(别忘记开longlong)
#include<iostream>
#include<map>
#include<cstring>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
typedef long long ll;
const int N=5000;
ll m[N],v[N],f[N][N];
int main(){
for(int i=1;i<=2022;i++)
{
v[i]=1;
m[i]=i;
}
int V=10,M=2022;
f[0][0]=1;
for(int i=1;i<=2022;i++)
{
for(int j=V;j>=v[i];j--)
{
for(int k=M;k>=m[i];k--)
{
f[j][k]+=f[j-v[i]][k-m[i]];
}
}
}
cout<<f[V][M];
return 0;
}
/*
379187662194355221
2022个物品,重量是本身,体积是1
总重量2022,总体积是10
*/