zoukankan      html  css  js  c++  java
  • Educational Codeforces Round 28 B. Math Show

    题意:我有n个任务,每个任务是相同的,每个任务分为k个子任务,给出k个子任务的花费时间,每完成一个子任务+1分,但是我完成一个大任务(即k个子任务)可获得k+1分,我现在有w时间,问最大分数获得

    思路:dp,dp[j]表示我获得该积分消耗的最少时间,  dp[j+x] =min(dp[j+x],dp[j]+a[xx]);对子任务的花费时间排序,求个前缀和,即是当前这个任务的最优选择了

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 const ll INF=2000001000;
     5 typedef long long ll;
     6 
     7 ll a[55],dp[55*55];
     8 
     9 int main(){
    10     int n,k;
    11     int  m;
    12     scanf("%d%d",&n,&k);
    13     scanf("%d",&m);
    14     for(int i=1;i<=k;i++) scanf("%d",&a[i]);
    15     sort(a+1,a+1+k);
    16     for(int i=1;i<=k;i++) a[i]+=a[i-1];
    17     for(int i=1;i<=(k+1)*n;i++) dp[i]=INF;
    18     dp[0]=0;
    19     for(int i=1;i<=n;i++){
    20         for(int j=n*(k+1);j>=0;j--){
    21             for(int kk=0;kk<=k;kk++){
    22                 if(kk!=k)
    23                     dp[j+kk]=min(dp[j+kk],dp[j]+a[kk]);
    24                 else
    25                     dp[j+kk+1]=min(dp[j+kk+1],dp[j]+a[kk]);
    26             }
    27         }
    28     }
    29     for(int i=n*(k+1);i>=0;i--){
    30         if(dp[i]<=m){
    31             cout<<i<<endl;return 0;
    32         }
    33     }
    34 }
  • 相关阅读:
    Windows 10 将MySQL5.5升级为MySQL5.7
    Django Rest Swagger生成api文档
    inception安装使用
    django 日志配置
    构建NTP时间服务器
    django 模型关系
    python 开发环境配置
    mongodb远程备份
    rest framework 尝鲜
    Django Rest Framework-介绍
  • 原文地址:https://www.cnblogs.com/hhxj/p/7494606.html
Copyright © 2011-2022 走看看