1095 解碼PAT准考證 大資料處理

2021-10-08 11:03:14 字數 1884 閱讀 8779

大資料處理

這樣的大資料的題,首先要確定乙個方便的資料結構

我來說一下我的資料結構,當然不是最好的,我見我老師的**比我快挺多

資料結構分析:

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 內的整數 其間以空格分隔。考生...