真心是道水题,但找bug找的我想剁手了/(ㄒoㄒ)/~~

注意几个坑点,

1、输入,getline(cin); / gets(); 一行输入,注意前面要加getchar();

   输入运行记录的时候可以采取scanf("%d %c %d %c");的方式,因为已经说一个整型数后面只有一个空格;

2、该场没人出题时,队伍的得分是0;

某支队伍j比0场时,T[j] = 0;

3、如果前两支队伍出题数与罚时都相同,排名并列第1;后面的队伍从3开始排;

基本上没有了吧...被恶心到了。本应该出的题又被自己的粗心祸害了。这次比的仍是很糟,希望尽快好起来。。。

  1. #include <cstdio>
  2. #include <iostream>
  3. #include <sstream>
  4. #include <cmath>
  5. #include <cstring>
  6. #include <cstdlib>
  7. #include <string>
  8. #include <vector>
  9. #include <map>
  10. #include <set>
  11. #include <queue>
  12. #include <stack>
  13. #include <algorithm>
  14. using namespace std;
  15. #define ll long long
  16. #define _cle(m, a) memset(m, a, sizeof(m))
  17. #define repu(i, a, b) for(int i = a; i < b; i++)
  18. #define repd(i, a, b) for(int i = b; i >= a; i--)
  19. #define sfi(n) scanf("%d", &n)
  20. #define sfl(n) scanf("%I64d", &n)
  21. #define pfi(n) printf("%d\n", n)
  22. #define pfl(n) printf("%I64d\n", n)
  23. #define MAXN 105
  24. const int maxn = ;
  25. const int maxm = ;
  26. string Name[maxn];
  27.  
  28. struct TEAM
  29. {
  30. int id;
  31. int Time;
  32. int pro;
  33. TEAM(int _x = , int _pro = , int _t = ):id(_x), pro(_pro), Time(_t) {}
  34. bool operator < (const TEAM& rhs) const
  35. {
  36. if(rhs.pro != pro) return rhs.pro < pro;
  37. else return Time < rhs.Time;
  38. }
  39. };
  40. struct Score
  41. {
  42. int id;
  43. double s;
  44. Score(int _x = , double _s = 0.0) : id(_x), s(_s) {}
  45. bool operator < (const Score& rhs) const
  46. {
  47. return rhs.s < s;
  48. }
  49. };
  50.  
  51. int C[maxn]; //i队参加比赛的次数
  52. double S[maxn];
  53. double RS[maxn];
  54. double T[maxn];
  55. int wa[maxn][]; //i队j题的WA次数
  56.  
  57. int main()
  58. {
  59. int Kase;
  60. scanf("%d", &Kase);
  61. for(int kk = ; kk <= Kase; kk++)
  62. {
  63. memset(C, , sizeof(C));
  64. memset(S, , sizeof(S));
  65. memset(RS, , sizeof(RS));
  66. memset(T, , sizeof(T));
  67.  
  68. int n; scanf("%d", &n);
  69. getchar();
  70. int maxl = ;
  71. for(int i = ; i <= n; i++)
  72. {
  73. getline(cin, Name[i]);
  74. int len = Name[i].length();
  75. maxl = max(maxl, len);
  76. }
  77. int m; scanf("%d", &m);
  78.  
  79. for(int i = ; i <= m; i++)
  80. {
  81. int P[maxn]; //i队解决的问题数
  82. int Time[maxn]; //i队罚时
  83. int K; scanf("%d", &K); //第i场参加队伍数
  84. int A = *K-, B = K-;
  85. vector<int> team;
  86. for(int j = ; j < K; j++)
  87. {
  88. int t;
  89. scanf("%d", &t); team.push_back(t);
  90. C[t]++;
  91. }
  92. int pn; scanf("%d", &pn);
  93. int in; scanf("%d", &in);
  94. memset(wa, , sizeof(wa));
  95. while(in--)
  96. {
  97. int tt, tit;
  98. char pt, flag;
  99. scanf("%d %c %d %c", &tt, &pt, &tit, &flag);
  100. if(flag == '+')
  101. {
  102. if(wa[tt][pt-'A'] != -)
  103. {
  104. Time[tt] += (tit+(wa[tt][pt-'A']*));
  105. P[tt]++;
  106. wa[tt][pt-'A'] = -;
  107. }
  108. }
  109. else
  110. {
  111. if(wa[tt][pt-'A'] != -)
  112. wa[tt][pt-'A']++;
  113. }
  114. }
  115.  
  116. int PM = ; //A题最多数
  117. vector<TEAM> team_;
  118. for(int j = ; j < K; j++)
  119. {
  120. int tj = team[j];
  121. team_.push_back(TEAM(tj, P[tj], Time[tj]));
  122. PM = max(PM, P[tj]);
  123. }
  124. sort(team_.begin(), team_.end());
  125. int R; //排名
  126. for(int j = ; j < K; j++)
  127. {
  128. int tj = team_[j].id;
  129. if(j && team_[j].pro == team_[j-].pro && team_[j].Time == team_[j-].Time) ;
  130. else R = j+;
  131. if(PM != )
  132. RS[tj] = (1.0*P[tj])/PM;
  133. else
  134. RS[tj] = 0.0;
  135. S[tj] += (RS[tj]*A)/(R+B); //tj队累计得分
  136. }
  137. }
  138. vector<Score> ans;
  139. for(int j = ; j <= n; j++)
  140. {
  141. if(C[j] == ) T[j] = 0.0;
  142. else T[j] = S[j]/C[j]; //第j队总得分
  143. ans.push_back(Score(j, T[j]));
  144. }
  145. sort(ans.begin(), ans.end()); //总得分排序,输出
  146. for(int i = ; i < ans.size(); i++)
  147. {
  148. cout << Name[ans[i].id];
  149. for(int j = ; j < (maxl+)-Name[ans[i].id].length(); j++)
  150. {
  151. printf(" ");
  152. }
  153. printf("%.4lf\n", ans[i].s);
  154. }
  155. if(kk != Kase) printf("\n");
  156. }
  157. return ;
  158. }

