D FFF团的怒火

Time Limit:1000MS  Memory Limit:65535K

题型: 编程题   语言: 无限制

描述

在信软学院,男女比例失衡已经是习以为常的事情。
在这样的一个学院,诞生了一个神秘的组织,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

Hint

注意端点相交也算是有可能见面的
比如08:00-09:00是可能与09:00-10:00见面的
并且对于同一个人输入的区间可能有重叠
#include<stdio.h>
#include<string.h>
int boy[][], girl[][]; int go(int, int );
int main()
{
int i, j, tb, tg, temp, temp1, temp2;
int t1, t2, n, m, count = ;
int k1, k2, k3, k4;
scanf("%d%d", &n, &m); memset(boy, , sizeof(boy));
memset(girl, , sizeof(girl));
for (i = ; i < n; i++)
{
scanf("%d", &tb);
boy[ * i][] = tb;
for (j = * i; j < * i + tb; j++)
{
scanf("%d:%d-%d:%d", &k1, &k2, &k3, &k4);
temp1 = k1 * + k2;
temp2 = k3 * + k4;
boy[j][] = temp1;
boy[j][] = temp2; }
}
for (i = ; i < m; i++)
{
scanf("%d", &tg);
girl[ * i][] = tg;
for (j = * i; j < * i + tg; j++)
{
scanf("%d:%d-%d:%d", &k1, &k2, &k3, &k4);
temp1 = k1 * + k2;
temp2 = k3 * + k4;
girl[j][] = temp1;
girl[j][] = temp2;
}
}
for (i = ; i < n; i++)
for (j = ; j < m; j++)
{temp = count;
for (t1 = * i; t1 < * i + boy[ * i][]; t1++)
{
for (t2 = * j; t2 < * j + girl[ * j][]; t2++)
if (go(t1, t2))
{ count++;
break;
}
if (count > temp)
break;
}
}
printf("%d", count);
return ;
} int go(int t1, int t2)
{
int k1, k2, k3, k4;
k1 = boy[t1][];
k2 = boy[t1][];
k3 = girl[t2][];
k4 = girl[t2][];
if (k2 >= k1 && k4 >= k3)
{
if (k1>k4||k3>k2)
return ;
else
return ;
}
else if (k2 < k1 && k4 < k3)
return ;
else
{
if (k1 > k2)
{
if (k3 > k2 && k4 < k1)
return ;
else
return ;
}
else
{
if (k1 > k4 && k2 < k3)
return ;
else
return ;
}
}
}
上一篇:获取Finacial dimension value的description 值


下一篇:MVC加载view的方式