PAT 1015Graduate Admission (30)
来源:互联网 发布:淘宝权重怎么提升 编辑:程序博客网 时间:2024/05/30 04:30
这道题谁帮我找出那个bug,好想请那个人吃饭,有俩分没通过。
思路
- 1.首先把俩个结构体的元素想好,比如多一个rank,感觉比较的话就方便很多。
- 2.quota配额,囧….
- 3.总的来说就是先排好序,然后看学校满没满以及lastrank取人就是了。
我出错的一些点
- 1.难道不能用>?,<可以用,是sort默认是从小到大的原因吗?
- 2.bool cmp(const …,const …),不加const报错。
- 3.vector<…> name(n,…),这样声明n个比较方便。
- 4.(int).size()这个是咋回事啊,有时候为啥不用这么些?
代码
#include <iostream>#include <vector>#include <math.h>#include<algorithm>using namespace std;//quota配额struct application_{ //多一个rank要方便很多 int id,GE,GI,total,rank ; vector<int> choice; application_() :id(-1), GE(0), GI(0), total(0), rank(-1), choice(0){}; application_(int x) :id(-1), GE(0), GI(0), total(0), rank(-1), choice(vector<int>(x, 0)){}; //难道不能用>?,<可以用 /*bool operator < ( application_ r) { if (total < r.total) return true; else return false; }*/};//不加const报错bool cmp(const application_& a,const application_& b){ if (a.total > b.total) return true; else if (a.GE == b.GE&&a.total > b.total) return true; //else要写完 else return false;}struct school{ int quato; int lastRank; vector<int> student; school() :quato(0), lastRank(0), student(0){};};int main(){ ios::sync_with_stdio(false); int n, m, k; cin >> n >> m >> k; //这样声明感觉爽很多 vector<application_> students(n, application_(k)); vector<school> schools(m); for (int i = 0; i < m; i++) { cin >> schools[i].quato; } for (int i = 0; i < n; i++) { cin >> students[i].GE >> students[i].GI; students[i].id = i; students[i].total = students[i].GE + students[i].GI; for (int j = 0; j < k; j++) { cin >> students[i].choice[j]; } } sort(students.begin(), students.end(),cmp); students[0].rank = 0; for (int i = 1; i < n; i++) { if ( (students[i].total == students[i - 1].total&&students[i].GE == students[i - 1].GE)) students[i].rank = students[i-1].rank; else //students[i].rank = students[i-1].rank+1; students[i].rank = i; } int ch_id; for (int i = 0; i < n; i++) { for (int j = 0; j < k; j++) { ch_id = students[i].choice[j]; if (schools[ch_id].quato > 0||(schools[ch_id].quato==0&&schools[ch_id].lastRank==students[i].rank)) { schools[ch_id].student.push_back(students[i].id); if (schools[ch_id].quato > 0) { schools[ch_id].quato--; } schools[ch_id].lastRank = students[i].rank; //记得录取了就break。 break; } } } for (int i = 0; i < m; i++) { sort(schools[i].student.begin(), schools[i].student.end()); //注意(int).size() for (int j = 0; j < (int)schools[i].student.size(); j++) { //cout << "j:" << j<<endl; if (j == 0) cout << schools[i].student[j]; else cout << " " <<schools[i].student[j]; } cout << endl; } /*for (int i = 0; i < n; i++) { cout << "id:" << students[i].id << " total:" << students[i].total << " GE:" << students[i].GE << " rank:" << students[i].rank << endl; }*/ return 0;}
0 0
- PAT 1015Graduate Admission (30)
- PAT 1015Graduate Admission (30)修改后
- PAT 1080. Graduate Admission (30)
- PAT 1080. Graduate Admission (30)
- PAT 1080. Graduate Admission (30)
- 【PAT】1080. Graduate Admission (30)
- 1080. Graduate Admission (30) PAT
- pat-1080. Graduate Admission (30)
- pat-A1080. Graduate Admission (30)
- PAT A1080. Graduate Admission (30)
- PAT A1080 graduate admission (30)
- PAT A1080. Graduate Admission (30)
- PAT 1080-Graduate Admission (30)
- PAT (Advanced) 1080. Graduate Admission (30)
- PAT Advanced Level 1080. Graduate Admission (30)
- PAT A 1080. Graduate Admission (30)
- PAT-A1080. Graduate Admission (30)(排序)
- PAT(A) - 1080. Graduate Admission (30)
- java常量池以及“==”字符串比较
- 素数判定(素数筛法)(欧拉)
- linux 下oracle 11g sys和system密码丢失
- C++中类的组合与构造函数
- hdoj1222Wolf and Rabbit
- PAT 1015Graduate Admission (30)
- spark 1.6.0 core源码分析9 从简单例子看action
- jdk1.6 完美卸载
- hdu5727 Necklace(枚举+匈牙利)
- 如何进行mysql的优化
- Java如何把String[]类型的记录插入到Mysql中
- CF 699D Fix a Tree 并查集
- UVALive 2034 Hot or Cold?【数学】
- iOS byte截取 socket解析