链接: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. 7 家 IT 厂商 6394.5 万元中标天津公安云项目(虚拟化、数据库、软件开发)

    http://mp.weixin.qq.com/s/kjum54HJorGTPtZiM-HE1g 天津市公安局云计算平台项目分为:大数据部分.虚拟化部分.数据库部分,软件开发部分,预算分别为:2350 ...

  2. Wsgi的web框架实例

    建立server服务端: from wsgiref.simple_server import make_server import time def f1(request): return [b'&l ...

  3. 05-spark streaming & kafka

    1.如何消费已经被消费过的数据? 答:采用不同的group 2.如何自定义去消费已经消费过的数据? Conosumer.properties配置文件中有两个重要参数 auto.commit.enabl ...

  4. SpringBoot入门 (十) 发送邮件

    本文记录学习在SpringBoot中发送邮件. 一 邮件发送过程 发送邮件是一个我们在项目中经常会用到的功能,如在用户注册时发送验证码,账户激活等都会用到.完整的一个邮件发送过程主要包含以下几个步骤: ...

  5. android 相对布局例子代码

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  6. tornado-同步异步下载图片

    同步下载,阻塞 from tornado.httpclient import HTTPClient url = 'http://fafafiajwoachwe.jpeg' client = HTTPC ...

  7. ios8.1.1系统怎么取消下划线

    http://zhidao.baidu.com/link?url=y-3oAiOsuCSvoCD-7H2Uvgl_UI1BQQuNvA2jHKCRAGmZSH7_RrwDijKtRouMBa5yF_L ...

  8. iOS源文件工程打包

    第一步:添加开发者账号 第二步:刷新 第三步:设置证书名 第四步:Export

  9. J2SE 5.0-memory management whitepaper--delete

    1.垃圾回收器期职责 开辟空间 任何引用可达的对象都在内存内 回收不再使用的内存 3.垃圾回收器概念 3.1.垃圾回收器期望的性能 垃圾回收器必须安全,存活的对象不应该被释放,应该释放的对象存活的时间 ...

  10. git push异常

    git push异常:! [remote rejected] HEAD -> refs/for/master ([3149246] missing Change-Id in commit mes ...