题目大意:
n个人去参加宴会,每个人都会在一个时间段内出席,有男有女,求人最多的时候有多少,并且要满足男人数等于女人数
题解:
简单模拟,天数只有366,直接开一个数组存每天到的人数,然后把性别分别存下
一开始思路不太正确,导致WA了一发,一开始找的是每天最多的人数并且要满足于男人数=女人数。后来想了想,每天不必所有的人都出席宴会,也就是说,能出席宴会的人数 =min(男人数,女人数)*2
(注意每个人给的天数,表示的是他在这些天是available的,但并不是一定要出席宴会,要看有没有车来接他(而车只会一接节一对))
#include<cstring>
#include<bits/stdc++.h>
#define mod 1000000007
#define INF 1000000007
using namespace std;
typedef long long ll;
struct node
{
int v,m,f;
}b[400];
int main()
{
//freopen("input.txt","r",stdin);
int n;
cin>>n;
int x,y;
char c;
for(int i=1;i<=n;++i)
{
cin>>c>>x>>y;
for(int j=x;j<=y;++j)
{
b[j].v++;
c=='F'?b[j].f++:b[j].m++;
}
}
int ans=0;
for(int i=1;i<=366;++i)
ans=max(ans,2*min(b[i].f,b[i].m));
cout<<ans<<endl;
return 0;
}