日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pat德才论

發布時間:2025/3/13 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pat德才论 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
宋代史學家司馬光在《資治通鑒》中有一段著名的“德才論”:“是故才德全盡謂之圣人,才德兼亡謂之愚人,德勝才謂之君子,才勝德謂之小人。凡取人之術,茍不得圣人,君子而與之,與其得小人,不若得愚人。”現給出一批考生的德才分數,請根據司馬光的理論給出錄取排名。

輸入描述:

輸入第1行給出3個正整數,分別為:N(<=105),即考生總數;L(>=60),為錄取最低分數線,即德分和才分均不低于L的考生才有資格被考慮錄取;H(<100),為優先錄取線——德分和才分均不低于此線的被定義為“才德全盡”,此類考生按德才總分從高到低排序;才分不到但德分到線的一類考生屬于“德勝才”,也按總分排序,但排在第一類考生之后;德才分均低于H,但是德分不低于才分的考生屬于“才德兼亡”但尚有“德勝才”者,按總分排序,但排在第二類考生之后;其他達到最低線L的考生也按總分排序,但排在第三類考生之后。隨后N行,每行給出一位考生的信息,包括:準考證號、德分、才分,其中準考證號為8位整數,德才分為區間[0, 100]內的整數。數字間以空格分隔。

輸出描述:

輸出第1行首先給出達到最低分數線的考生人數M,隨后M行,每行按照輸入格式輸出一位考生的信息,考生按輸入中說明的規則從高到低排序。當某類考生中有多人總分相同時,按其德分降序排列;若德分也并列,則按準考證號的升序輸出。

輸入例子:

14 60 8010000001 64 9010000002 90 6010000011 85 8010000003 85 8010000004 80 8510000005 82 7710000006 83 7610000007 90 7810000008 75 7910000009 59 9010000010 88 4510000012 80 10010000013 90 9910000014 66 60

輸出例子:

1210000013 90 9910000012 80 10010000003 85 8010000011 85 8010000004 80 8510000007 90 7810000006 83 7610000005 82 7710000002 90 6010000014 66 6010000008 75 79

10000001 64 90

思路:

首先通過讀題可以將排序分成四類排,由于我們并不知道每類大概有幾個,所以使用數組存儲不合適,就用vector容器,將每類分好后,使用sort函數進行排序,但要按照題目要求自己寫一個比較函數。

劃分思路:

c>=80,d>=80;

d>=80>c>=60;

80>d>=c>=60;

d>=60,c>=60;

#include<iostream> #include<vector> #include<algorithm> using namespace std; struct Test { ????int stdnum; ????int c; ????int d; ???// int flag; ????//int turn; }; bool Comp(Test a,Test b) { ????if((a.c+a.d)!=(b.c+b.d)) ????{ ????????return (a.c+a.d)>(b.c+b.d); ????????? ????} ????else ????{ ????????if(a.d!=b.d) ????????{ ????????????return a.d>b.d; ????????} ????????else ????????{ ????????????return a.stdnum<b.stdnum; ????????} ????} } int main() { ????int n,llimit,hlimit; ????cin>>n>>llimit>>hlimit; ????//test a[n]; ???// int count=0; ????//int point1,point2,point3,point4; ????vector<Test>v1,v2,v3,v4; ????Test test; ????int count=0; ????for(int i=0;i<n;i++) ????{ ????????cin>>test.stdnum; ????????cin>>test.d; ????????cin>>test.c; ????????? ????????if(test.c>=hlimit&&test.d>=hlimit) ????????{ ??????????v1.push_back(test); ????????????count++; ????????} ????????else if(test.d>=hlimit&&test.c<hlimit&&test.c>=llimit) ????????{ ????????????v2.push_back(test); ????????????count++; ????????} ?????????else if(test.d<hlimit&&test.d>=test.c&&test.c>=llimit) ????????{ ????????????v3.push_back(test); ????????????count++; ????????} ????????else if((test.d>=llimit)&&(test.c>=llimit)) ????????{ ????????????v4.push_back(test); ????????????count++; ????????} ????} ??sort(v1.begin(),v1.end(),Comp); ????sort(v2.begin(),v2.end(),Comp); ????sort(v3.begin(),v3.end(),Comp); ????sort(v4.begin(),v4.end(),Comp); ????cout<<count<<endl; ????vector<Test>::iterator it; ????for(it=v1.begin();it!=v1.end();it++) ????{ ????????cout<<it->stdnum<<" "<<it->d<<" "<<it->c<<endl; ????} ?????for(it=v2.begin();it!=v2.end();it++) ????{ ????????cout<<it->stdnum<<" "<<it->d<<" "<<it->c<<endl; ????} ?????for(it=v3.begin();it!=v3.end();it++) ????{ ????????cout<<it->stdnum<<" "<<it->d<<" "<<it->c<<endl; ????} ?????for(it=v4.begin();it!=v4.end();it++) ????{ ????????cout<<it->stdnum<<" "<<it->d<<" "<<it->c<<endl; ????} ????return 0; }

總結

以上是生活随笔為你收集整理的pat德才论的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。