【模拟ACM排名】ZOJ-2593 Ranking (Andrew Stankevich’s Contest #5)的更多相关文章

  1. [Andrew Stankevich's Contest#21] Lempel-Ziv Compression

    Time Limit: 20000/10000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others)     Special Judge ...

  2. Andrew Stankevich's Contest (21) J dp+组合数

    坑爹的,,组合数模板,,, 6132 njczy2010 1412 Accepted 5572 MS 50620 KB C++ 1844 B 2014-10-02 21:41:15 J - 2-3 T ...

  3. Andrew Stankevich&#39;s Contest (1)

    Andrew Stankevich's Contest (1) 打一半出门了,回来才补完了...各种大数又不能上java..也是蛋疼无比 A:依据置换循环节非常easy得出要gcd(x, n) = 1 ...

  4. acdream:Andrew Stankevich Contest 3:Two Cylinders:数值积分

    Two Cylinders Special JudgeTime Limit: 10000/5000MS (Java/Others)Memory Limit: 128000/64000KB (Java/ ...

  5. 2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest

    2017 ACM - ICPC Asia Ho Chi Minh City Regional Contest A - Arranging Wine 题目描述:有\(R\)个红箱和\(W\)个白箱,将这 ...

  6. ACM题目————zoj问题

    题目1006:ZOJ问题 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:20322 解决:3560 题目描述: 对给定的字符串(只包含'z','o','j'三种字符),判断他是否能AC. ...

  7. 拓扑排序--P2881 [USACO07MAR]排名的牛Ranking the Cows

    *传送 FJ想按照奶牛产奶的能力给她们排序.现在已知有N头奶牛(1 ≤ N ≤ 1,000).FJ通过比较,已经知道了M(1 ≤ M ≤ 10,000)对相对关系.每一对关系表示为“X Y”,意指X的 ...

  8. Linux下使用USB模拟ACM串口设备

    这个想法之前就在脑袋里有过,最近公司产品要用到,所以多做了些了解. 1. USB 简介 USB 是 Universal Serial Bus 的缩写,从字面上看,就是通用串行总线的意思.从物理上看,其 ...

  9. [ACM_模拟] ACM - Draw Something Cheat [n个长12的大写字母串,找出交集,按字母序输出]

    Description Have you played Draw Something? It's currently one of the hottest social drawing games o ...

随机推荐

  1. picture to string

    图片转化为字符原理: 一张m*n大小的图片,实际上可以看成是一个m*n的矩阵.矩阵的每一个元素就是一个Color值,不同的Color值,用不同的Ascii可以在屏幕上打印显示的字符来代替,于是可以得到 ...

  2. [iOS基础控件 - 6.11.3] 私人通讯录Demo 控制器的数据传递、存储

    A.需求 1.搭建一个"私人通讯录"Demo 2.模拟登陆界面 账号 密码 记住密码开关 自动登陆开关 登陆按钮 3.退出注销 4.增删改查 5.恢复数据(取消修改)   这个代码 ...

  3. C#中垃圾回收与内存管理机制

    今天抽空来讨论一下.Net的垃圾回收与内存管理机制,也算是完成上个<WCF分布式开发必备知识>系列后的一次休息吧.以前被别人面试的时候问过我GC工作原理的问题,我现在面试新人的时候偶尔也会 ...

  4. 【PYTHON】二维码生成

    二维码是什么? 二维码从一维码扩展而来,增加另一维具有可读性的条码,用黑白矩形图形表示二进制数据,被设备扫描后获取其中包含的信息,二维码的长度.宽度均记载着数据,二维码具有定位点和容错机制,即便没有辨 ...

  5. Wifi热点工具-青青草原WiFi

    有时只有有线网络,但手机需要上网,这时需要将笔记本作为无线热点. 青青草原WiFi,这个工具用起来挺方便,http://www.22zy.net/.

  6. angurlajs 如何绑定Jquery

    //绑定Jqueryfunction bindJQuery() { // bind to jQuery if present; jQuery = window.jQuery;//获取windows 的 ...

  7. PL/pgSQL学习笔记之一

    开始 资料来源:http://www.postgresql.org/docs/9.1/static/plpgsql-overview.html 39.1 概要: PL/pgSQL是一种可载入的过程语言 ...

  8. 跨平台实现wchar_t转成char

    位宽.其实知道了这个以后,要在wchar_t 和 char两种类型之间转换就不难实现了. wchar_t 转换为char 的代码如下: 有如下的wchar_t和char变量 wchar_t w_cn ...

  9. Android 开发之旅:深入分析布局文件&又是“Hello World!”

    http://www.cnblogs.com/skynet/archive/2010/05/20/1740277.html 引言 上篇可以说是一个分水岭,它标志着我们从Android应用程序理论进入实 ...

  10. 用adb pull命令从android系统中读取文件失败的原因及解决办法

    问题:使用adb pull命令从android系统中读取文件失败.显示:Permission denied   原因:是由于文件权限原因引起.       使用ls -l命令查看android系统中的 ...