栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 1283 Making the Grade

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 1283 Making the Grade

#include<cstdio>#include<vector>#include<algorithm>#include<cmath>#include<deque>using namespace std;namespace{struct Student{deque<int> q;int bonus, abs;double avg, adjAvg;int grade;};void grade(Student *s, double mean, double sd){if (s->adjAvg >= mean + sd)s->grade = 4;else if (s->adjAvg >= mean)s->grade = 3;else if (s->adjAvg >= (mean - sd))s->grade = 2;elses->grade = 1;}void adj_grade(Student *s){s->grade -= s->abs / 4;if (s->grade < 0)s->grade = 0;if (s->abs == 0 && s->grade < 4)s->grade++;}}int main(){puts("MAKING THE GRADE OUTPUT");int N, S, T;scanf("%d", &N);vector<Student *> V;while (N--){scanf("%d %d", &S, &T);V.clear();double total = 0;for (int i = 0; i < S; i++){Student *stu = new Student();int score, sum = 0;for (int j = 0; j < T; j++){scanf("%d", &score);stu->q.push_back(score);sum += score;}if (T > 2){sort(stu->q.begin(), stu->q.end());sum -= stu->q.front();stu->q.pop_front();}stu->avg = sum * 1.0 / stu->q.size();total += stu->avg;scanf("%d %d", &(stu->bonus), &(stu->abs));stu->adjAvg = stu->avg + (stu->bonus) / 2 * 3;V.push_back(stu);}double mean = total / S;total = 0;for (size_t i = 0; i < V.size(); i++)total += (V[i]->avg - mean) * (V[i]->avg - mean);double sd = sqrt(total / S);if (sd < 1)sd = 1;double res = 0;for (size_t i = 0; i < V.size(); i++){grade(V[i], mean, sd);adj_grade(V[i]);res += V[i]->grade;}printf("%.1lfn", res / V.size());}puts("END OF OUTPUT");return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378681.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号