链接:https://ac.nowcoder.com/acm/contest/327/B
来源:牛客网

题目描述

众所周知,处女座经常通过打cf来调节自己的心情。今天处女座又参加了一场cf的比赛,他知道了所有的提交记录,他想知道自己的得分和排在第几名。你知道处女座的cf账号是cnz

Codeforces规则如下:

1.       比赛一共2小时

2.       比赛有5题,A题500分,B题1000分,C题1500分,D题2000分,E题2500分。

3.       得分规则如下:

在第0分钟完成某一题可以得到全部的分数,每过一分钟每题的分值会衰减1/250,比如在第3分钟完成A题,能够得到500-2*3=494分

4.       如果一道题是的返回结果WA或者TLE被称为错误的提交,CE视为无效的提交,AC,WA和TLE 都视为有效的提交。如果一道题你最后通过了,你会得到这道题衰减之后的分值再减去你错误提交次数*50,就是每次错误的提交会有50分的罚时。

5.       如果你通过了一道题,你的得分不会低于该题分值的30%。比如你在第50分钟通过了A,你有7次错误的提交,你的得分为max(500*0.3,500-2*50(得分衰减)-7*50(错误提交的罚时))=150分。

6.       由于hack机制的存在,你每进行一次提交,对于这一题之前的有效提交(AC,WA,TLE)都视为错误的提交。

7.       一个人只有提交(AC,WA,TLE,CE)过代码,才被视为参加比赛。

处女座又了解到一些信息:

本场比赛没有任何选手hack别人,并且没有任何的提交fst(即只要是某题的最后一次提交通过,就视为通过这道题)

输入描述:

第一行两个整数n和m,n为报名比赛的人数,m为提交的个数
接下来n行,每行一个字符串,表示报名比赛的人的昵称。(字符串只包含小写字母,且长度小于20)
接下来m行,每行的格式为Time,Submiter,Problem,Verdict。
Time为提交的时间,是1到120中的一个正整数(包含1和120),保证Time按顺序给出
Submiter为提交者昵称
Problem为题目名称,是’A’,’B’,’C’,’D’,’E’中的一个字母。
Verdict为返回的结果,为”AC”,”WA”,”TLE”,”CE”中的一个。
2<=n<=500
1<=m<=10000

输出描述:

如果处女座参加了比赛,输出两行:
第一行为处女座的得分
第二行格式x/y,其中x为处女座的排名,y为参加比赛的总人数。如果分数相同那么排名并列。
如果处女座没有参加比赛,输出”-1”
示例1

输入

3 7
cnz
cuber
moon
3 cnz A AC
5 cuber A AC
6 cnz B CE
10 cuber C AC
20 cnz B AC
30 cuber D TLE
100 cnz E AC

输出

2914
1/2
题目的坑:(能用人话讲清楚的,非要用鬼话)
1.以最后一次提交作为结果,比如ac之后又wa,当作wa
2.提交ce是无效提交,不扣分,但是可以认为参加了比赛
3.ac之后又ac,上次的ac作为错误提交,相当于wa
4.关系错综复杂,要正确处理好各自的关系,用映射解决提交过程中选手的编号
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<math.h>
#include<set>
#include<string>
#include<sstream>
#include<map>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std; map<string,int>mp;//参赛选手对应编号以方便查找数组下标
int ans[];//最终分数
int ac[][];
int wa[][];
bool flag[];//是否参赛
int main()
{
memset(ans,,sizeof(ans));
memset(ac,-,sizeof(ac));//初始化没有ac的状态为-1,如果ac则改为ac的时间
memset(wa,,sizeof(wa));
memset(flag,false,sizeof(flag));
int n,m; string s;
scanf("%d%d",&n,&m);
for(int i=;i<=n;i++)
{
cin>>s;
mp[s]=i;
}
int t; char p; string v;
for(int i=;i<=m;i++)
{
cin>>t>>s>>p>>v;
flag[ mp[s] ]=true;//确定为参赛
if(v[]!='A')//wa
{
if(ac[mp[s]][p-'A']!=-) //ac过,犯贱让它wa了
{
ac[mp[s]][p-'A']=-;//重新置为没有ac
wa[mp[s]][p-'A']++;//wa次数+1,上次ac当作wa处理,
}
wa[mp[s]][p-'A']++;//本次又是一发wa
}
else //ac
{
if(ac[mp[s]][p-'A']!=-)//ac后又ac
{
wa[mp[s]][p-'A']++;//上一发ac当作wa,wa+1
ac[mp[s]][p-'A']=t;//更新ac时间
}
else//没ac过
{
ac[mp[s]][p-'A']=t;
}
}
if(v[]=='C')//CE是无效提交,前面把它当作有效提交wa处理了
wa[mp[s]][p-'A']--;
}
int num=;
for(int i=;i<=n;i++)
{
if(flag[i])
{
num++;//统计参赛人数
for(int j=;j<=;j++)//遍历五道题统计分数
{
if(ac[i][j]!=-)//ac的题目才算分
{
int group=+j*;//本题分数
int minn=group*0.3;//本题至少得分,max函数里不允许用group*0.3
int tg=ac[i][j]*(group/);//因时间问题扣分
int wag=wa[i][j]*;//因wa扣分
ans[i]=ans[i]+max(minn,group-tg-wag);//累加参赛选手的总分
}
}
}
}
if(!flag[mp["cnz"]])
printf("-1\n");//处女座没参赛输出一行就好
else
{
printf("%d\n",ans[mp["cnz"]]);
int rank=;//初始化排位为1
for(int i=;i<=n;i++)
{
//printf("ans[%d]=%d\n",i,ans[i]);
if(ans[i]>ans[mp["cnz"]])
rank++;//不要去统计排第几,有一人比他高,排名就往后掉
}
printf("%d/%d",rank,num);
}
return ;
}

