zoukankan      html  css  js  c++  java
  • 7-17 奥运排行榜 (25 分)

    题目:

    思路:针对四种排序方法构建四个结构体,按四种排序排完之后,把结果汇总到代表国家的一个结构体中。然后就是查询就是了。排序规则可通过下面的例子了解一下:

    序列:g[0] = 1,g[1] = 2,g[2] = 2, g[3] = 3;

    排名:1          ,2        ,2          ,3(并不是1,2,3,4)

    代码: 

      1 #include <bits/stdc++.h>
      2 #define FRE() freopen("in.txt","r",stdin)
      3 using namespace std;
      4 const int maxn = 500;
      5 typedef unsigned long long ll;
      6 int n,q;
      7 
      8 struct Country
      9 {
     10     int g,s;
     11     int g_p,s_p;
     12 } ct[maxn];
     13 
     14 struct node
     15 {
     16     double gold_p, silver_p;
     17     int g, s;
     18     int id;
     19 } g[maxn],s[maxn],g_p[maxn],s_p[maxn];
     20 
     21 void init()
     22 {
     23     cin>>n>>q;
     24     for(int i = 0; i<n; i++)
     25     {
     26         int num;
     27         cin>>g[i].g>>s[i].s>>num;
     28         g_p[i].gold_p = 1.0*g[i].g/num;
     29         s_p[i].silver_p = 1.0*s[i].s/num;
     30         g[i].id = s[i].id = g_p[i].id = s_p[i].id = i;
     31     }
     32     return;
     33 }
     34 
     35 bool cmdg(node& a, node& b)
     36 {
     37     if(a.g == b.g)
     38         return a.id<b.id;
     39     return a.g > b.g;
     40 }
     41 bool cmds(node& a,node& b)
     42 {
     43     if(a.s==b.s)
     44         return a.id<b.id;
     45     return a.s > b.s;
     46 }
     47 bool cmdg_p(node& a,node& b)
     48 {
     49     return a.gold_p > b.gold_p;
     50 }
     51 bool cmds_p(node& a,node& b)
     52 {
     53     return a.silver_p > b.silver_p;
     54 }
     55 
     56 int main()
     57 {
     58     init();
     59     sort(g,g+n,cmdg);
     60     int lastid = 0;
     61     ct[g[0].id].g = 0;
     62     for(int i = 1; i<n; i++)
     63     {
     64         if(g[i].g==g[i-1].g)
     65             ct[g[i].id].g = lastid;
     66         else
     67         {
     68             ct[g[i].id].g = i;
     69             lastid = i;
     70         }
     71     }
     72     sort(s,s+n,cmds);
     73     lastid = 0;
     74     ct[s[0].s].s = 0;
     75     for(int i = 1; i<n; i++)
     76     {
     77         if(s[i].s==s[i-1].s)
     78             ct[s[i].id].s = lastid;
     79         else
     80         {
     81             ct[s[i].id].s = i;
     82             lastid = i;
     83         }
     84     }
     85     sort(g_p,g_p+n,cmdg_p);
     86     lastid = 0;
     87     ct[g_p[0].id].g_p = 0;
     88     for(int i = 1; i<n; i++)
     89     {
     90         if(g_p[i].gold_p == g_p[i-1].gold_p)
     91             ct[g_p[i].id].g_p = lastid;
     92         else
     93         {
     94             ct[g_p[i].id].g_p = i;
     95             lastid = i;
     96         }
     97     }
     98     sort(s_p,s_p+n,cmds_p);
     99     lastid = 0;
    100     ct[s_p[0].id].s_p = 0;
    101     for(int i = 1; i<n; i++)
    102     {
    103         if(s_p[i].silver_p == s_p[i-1].silver_p)
    104             ct[s_p[i].id].s_p = lastid;
    105         else
    106         {
    107             ct[s_p[i].id].s_p = i;
    108             lastid = i;
    109         }
    110     }
    111     for(int i = 0; i<q; i++)
    112     {
    113         int tmp,f,ans;
    114         cin>>tmp;
    115         f = 1,ans = ct[tmp].g;
    116         if(ct[tmp].s<ans)
    117             f = 2,ans = ct[tmp].s;
    118         if(ct[tmp].g_p<ans)
    119             f = 3,ans = ct[tmp].g_p;
    120         if(ct[tmp].s_p<ans)
    121             f = 4,ans = ct[tmp].s_p;
    122         if(i)
    123             cout<<" ";
    124         cout<<ans+1<<":"<<f;
    125     }
    126     return 0;
    127 }
    128 /*
    129 样例输入:
    130 4 4
    131 51 100 1000
    132 36 110 300
    133 6 14 32
    134 5 18 40
    135 0 1 2 3
    136 样例输出:
    137 1:1 1:2 1:3 1:4
    138 */
    View Code
  • 相关阅读:
    jquery弹出窗口
    js定时器
    jquery树形菜单
    用convert转换参数对比
    jquery常用例子!
    JS总结
    上传简历实现只浏览不下载的效果
    区块链入门(1):搭建(Ubuntu系统)Truffle v3.2.1 开发和测试环境
    URL Routing组件是如何与ASP.NET MVC框架组合起来的
    接单网站收集
  • 原文地址:https://www.cnblogs.com/sykline/p/9737853.html
Copyright © 2011-2022 走看看