大資料處理
這樣的大資料的題,首先要確定乙個方便的資料結構
我來說一下我的資料結構,當然不是最好的,我見我老師的**比我快挺多
資料結構分析:
1. 「型別 為 1 表示要求按分數非公升序輸出某個指定級別的考生的成績,對應的 指令 則給出代表指定級別的字母;」
map>> a;
讓級別對應乙個集合,集合裡存放這個人的id和分數
2. 「型別 為 2 表示要求將某指定考場的考生人數和總分統計輸出,對應的 指令 則給出指定考場的編號;」
map> b;
考場對應人數和總分
3. 「為 3 表示要求將某指定日期的考生人數分考場統計輸出,對應的 指令 則給出指定日期,格式與准考證上日期相同。」
struct node這個稍微難點,我認為;mapc;
日期對應考場和人數,node裡的rap是考場對應人數
因為人數是隨著資料變化的,而考場號卻不變,必須讓不邊的對應變化的。但是之後的排序就有點麻煩,得先拿出到vector裡,在sort排序
c語言風格的字串
本來我的這個結構是超時的,我用的是cin,cout
然後換成了scanf和printf就ok了
但是string,並不能直接換啊。我的**中用的是c語言風格的string
#include
#include
#include
#include
#include
using
namespace std;
// 級別
map<
char
, vectorint>>
> a;
// 人數 總分
mapint,
int>> b;
// 人數 考場
struct node
;map c;
bool
cmp(pairint> e1, pairint> e2)
intmain()
);b[num]
.first++
; b[num]
.second +
= x;
++c[data]
.rap[num];}
char c;
for(
int i =
1; i <= m; i++
)sort
(a[c]
.begin()
, a[c]
.end()
, cmp)
;for
(auto e : a[c]
)printf
("%s %d\n"
, e.first.
c_str()
, e.second);}
else
if(x ==2)
printf
("%d %d\n"
, b[s]
.first, b[s]
.second);}
else
vectorint>> v;
for(
auto e : c[s]
.rap)
sort
(v.begin()
, v.
end(
), cmp)
;for
(auto e : v)
printf
("%s %d\n"
, e.first.
c_str()
, e.second);}
}return0;
}
1095 解碼PAT准考證
1095 解碼pat准考證 25 分 pat 准考證號由 4 部分組成 現給定一系列考生的准考證號和他們的成績,請你按照要求輸出各種統計資訊。輸入首先在一行中給出兩個正整數 n 10 4 和 m 100 分別為考生人數和統計要求的個數。接下來 n 行,每行給出乙個考生的准考證號和其分數 在區間 0,...
1095 解碼PAT准考證
pat 准考證號由 4 部分組成 現給定一系列考生的准考證號和他們的成績,請你按照要求輸出各種統計資訊。輸入首先在一行中給出兩個正整數 n 10 4 和 m 100 分別為考生人數和統計要求的個數。接下來 n 行,每行給出乙個考生的准考證號和其分數 在區間 0,100 內的整數 其間以空格分隔。考生...
1095 解碼PAT准考證
pat 准考證號由 4 部分組成 現給定一系列考生的准考證號和他們的成績,請你按照要求輸出各種統計資訊。輸入首先在一行中給出兩個正整數 n 10 4 和 m 100 分別為考生人數和統計要求的個數。接下來 n 行,每行給出乙個考生的准考證號和其分數 在區間 0,100 內的整數 其間以空格分隔。考生...