处女座与cf-模拟的更多相关文章

  1. EFCore Lazy Loading + Inheritance = 干净的数据表 (二) 【献给处女座的DB First程序猿】

    前言 本篇是上一篇EFCore Lazy Loading + Inheritance = 干净的数据表 (一) [献给处女座的DB First程序猿] 前菜 的续篇.这一篇才是真的为处女座的DB Fi ...

  2. EFCore Lazy Loading + Inheritance = 干净的数据表 (一) 【献给处女座的DB First程序猿】

    前言 α角 与 β角 关于α角 与 β角的介绍,请见上文 如何用EFCore Lazy Loading实现Entity Split. 本篇会继续有关于β角的彩蛋在等着大家去发掘./斜眼笑 其他 本篇的 ...

  3. 牛客寒假算法基础集训营3处女座和小姐姐(三) (数位dp)

    链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  4. 牛客寒假算法基础集训营3B 处女座的比赛资格(用拓扑排序解决DAG中的最短路)

    链接:https://ac.nowcoder.com/acm/contest/329/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...

  5. 处女座和小姐姐(三)-数位dp1.0

    链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 题目描述 经过了选号和漫长的等待,处女座终于拿到了给小姐姐定制的手环,小姐姐看到以后直呼666! ...

  6. 我追一个处女座的女孩快两个月了,我之前聊得很好,她说过有空call我去看电影,过了一个月她就不理我了,我喜欢她, 我是程序员,百度发不了那么多字。

    她刚刚进公司的时候,公司组织去打球,我叫她一起去她也去了,我和她聊了很多,聊得很自然,很开心,如我是哪个学习毕业的 我出来工作多久了等,她也聊了 她自己好多,她现在在读大学,只有周日上一天课那种. 我 ...

  7. 处女座和他的小姐姐(三)----数位DP

    链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 经过了选号和漫长的等待,处女座终于拿到了给小姐姐定制的手环,小姐姐看到以后直呼666! 处女座其实 ...

  8. 处女座和小姐姐(三)(数位dp)

    链接:https://ac.nowcoder.com/acm/contest/329/G 来源:牛客网 题目描述 经过了选号和漫长的等待,处女座终于拿到了给小姐姐定制的手环,小姐姐看到以后直呼666! ...

  9. now code——处女座的期末复习

    题目描述 快要期末考试了,处女座现在有n门课程需要考试,每一门课程需要花ai小时进行复习,考试的起始时间为bi,处女座为了考试可以不吃饭不睡觉,处女座想知道他能否复习完所有的科目(即在每一门考试之前复 ...

随机推荐

  1. python+selenium+PhantomJS批量投递智联简历(不要用自己的账号进行测试,请使用小号,很烦人的,哈哈哈)

    1.环境python2.7+selenium+PhantomJS(软件安装和库的安装网上都有教程我们跳过,so easy) 2.原理 绕过首页登录需要验证码,直接进入搜索栏,输入搜索的职位+地区搜索出 ...

  2. .NET Core和.NET Standard

    作为.NET家族的最新成员,有很多关于.NET Core和.NET Standard的误解,以及它们于.NET Framework之间的区别.在这篇文章,我会准确的解释他们究竟是什么,并看看何时应选择 ...

  3. 3-scala高级

    1.模式匹配 //①简单表示: sign = ch match { case '+' => 1 case '-' => -1 case '_' => 0 } //②守卫:(case中 ...

  4. nginx 本地映射

    server{ listen 80; server_name www.test.com; ssi on; ssi_silent_errors on; //设置为on则在处理SSI文件出错时不输出错误信 ...

  5. ERROR: iterator not incrementable || iterator not decrementable

    这个错误提示:迭代器不可以增加 exmaple: vector<int> tVecInt; vector<int>::reverse_iterator iterInt = tV ...

  6. ajax,jsonp跨域访问数据

    访问高德aip天气接口 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> & ...

  7. ROS进阶学习笔记(11)- Turtlebot Navigation and SLAM - ROSMapModify - ROS地图修改

    ROS进阶学习笔记(11)- Turtlebot Navigation and SLAM - 2 - MapModify地图修改 We can use gmapping model to genera ...

  8. tkinter events format

    tkinter label 标签主要显示,通常不与用户进行交互事件 frame容器上获取点击的事件坐标 event.x,event.y event.key获取键盘数据

  9. liunx poi excel下载内容乱码本地tomcat正常

    结论:在jsp中加上out.clear即可(前提保证生成的excel在服务器上是正确的,只是浏览器传输才出现乱码). dowload.jsp完整代码 <%@ page language=&quo ...

  10. leetcode212

    class Solution { public List<String> findWords(char[][] board, String[] words) { List<Strin ...