zoukankan      html  css  js  c++  java
  • hihocoder 1566 皇室成员的名字

    
    

    #1566 : 皇室成员的名字

    
    
    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    小Ho正在学习世界历史。他发现历史上很多西方国家的皇室成员的名字都是由英文名字加罗马数字组成的,例如George IV(乔治四世)、William IV(威廉四世)、Elizabeth II(伊丽莎白二世)等。  

    为了更好的梳理历史脉络,小Ho决定写个程序把历史书上出现过的皇室名字排序:首先按英文名字的字典序排序,如果英文名字相同,再按罗马数字从小到大的顺序排序。  

    罗马数字表示可以参考 https://en.wikipedia.org/wiki/Roman_numerals 中的"standard forms"。

    输入

    第一行包含一个整数N,表示名字的总数。

    以下N行每行包含一个名字。英文名字与罗马数字之间由一个空格隔开。其中英文名字首字母是大写字母,其余字母是小写字母。  

    对于100%的数据,1 ≤ N ≤ 100000, 罗马数字 < 4000

    输出

    输出N行,每行一个名字。

    样例输入
    5  
    Elizabeth II  
    Elizabeth C 
    William IV  
    Hiho MMXVII  
    Hiho MMXVII 
    样例输出
    Elizabeth II
    Elizabeth C
    Hiho MMXVII  
    Hiho MMXVII    
    William IV



    1
    #include<bits/stdc++.h> 2 #define pb push_back 3 using namespace std; 4 const int maxn = 1e3 + 10; 5 struct node {//结构体保存数据 6 string v; 7 string t; 8 int id; 9 node() { 10 id = 0; 11 } 12 node(string x, string y, int d) : v(x),t(y),id(d){} 13 bool operator<(const node&x)const {//排序方法 14 if(v == x.v) return id < x.id; 15 return v < x.v; 16 } 17 }; 18 int romanToInt(string s) {//计数阿拉伯数字对应的数值 19 int tagVal[256]; 20 tagVal['I'] = 1; 21 tagVal['V'] = 5; 22 tagVal['X'] = 10; 23 tagVal['C'] = 100; 24 tagVal['M'] = 1000; 25 tagVal['L'] = 50; 26 tagVal['D'] = 500; 27 int val = 0; 28 for(int i = 0; i < s.length(); i++){ 29 if(i+1 >= s.length() || tagVal[s[i+1]] <= tagVal[s[i]]) 30 val += tagVal[s[i]]; 31 else 32 val -= tagVal[s[i]]; 33 } 34 return val; 35 } 36 37 int main() { 38 int n; 39 vector<node> a; 40 string x, y; 41 cin >> n; 42 for (int i = 0; i < n; i++) { 43 cin >> x >> y; 44 node t(x, x+" " + y, romanToInt(y)); 45 a.pb(t); 46 } 47 sort(a.begin(), a.end()); 48 for (node&t:a) 49 cout << t.t << endl; 50 return 0; 51 }
  • 相关阅读:
    Find the Smallest K Elements in an Array
    Count of Smaller Number
    Number of Inversion Couple
    Delete False Elements
    Sort Array
    Tree Diameter
    Segment Tree Implementation
    Java Programming Mock Tests
    zz Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)
    Algorithm about SubArrays & SubStrings
  • 原文地址:https://www.cnblogs.com/52why/p/7475800.html
Copyright © 2011-2022 走看看