码迷,mamicode.com
首页 > 其他好文 > 详细

P1336 最佳课题选择

时间:2020-03-30 19:38:30      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:需要   src   mamicode   while   com   ons   display   bit   span   

题意:给出我们需要学的科目数,给出m种不同的科目,n<=m

    即可以学的科目数小于我们需要学的科目数,也就是说我们需要多次学同一门科目

      计算学习某门科目的时间为:技术图片

 

        求如何学习才能让时间最低;

思路:给出dp【i】【j】表示选择前i种科目学习j次所花最少时间

   

技术图片
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 typedef long long ll;
 4 const int maxn=2e3+10;
 5 ll dp[maxn][maxn];
 6 ll a[maxn],b[maxn];
 7 ll qpow(ll x,ll y)
 8 {
 9     ll sum=1;
10     while(y){
11         if(y&1) sum=sum*x;
12         x=x*x;
13         y/=2;
14     }
15     return sum;
16 }
17 int main()
18 {
19     int n,m;
20     scanf("%d%d",&n,&m);
21     for(int i=1;i<=m;i++){
22         scanf("%lld%lld",&a[i],&b[i]);
23     }
24     for(int i=1;i<=n;i++)
25         dp[1][i]=a[1]*qpow(i,b[1]);
26     for(int i=1;i<=m;i++)
27         dp[i][0]=0;
28     for(int i=2;i<=m;i++){
29         for(int j=1;j<=n;j++){
30             int tot=j;
31             dp[i][j]=a[i]*qpow(j,b[i]);
32             for(int k=0;k<tot;k++){
33                 dp[i][j]=min(dp[i][j],dp[i-1][tot-k]+a[i]*qpow(k,b[i]));
34             }
35         }
36     }
37     printf("%lld\n",dp[m][n]);
38     return 0;
39 }
View Code

 

P1336 最佳课题选择

标签:需要   src   mamicode   while   com   ons   display   bit   span   

原文地址:https://www.cnblogs.com/pangbi/p/12600450.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!