思路:
大模拟水题,枚举男和女可以参加派对的时间就行了。
AC 代码:
#include<bits/stdc++.h>
using namespace std;
char ch;
int n,ans=-1,x,y,men[1500],women[1500];//定义 men[i] 为第 i 天可参加的男生人数, women[i] 为第 i 天可参加的女生人数
int main(){
cin>>n;//输入
for(int i=1;i<=n;i++){
cin>>ch>>x>>y;//输入
if(ch=='M'){//男
for(int i=x;i<=y;i++)men[i]++;//第 i 天的男生可参加人数 +1
}else{//女
for(int i=x;i<=y;i++)women[i]++;//第 i 天的女生可参加人数 +1
}
}
for(int i=1;i<=366;i++)ans=max(ans,min(men[i],women[i])*2);//枚举天数求可参加人数,想一下为什么这里要求最小值然后 *2
cout<<ans<<endl;//输出
return 0;//完美结束
}
思考题:
因为男女人数要相等,也就是一一匹配(设男生人数为 $n$ ,女生人数为 $m$ )
所以能匹配的对数为: $\min(m,n)$
那么可参加的人数就是: $\min(m,n)\times2$