zoukankan      html  css  js  c++  java
  • HihoCoder1670 : 比赛日程安排([Offer收割]编程练习赛41)(模拟)

    描述

    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[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    int a[60][1010];
    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=1;i<=n;i++) a[i][0]=0;
            for(i=1;i<=m;i++) {
                scanf("%d-%d%d%d",&mon,&day,&x,&y);
                date=0;
                for(j=1;j<mon;j++)  date+=d[j];
                date+=day;
                a[x][++a[x][0]]=date;
                a[y][++a[y][0]]=date;
            }
            for(i=1;i<=n;i++) sort(a[i]+1,a[i]+a[i][0]+1);
            for(i=1;i<=n;i++)
             for(j=2;j<=a[i][0];j++)
              if(a[i][j]-a[i][j-1]<2) Flag=false;
            if(Flag) printf("YES
    ");
            else printf("NO
    ");
        }
    } 
  • 相关阅读:
    【移动安全基础篇】——30、class.dex文件格式讲解
    【移动安全基础篇】——29、Android源码定制添加反反调试机制
    【移动安全基础篇】——28、Apk加固
    【移动安全基础篇】——27、常用调试检测方法与过检测方法
    【移动安全基础篇】——26、两个简单app破解
    粒子特效优化
    android studio生成aar包
    AndroidManifest
    声音
    unity webview
  • 原文地址:https://www.cnblogs.com/hua-dong/p/8098908.html
Copyright © 2011-2022 走看看