BZOJ-1305: [CQOI2009]dance跳舞

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1305

思路:

贪心:由于两个人的喜欢是双向的,所以一个男孩在跟他喜欢的女孩跳舞时,该女孩也不需要消耗与不喜欢男孩跳舞的次数k,所以如果每个人都只能跟喜欢的人跳舞,那么可以播放的舞曲数目就是所有人各自喜欢的人人数的最小值。然后,现在每个人有可以跟k个不喜欢的人跳舞,那么,每个人最多可以跳舞的数目就是min(喜欢的人数+k,n)(他只能跟每个人跳一次舞,所以最多跳舞数不会超过n)。那么,播放最多的舞曲数就是所有人最多可以跳舞数的最小值。

网络流:暴力去枚举就好了。。。就不多说了

代码:

#include 

#include 

#include 

#include 

 

using namespace std;

 

#define MAXN 51

 

int girl[MAXN],boy[MAXN];

int n,k;

char c[MAXN];

int ans=0x7fffffff;

 

int main(){

    memset(girl,0,sizeof(girl));

    memset(boy,0,sizeof(boy));

    scanf("%d%d",&n,&k);

    for (int i=0;i++

你可能感兴趣的:(BZOJ-1305: [CQOI2009]dance跳舞)