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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

牛客 - 排序(模拟)

發(fā)布時間:2024/4/11 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客 - 排序(模拟) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接:點擊查看

題目大意:模擬ACM賽制下每個隊伍的排名,中文題面,不多贅述,規(guī)則在原題中講的很清楚了

題目分析:直接模擬即可。。一點坑都沒有,我是因為sort忘記調(diào)用cmp函數(shù)然后WA了一晚上,哭了,細(xì)節(jié)決定成敗嗚嗚嗚

代碼:

#include<iostream> #include<cstdlib> #include<string> #include<cstring> #include<cstdio> #include<algorithm> #include<climits> #include<cmath> #include<cctype> #include<stack> #include<queue> #include<list> #include<vector> #include<set> #include<map> #include<sstream> #include<unordered_map> using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=110;struct Problem {bool AC;//是否ACint waste;//罰時int cnt_waste;//錯誤次數(shù)int time;//AC時間void cal()//AC后計算內(nèi)部的數(shù)值{cnt_waste++;AC=true;waste+=time;} };struct Node {string name;//姓名(其實賦個值當(dāng)構(gòu)造函數(shù)用了,不然怕map里不給存)Problem problem[20];//每個題目int time;//總罰時int cnt_AC;//AC數(shù)int rank;//排名bool operator<(const Node& a)const//重載小于號用于排序{if(cnt_AC!=a.cnt_AC)return cnt_AC>a.cnt_AC;return time<a.time;}bool operator==(const Node& a)const//重載等于號用于排序和rank更新{return cnt_AC==a.cnt_AC&&time==a.time;} };unordered_map<string,Node>mp;//維護(hù)整體的容器bool cmp(pair<string,Node>a,pair<string,Node>b)//排序 {if(a.second==b.second)return a.first<b.first;return a.second<b.second; }int main() { // freopen("input.txt","r",stdin); // ios::sync_with_stdio(false);int w;cin>>w;while(w--){mp.clear();//記得初始化int n,m;cin>>n>>m;for(int i=1;i<=m;i++)//讀入姓名,當(dāng)初始化了{(lán)string s;cin>>s;mp[s].name=s;}int t;cin>>t;while(t--){string name;//姓名int time;//提交時間string pos;//題目string state;//狀態(tài)cin>>name>>time>>pos>>state;if(state=="Compilation-Error"||mp[name].problem[pos[0]-'A'].AC)//編譯錯誤或者已經(jīng)ACcontinue;else if(state=="Accepted")//AC{mp[name].problem[pos[0]-'A'].time=time;mp[name].problem[pos[0]-'A'].cal();mp[name].time+=mp[name].problem[pos[0]-'A'].waste;mp[name].cnt_AC++;}else//WA{mp[name].problem[pos[0]-'A'].waste+=20;mp[name].problem[pos[0]-'A'].cnt_waste++;}}vector<pair<string,Node>>v;copy(mp.begin(),mp.end(),back_inserter(v));//把map扔進(jìn)vector里方便排序sort(v.begin(),v.end(),cmp);//排序v[0].second.rank=1;for(int i=1;i<v.size();i++)//更新rank{if(v[i].second==v[i-1].second)v[i].second.rank=v[i-1].second.rank;elsev[i].second.rank=i+1;}for(int i=0;i<v.size();i++)//輸出答案{printf("%d %s %d %d",v[i].second.rank,v[i].first.c_str(),v[i].second.cnt_AC,v[i].second.time);for(int j=0;j<n;j++){printf(" %c%d",v[i].second.problem[j].AC?'+':'-',v[i].second.problem[j].cnt_waste);if(v[i].second.problem[j].AC)printf("(%d)",v[i].second.problem[j].time);}printf("\n");}if(w)printf("\n");}return 0; }

?

總結(jié)

以上是生活随笔為你收集整理的牛客 - 排序(模拟)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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