A - 签到题
题目描述
TT有一个A×B×C的长方体。这个长方体是由A×B×C个1×1×1的小正方体组成的。
现在TT想给每个小正方体涂上颜色。
需要满以下三点条件:
每个小正方体要么涂成红色,要么涂成蓝色。
所有红色的小正方体组成一个长方体。
所有蓝色的小正方体组成一个长方体。
现在TT想知道红色小正方体的数量和蓝色小正方体的数量的差异。
你需要找到红色正方体的数量与蓝色正方体的数量差值的绝对值的最小值。
即min{|红色正方体数量 - 蓝色正方体数量|}。
解题思路
如果有长度为偶数的边,则可以对半分开,答案为0。 若都为奇数边,则答案为 m i n { a ∗ b , b ∗ c , c ∗ a } min\{a*b, b*c, c*a\} min{ a∗b,b∗c,c∗a}
代码
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
int main()
{
long long a, b, c;
cin >> a >> b >> c;
long long maxx = 0;
if(a > maxx) maxx = a;
if(b > maxx) maxx = b;
if(c > maxx) maxx = c;
if(a % 2 == 0 || b % 2 == 0 || c % 2 == 0)
cout << 0;
else if(a == maxx)
cout << b * c;
else if(b == maxx)
cout << a * c;
else if(c == maxx)
cout << a * b;
return 0;
}
B - 团 队 聚 会
题目描述
TA团队每周都会有很多任务,有的可以单独完成,有的则需要所有人聚到一起,开过会之后才能去做。但TA团队的每个成员都有各自的事情,找到所有人都有空的时间段并不是一件容易的事情。
给出每位助教的各项事情的时间表,你的任务是找出所有可以用来开会的时间段。
解题思路
将所有出现的时间点都投射到一个时间轴上,对每一个区间进行判断是否合法,并标记合法区间。
对合法区间进行判断,将相邻的合法区间合并。
代码
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <string>
#include <iostream>
#include <vector>
#include <set>
using namespace std;
int n;
struct TimeLine{
int year, month, day, hour, min, sec;
TimeLine(