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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

EOJ_1057_排名汇总

發(fā)布時(shí)間:2024/4/11 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 EOJ_1057_排名汇总 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#include <bits/stdc++.h>using namespace std; //因?yàn)榘凑辗謹(jǐn)?shù)排名 所以不能邊輸入邊排序,邊輸入邊排序得到的是當(dāng)前的排名,而不是整體的排名 //因?yàn)榘凑辗謹(jǐn)?shù)排序,直接sort //因?yàn)橐敵雠琶蚁嗤謹(jǐn)?shù)處于同一排名,所以可以直接用桶記錄分?jǐn)?shù),桶內(nèi)容為考取該分?jǐn)?shù)的學(xué)生數(shù)量 //(如果不是同一排名,要按照學(xué)號(hào)再排序,則桶的內(nèi)容不能是考了該分?jǐn)?shù)的學(xué)生數(shù)量,而是學(xué)生的具體信息,之后桶內(nèi)要再排序), //(即同一分?jǐn)?shù)不是相同排名,桶排序計(jì)算排名沒(méi)有優(yōu)勢(shì),不用桶排序,可以直接用普通方法,局部變量rank+遍歷得到) //再計(jì)算大于當(dāng)前考生分?jǐn)?shù)之前的人數(shù)(即桶內(nèi)人數(shù)的總數(shù))typedef struct {string stuNum;int place;//因?yàn)樾枰敵隹键c(diǎn)int score;//按照分?jǐn)?shù)排名,同時(shí)要保證輸入完后進(jìn)行整體排名,所以結(jié)構(gòu)體內(nèi)留有分?jǐn)?shù) }stu;int dicScore[103]={0}; stu allStu[30003]; int dicScorePlace[103][103]={0};//第一個(gè)下標(biāo)表示考場(chǎng),第二個(gè)下標(biāo)表示考j分,數(shù)值表示人有多少 int allStuNum=1; stu placeStu[303];int getRankPlace(stu tmpStu, int place) {int rankNum=0;for(int score=100; score>tmpStu.score ; score--){rankNum += dicScorePlace[place][score];}rankNum++;return rankNum; }void pushAllStu(stu tmpStu, int place) {dicScore[tmpStu.score]++;dicScorePlace[place][tmpStu.score]++;allStu[allStuNum] = tmpStu; }int get(stu s) {int rankAll=0;for(int score=100; score>s.score; score--){rankAll += dicScore[score];}rankAll++;return rankAll; }bool cmp(stu a, stu b) {if(a.score > b.score){return true;}else if(a.score==b.score){if(a.stuNum.compare(b.stuNum)<0) return true;else return false;}else if(a.score < b.score) return false; }int main() {int n;cin>>n;for(int i=1;i<=n;i++){int num;cin>>num;for(int j=1;j<=num;j++){stu tmpStu;tmpStu.place = i;cin>>tmpStu.stuNum >>tmpStu.score;pushAllStu(tmpStu, i);allStuNum++;}}allStuNum--;sort(allStu+1, allStu+allStuNum+1, cmp);cout<<allStuNum<<endl;for(int i=1;i<=allStuNum;i++){stu s = allStu[i];int rankTmp = get(s);int rankPlaceTmp = getRankPlace(s, s.place);cout<<s.stuNum <<" " <<rankTmp <<" " <<s.place <<" " <<rankPlaceTmp <<endl;}return 0; }

總結(jié)

以上是生活随笔為你收集整理的EOJ_1057_排名汇总的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。