本文共 774 字,大约阅读时间需要 2 分钟。
题目大意:
n个人去参加宴会,每个人都会在一个时间段内出席,有男有女,求人最多的时候有多少,并且要满足男人数等于女人数
题解:
简单模拟,天数只有366,直接开一个数组存每天到的人数,然后把性别分别存下
一开始思路不太正确,导致WA了一发,一开始找的是每天最多的人数并且要满足于男人数=女人数。后来想了想,每天不必所有的人都出席宴会,也就是说,能出席宴会的人数 =min(男人数,女人数)*2
(注意每个人给的天数,表示的是他在这些天是available的,但并不是一定要出席宴会,要看有没有车来接他(而车只会一接节一对))
#include#include #define mod 1000000007#define INF 1000000007using 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< <
转载地址:http://dkfgf.baihongyu.com/