首页 > 代码库 > hdu 4968 Improving the GPA (水 暴力枚举)
hdu 4968 Improving the GPA (水 暴力枚举)
题目链接
题意:给平均成绩和科目数,求可能的最大学分和最小学分。
分析:
枚举一下,可以达到复杂度可以达到10^4,我下面的代码是10^5,可以把最后一个循环撤掉。
刚开始以为枚举档次的话是5^10,但是这个又不要求顺序,所以只是枚举个数就行了。。
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 #include <cstdlib> 5 #include <cmath> 6 #include <algorithm> 7 #define LL __int64 8 const int maxn = 2000+10; 9 const int INF = 1<<28;10 using namespace std;11 12 int main()13 {14 int t, i, j, k, l, m, sc, n, sum1, sum2, y;15 double gp, ans1, ans2;16 scanf("%d", &t);17 while(t--)18 {19 ans1 = INF;20 ans2 = -1;21 scanf("%d%d", &sc, &n);22 y = sc*n;23 24 for(i = 0; i <= n; i++)25 for(j = 0; j <= n-i; j++)26 for(k = 0; k <= n-i-j; k++)27 for(l = 0; l <= n-i-j-k; l++)28 for(m = 0; m <= n-i-j-k-l; m++)29 {30 if(i+j+k+l+m==n)31 {32 //printf("%d %d %d %d %d\n", i, j, k, l, m);33 sum1 = (i*60+j*70+k*75+l*80+m*85);34 sum2 = (i*69+j*74+k*79+l*84+m*100);35 gp = i*2+j*2.5+k*3+l*3.5+m*4;36 37 if(y>=sum1&&y<=sum2)38 {39 if(gp<ans1) ans1 = gp;40 if(gp>ans2) ans2 = gp;41 }42 }43 }44 //cout<<ans1<<endl;45 ans1 = ans1*1.0/n;46 ans2 = ans2*1.0/n;47 printf("%.4lf %.4lf\n", ans1, ans2);48 }49 return 0;50 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。