题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=4968
说是考dp,但是我没出来dp在哪,可能贪心思想更多一些吧。
AC代码:
#include<iostream> #include<cstdio> #include<algorithm> #include<cstring> using namespace std; #define ll long long const int maxn=1e5+5; const int INF=0x3f3f3f3f; int score,n; double mx(int x) { double ans; if(score>=85) return 4.0*n; ans=2.0*n; x-=60*n; for(int i=1;i<=n;i++) { if(x>9) {x-=10;ans+=0.5;} else break; ///70 if(x>4) {x-=5;ans+=0.5;} else break; ///75 if(x>4) {x-=5;ans+=0.5;} else break; ///80 if(x>4) {x-=5;ans+=0.5;} else break; ///85 } return ans; } double mn(int x) { double ans; if(score<69) return 2.0*n; ans=2.0*n; x-=69*n; for(int i=1;i<=n;i++) { if(x>0) {x-=5;ans+=0.5;} else break; ///74 if(x>0) {x-=5;ans+=0.5;} else break; ///79 if(x>0) {x-=5;ans+=0.5;} else break; ///84 if(x>0) {x-=16;ans+=0.5;} else break; ///100 } return ans; } int main() { int T; scanf("%d",&T); while(T--) { scanf("%d%d",&score,&n); int sum=score*n; double minn=mn(sum); double maxx=mx(sum); printf("%.4f %.4f\n",minn/n,maxx/n); } return 0; }