程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> POJ 2153 Rank List map的應用

POJ 2153 Rank List map的應用

編輯:C++入門知識

題意:一個人有一些考試,每次得到一個分數,問經過i次考試後總分排名第幾。
思路:map的應用,一一對應即可。
代碼:
[cpp] 
#include <iostream> 
#include <cstdio> 
#include <string> 
#include <algorithm> 
#include <string.h> 
#include <map> 
using namespace std; 
 
const int N = 10010; 
int main(){ 
    //freopen("1.txt","r",stdin); 
    int n; 
    while(scanf("%d",&n) != EOF){ 
       string ss; 
       getchar(); 
       map<string,int> mp; 
       map<string,int> :: iterator it; 
       for(int i = 0; i < n; ++i){ 
           getline(cin,ss); 
           mp[ss] = 0; 
       } 
       int m; 
       scanf("%d",&m); 
       getchar(); 
       for(int i = 0; i < m; ++i){ 
           int value = 0,score = 0; 
           for(int j = 0;j < n; ++j){ 
               scanf("%d",&score); 
               getchar(); 
               getline(cin,ss); 
               mp[ss] += score; 
               if(ss == "Li Ming"){ 
                   value = mp[ss]; 
               } 
           } 
           int cnt = 0,num[N]; 
           for(it = mp.begin(); it != mp.end(); ++it){ 
               num[cnt++] = it -> second; 
           } 
           sort(num,num+cnt); 
           int lp = 0,rp = cnt - 1,ans = 0; 
           while(lp <= rp){ 
              int mid = (lp + rp) / 2; 
              if(num[mid] <= value){ 
                ans = mid; 
                lp = mid + 1; 
              }  www.2cto.com
              else 
                  rp = mid - 1; 
           } 
           printf("%d\n",n - ans); 
       } 
    } 
    return 0; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved