HDU 4968 Improving the GPA
Posted ncc62497
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 4968 Improving the GPA相关的知识,希望对你有一定的参考价值。
五一劳动节的练习题。
队友看出来是一个背包,另外一个队友提供了贪心思路ac,在场上想了怎么背,没想出来。
然后看题解,结合自己遇到当时的情况,发现用二维数组,一个表示物品的数量一个表示物品的重量,那么就比较好写了
#include<bits/stdc++.h> using namespace std; //const int va[]={85,80,75,70,60}; //const int vb[]={100,84,79,74,69}; //const double w[]={4.0,3.5,3.0,2.5,2.0}; double v[110]; int cnt; double ma[20][1010]; double mi[20][1010]; int main() { //freopen("i.txt","r",stdin); for(int i=85; i<=100; i++)//预先处理 v[i]=4.0; for(int i=80; i<=84; i++) v[i]=3.5; for(int i=75; i<=79; i++) v[i]=3.0; for(int i=70; i<=74; i++) v[i]=2.5; for(int i=60; i<=69; i++) v[i]=2.0; int T; scanf("%d",&T); while(T--) { int weight; int k; scanf("%d%d",&weight,&k); weight*=k; for(int i=0;i<k;i++) { for(int j=0;j<=weight;j++) { ma[i][j]=0; mi[i][j]=0x3f3f3f;//把最大值最小值设置一下 } } for(int i=60;i<=100;i++) { ma[0][i]=v[i]; mi[0][i]=v[i]; } for(int i=1;i<k;i++) { for(int j=60;j<=100;j++) { for(int n=0;n<=weight;n++) { if(n-j>=0&&ma[i-1][n-j]!=0)这个条件防止 重量59价值为0这种不存的情况被算入 ma[i][n]=max(ma[i-1][n-j]+v[j],ma[i][n]);//更新 } } } for(int i=1;i<k;i++) { for(int j=60;j<=100;j++) { for(int n=0;n<=weight;n++) { if(n-j>=0&&mi[i-1][n-j]!=0x3f3f3f) mi[i][n]=min(mi[i-1][n-j]+v[j],mi[i][n]); } } } printf("%.4f %.4f\n",mi[k-1][weight]/k*1.0,ma[k-1][weight]/k*1.0); } return 0; }
当然这题数据范围太小了 直接打出来ma【2-10】【120-1000】是最好的方法
以上是关于HDU 4968 Improving the GPA的主要内容,如果未能解决你的问题,请参考以下文章
[论文理解] IMPROVING THE IMPROVED TRAINING OF WASSERSTEIN GANS: A CONSISTENCY TERM AND ITS DUAL EFFECT
Improving the quality of the output
Improving the accuracy of roundness measurement
BookNote: Refactoring - Improving the Design of Existing Code
论文阅读|深读RolNE: Improving the Quality of Network Embedding with Structural Role Proximity