1095デコードPATチケット

 トラブルのグループ!幸いなことに、被験者は、比較的簡単な交換unordered_mapに出力タイムアウトに必要に応じて、。

 新しいガジェットのSTL-ペアに学び、それが構造として理解することができます。

構造体ペア{ 
   最初typename1。
   typename2二;  
}。

用途:

1.体とその二重構造は、コーディングの時間を節約するために、コンストラクタの代わりに使用することができます。同様B1085 PATユニットがランクイン。

2.マップとして使用することができるキー挿入します。

1つの#include " のiostream " 
2の#include " アルゴリズム" 
3の#include " ベクター" 
4の#include " unordered_map " 
5  使って 名前空間STDを、
6  
7  構造体学生{
 8      文字列ID。
9      int型グレード。
10 } STU [ 10010 ]。
11  
12  ブールCMP1(生徒、生徒B){
 13      であれば(a.grade!= b.grade)リターンa.grade> b.grade。
14      他の リターン a.id < b.id。
15  }
 16  
17  ブール CMP2(対< 文字列整数 >対< 文字列整数 > B){
 18      であれば(a.second = b.second!)戻り a.second> b.second。
19      他の リターン a.first < b.first。
20  }
 21  
22  int型のmain(){
 23      INT N、M。
24      のscanf(" %D%D "、&​​N、&M)。
25      のためにINTは iは= 0 ; I <N ++ {I)
 26          GETCHAR()。
27          CIN >> STU [i]の.ID。
28          のscanf(" %dの"、&STU [I] .grade)。
29      }
 30      のint 型。
31      文字列イン。
32      のためにINT iは= 1 ; iが<= M; ++ I){
 33          のscanf(" %dの"、&タイプ);
34          GETCHAR()。
35          cinを>> イン。
36          のprintf(" ケース%のD:%のD " 、I、タイプ)。
37          COUT <<イン<< ENDL。
38          であれば(タイプ== 1 ){
 39              ソート(STU、STU + N、CMP1)。
40              ブールフラグ= 41              のためにINT J = 0 ; J <N; ++ j)は{
 42                  であれば(INS [ 0 ] == STU [j]が.ID [ 0 ]){
 43                      フラグ= 44                     coutの<< STU [J] .ID。
45                      のprintf(" %D \ n " 、STU [J] .grade)。
46                  }
 47              }
 48              であれば(フラグ== )のprintf(" NA \ n " );
49          } そう であれば(タイプ== 2 ){
 50              INT CNT = 0、スコア= 0 51              のためにINT J = 0 ; J <N; ++ j)は{
 52                  もし(INS == STU [J] .id.substr(13は)){
 53である                      ++ CNT ;
 54れる                      スコア+ = STU [J] .grade;
 55                  }
 56である             }
 57が             IF(CNT == 0)のprintf(" \ N- NA "); // 決意条件レースの数が
58              他の
59                  のprintf(" %D%D \ N- ' 、CNT、スコア);
 60          } {
 61は              unordered_map < 文字列整数> M、
 62である             ためINT J = 0 ; J <N; ++ J){
 63は、                 IF(INS == STU [J] .id.substr(46 )){
 64                      M [STU [J] .ID .SUBSTR(13 ] ++);
 65                  }
 66              }
 67              IF(m.size()== 0)のprintf(" N- NA \ " );
 68              {
 69                  // キー値によって地図上に置きますキーと値のペアは、ベクターの構造に挿入される
70                  ベクトル<ペア<文字列int型 >> V(m.begin()、m.end());
71                  ソート(v.begin()、v.end()、CMP2)。
72                  のためにINT J = 0 ; J <v.size(); ++ j)は{
 73                      COUT << V [J] 1次回。
74                      のprintf(" %dの\ n " 、V [J] .second)。
75                  }
 76              }
 77          }
 78      }
 79      リターン 0 80 }

 

 

おすすめ

転載: www.cnblogs.com/keep23456/p/12368094.html