CF493A Vasya and Football 题解
2024-09-08 05:02:34
Content
有两个球队在踢足球,现在给出一些足球运动员被黄牌或红牌警告的时间,求每个队员第一次被红牌警告的时间。
注意:根据足球比赛规则,两张黄牌自动换成一张红牌。
数据范围:比赛时间 \(90\) 分钟,足球员号码 \(\leqslant 99\)。
Solution
这道题目就是一个很纯粹的模拟。主要注意以下几点:
- 两个球队当中也许有相同号码的球员。比如说近现代的 \(10\) 号球员有很多,比如说齐达内和梅西等。
- 球员被红牌下场了,但后面还有可能会录入关于该球员的警告信息,此时应该忽略它。
考虑完这些,模拟就简单多了。
Code
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
string a, b;
int num_of_foul, ye[2][1007], vis[2][1007];
int main() {
cin >> a >> b;
scanf("%d", &num_of_foul);
for(int i = 1; i <= num_of_foul; ++i) {
int t_of_foul, num;
char ha[2], yr[2];
scanf("%d%s%d%s", &t_of_foul, ha, &num, yr);
if(yr[0] == 'r' && (ha[0] == 'h' ? !vis[0][num] : !vis[1][num])){
if(ha[0] == 'h') cout << a << ' ';
else if(ha[0] == 'a') cout << b << ' ';
printf("%d %d\n", num, t_of_foul);
if(ha[0] == 'h') vis[0][num] = 1;
else if(ha[0] == 'a') vis[1][num] = 1;
} else if(yr[0] == 'y') {
if(ha[0] == 'h') ye[0][num]++;
else if(ha[0] == 'a') ye[1][num]++;
if(ye[0][num] == 2 && !vis[0][num]) {
cout << a << ' ';
printf("%d %d\n", num, t_of_foul);
vis[0][num] = 1;
} else if(ye[1][num] == 2 && !vis[1][num]){
cout << b << ' ';
printf("%d %d\n", num, t_of_foul);
vis[1][num] = 1;
}
}
}
}
最新文章
- Struts2中的ModelDriven机制及其运用
- linux关于文件的那些事儿
- Java开发之文件上传
- Android下常见的四种对话框
- javascript 百度地图
- python之6-3嵌套函数
- 关于ActionContext.getContext()的使用方法心得
- Android----->;多线程的实现Thread、IntentService的运用
- Updates were rejected because the remote contains work that you do
- Android用户登录机制安全性的一些思考
- C#逻辑面试题汇总【不断更新中】
- Log Filter分析
- Ubuntu安装vsftpd并通过xftp连接
- centos7 ssh连接慢
- segmentController
- java中关于重载与重写的区别
- JSdom操作内容,样式,属性
- JS 父页面调子页面(2种情况),子掉父级(1种)(转)
- 关于新加坡IT薪酬和找工作网站
- iOS开发-UIImageView响应点击事件