HihoCoder1670 : 比赛日程安排([Offer收割]编程练习赛41)(模拟)
2024-09-06 02:12:21
描述
H国编程联赛中有N只队伍,编号1~N。 他们计划在2018年一共进行M场一(队)对一(队)的比赛。
为了让参赛队员能得到充分的休息,联赛组委会决定:每支队伍连续两场比赛之间至少间隔一天。也就是如果A队1月1日参加了一场比赛,那么下一场比赛最早安排在1月3日。
给定M场比赛的时间和参赛的两支队伍,请你判断这个日程安排是否可行。
输入
第一行包含一个整数T,代表测试数据组数。(1 ≤ T ≤ 10)
对于每组数据,第一行包含两个整数N和M。(1 ≤ N ≤ 50, 1 ≤ M ≤ 1000)
以下M行每行描述一场比赛,包含比赛日期(格式MM-DD),以及2支参赛队伍的编号。
输出
对于每组数据输出YES或者NO,代表日程安排是否可行。
样例输入
2
3 3
01-01 1 2
01-03 1 3
01-05 2 3
4 4
02-01 4 3
01-30 4 1
01-31 1 2
01-30 2 3
样例输出
YES
NO
模拟即可。
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int d[]={,,,,,,,,,,,,};
int a[][];
int main()
{
int T,n,m,i,j,x,y,date,mon,day;bool Flag;
scanf("%d",&T);
while(T--){
Flag=true;
scanf("%d%d",&n,&m);
for(i=;i<=n;i++) a[i][]=;
for(i=;i<=m;i++) {
scanf("%d-%d%d%d",&mon,&day,&x,&y);
date=;
for(j=;j<mon;j++) date+=d[j];
date+=day;
a[x][++a[x][]]=date;
a[y][++a[y][]]=date;
}
for(i=;i<=n;i++) sort(a[i]+,a[i]+a[i][]+);
for(i=;i<=n;i++)
for(j=;j<=a[i][];j++)
if(a[i][j]-a[i][j-]<) Flag=false;
if(Flag) printf("YES\n");
else printf("NO\n");
}
}
最新文章
- 对git的理解及常用指令
- 通过setDB2Client*来方便的使用TRACE调优jdbc程序
- 真人动作捕捉系统 for Unity
- 如何手动修改XP系统属性中的技术支持信息
- jQuery基础之让出$,与其他库共存
- [美]莫提默 J. 艾德勒《如何阅读一本书》
- 使用升级版的 Bootstrap typeahead v1.2.2
- unity, 颜色随高度渐变shader
- Java怎样高速构造JSON字符串
- 关系数据库的基本概念和MySQL说明
- shell变量赋值进阶
- 获取usb设备父系或子代
- linux学习笔记:1.基础知识和命令行基本操作
- Linux 安装nodejs环境以及路径配置
- Leetcode_107_Binary Tree Level Order Traversal II
- jquery 操作服务端控件,select 控件
- LeetCode算法题-Diameter of Binary Tree(Java实现)
- Excel文件上传功能实现
- python金融反欺诈-项目实战
- 构造方法 this super