• 17984 FFF团的怒火


    17984 FFF团的怒火

    该题有题解

    时间限制:1000MS  内存限制:65535K
    提交次数:55 通过次数:3 收入:3

    题型: 编程题   语言: G++;GCC;VC;JAVA

     

    Description

    在信软学院,男女比例失衡已经是习以为常的事情。
    在这样的一个学院,诞生了一个神秘的组织,FFF团。
        O  O  O
       /F/F/F
       / / / 
    他们的任务是将一切不是真爱的爱情扼杀在摇篮中。
    对于某些信软学院的学生,每天都只有一些时间是空闲的,其他时间都只能默默地打代码。
    在这段空闲的时间里,所有男生都会去寻找一位空闲的女生,希望能与其进行一次美妙的约会。
    然而FFF团的团长——小邪早已看穿一切。
    为了防止FFF团团员做出过激行为,小邪决定对所有有着同一段空闲时间的异性进行监控。
    现在,小邪想知道,这样的异性有多少对。但是如果小邪现在不对团员进行监控,将会发生严重的后果,于是,统计的任务就交了给你。
    
    出题人:K·小邪
    




    输入格式

    第一行是两个整数n,m(0 <= n,m <= 100),分别代表男生的数量和女生的数量
    
    接下来输入n个男生的数据,对于每个男生有一组数据
    每组数据的第一行为一个整数t( 0 <= t <= 10 ),代表该男生拥有的空闲时间段数量
    接下来为t行
    每行的格式为XX:XX-XX:XX    (00:00 <= XX:XX <= 23:59)
    代表其在XX:XX至XX:XX的时间段有空闲时间,但是可能跨越一天
    
    接下来m个女生的数据,输入格式同男生
    



    输出格式

    输出一个整数,代表有可能见面的男女的对数



     

    输入样例

    (Sample #XX:不是输入的一部分)
    Sample #1:
    
    1 1
    1
    23:59-00:01
    1
    08:00-19:00
    
    
    Sample #2:
    
    1 2
    2
    19:30-19:33
    00:00-08:00
    1
    07:30-09:00
    1
    19:30-19:33



     

    输出样例

    Sample #1:
    0
    
    Sample #2:
    2



     

    提示

    注意端点相交也算是有可能见面的
    比如08:00-09:00是可能与09:00-10:00见面的
    并且对于同一个人输入的区间可能有重叠


    这题都说不清楚的,不知道跨了一天算明天的还是算谁。然后是算同一天的,也就是
    23:59-07:00 和 01:00-02:00是相交的。。。晕。。
    然后这题又不能用scanf("%d",) != EOF,这样会错误。。坑啊

    #include <cstdio>
    #include <cstdlib>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #define IOS ios::sync_with_stdio(false)
    using namespace std;
    #define inf (0x3f3f3f3f)
    typedef long long int LL;
    
    #include <iostream>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <queue>
    #include <string>
    const int maxn = 2400 + 20;
    struct node {
        int num;
        bool book[maxn];
    }boy[100 + 20], girl[100 + 20];
    int n, m;
    void work() {
        scanf("%d%d", &n, &m);
        for (int i = 1; i <= n; ++i) {
            int t;
            scanf("%d", &t);
            boy[i].num = t;
            while (t--) {
                int a, b, c, d;
                scanf("%d:%d-%d:%d", &a, &b, &c, &d);
                int begin = a * 100 + b;
                int end = c * 100 + d;
                if (begin > end) {
                    for (int j = begin; j <= 2400; ++j) {
                        boy[i].book[j] = true;
                    }
                    for (int j = 0; j <= end; ++j) {
                        boy[i].book[j] = true;
                    }
                } else {
                    for (int j = begin; j <= end; ++j) {
                        boy[i].book[j] = true;
                    }
                }
            }
        }
        for (int i = 1; i <= m; ++i) {
            int t;
            scanf("%d", &t);
            girl[i].num = t;
            while (t--) {
                int a, b, c, d;
                scanf("%d:%d-%d:%d", &a, &b, &c, &d);
                int begin = a * 100 + b;
                int end = c * 100 + d;
                if (begin > end) {
                    for (int j = begin; j <= 2400; ++j) {
                        girl[i].book[j] = true;
                    }
                    for (int j = 0; j <= end; ++j) {
                        girl[i].book[j] = true;
                    }
                } else {
                    for (int j = begin; j <= end; ++j) {
                        girl[i].book[j] = true;
                    }
                }
            }
        }
        int ans = 0;
        for (int i = 1; i <= n; ++i) {
            for (int j = 1; j <= m; ++j) {
                for (int k = 0; k <= maxn - 20; ++k) {
                    if (boy[i].book[k] && girl[j].book[k]) {
                        ans++;
                        break;
                    }
                }
            }
        }
        printf("%d
    ", ans);
    }
    
    int main() {
    #ifdef local
        freopen("data.txt","r",stdin);
    #endif
        work();
        return 0;
    }
  • 相关阅读:
    黑盒测试和白盒测试的区别
    alpha测试和beta测试的区别
    selenium退出语句区别
    QTP8.2--安装流程
    Xshell无法连接Linux虚拟机问题
    Linux-----centos6.2---安装Linux的流程
    MySql错误处理--错误代码和消息
    基于Linux系统--web环境搭建
    前端底层-作用域 this 原型笔试题练习
    前端底层-冒泡与捕获
  • 原文地址:https://www.cnblogs.com/liuweimingcprogram/p/6080002.html
Copyright © 2020-2023  润新知