- #include<iostream>
- #include<algorithm>
- #include<cstring>
- #include<cstdio>
- using namespace std;
- long long sum(int x,int y)
- {
- long long s=1;
- while(x)
- {
- s*=y;
- x--;
- }
- return s;
- }
- long long dp[10001],c[510][10001];
- int main()
- {
- int n,m,i,j,k,x,y;
- scanf("%d%d",&n,&m);
- for(i=1;i<=m;++i)//一共有m个课题
- {
- scanf("%d%d",&x,&y);
- for(j=1;j<=n;++j)//要完成n个研究课题
- {
- c[i][j]=x*sum(y,j);//求出每个课题进行n次研究的耗时
- }
- }
- memset(dp,0x3f3f3f3f,sizeof(dp));
- dp[0]=0;
- for(i=1;i<=m;++i)//一共有m个课题
- {
- for(j=n;j>=0;--j)//要完成n个研究课题
- {
- for(k=1;k<=j;++k)//选择的次数
- {
- dp[j]=min(dp[j],dp[j-k]+c[i][k]);
- }
- }
- }
- printf("%d\n",dp[n]);
- return 0;
- }
最佳课题选择 多重背包
最新推荐文章于 2021-12-31 23:18:44 发布