1 条题解
-
0
C++ :
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <queue> #include <vector> #include <utility> #include <set> //#define LOCAL #define maxe 105 #define maxd 105 #define maxn 25 using namespace std; typedef long long ll; typedef pair<int,int> P; int n,E,D; int dp[maxe][maxd],f[maxn][maxd]; int main(){ #ifdef LOCAL freopen("sample.in","r",stdin); freopen("sample.out","w",stdout); #endif scanf("%d%d%d",&n,&E,&D); if(E < D){ puts("0"); return 0; } memset(dp,0x3f,sizeof(dp)); for(int i=0;i<=E;i++) dp[i][0] = 0; for(int i=1;i<=E;i++){ for(int j=1;j<=D;j++){ for(int k=1;k <= j && k * k <= i;k++){ dp[i][j] = min(dp[i][j],dp[i - k * k][j - k] + 1); } } } memset(f,0x3f,sizeof(f)); f[0][0] = 0; for(int i=1;i<=n;i++){ for(int j=0;j<=D;j++){ int p = D - j; for(int k=0;k<=j;k++){ f[i][j] = min(f[i][j],f[i - 1][j - k] + dp[E - p][k]); } } } printf("%d\n",f[n][D]); return 0; }
- 1
信息
- ID
- 1196
- 时间
- 1000ms
- 内存
- 30MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者