ZJOI2009 假期的宿舍

2022-03-25 18:51:09 字數 1132 閱讀 7932

這道題分析下就會發現是乙個二分圖匹配。將在校(包括來校訪友)和床單構成圖,判斷最大匹配數是否為總在校人數即可。

這裡用的是$km$演算法。

1 #include 2

3using

namespace

std;45

#define re register

6#define rep(i, a, b) for (re int i = a; i <= b; ++i)

7#define repd(i, a, b) for (re int i = a; i >= b; --i)

8#define maxx(a, b) a = max(a, b);

9#define minn(a, b) a = min(a, b);

10#define ll long long

11#define inf (1 << 30)

1213 inline int

read()

1920

const

int maxn = 50 + 5;21

22int e[maxn << 1][maxn << 1

], n, t, a[maxn];

2324

int lk[maxn << 1], v[maxn << 1

];25

26bool find(int

u) 34}35

return

false;36

}3738int

main()

57 rep(i, n+1, n<<1) if (lk[i]) ans--;

58if (ans <= 0) printf("

^_^\n

"); else printf("

t_t\n");

59}6061

return0;

62 }

這道題我提交了好幾次,總是$wa$。經過仔細的除錯(瞪眼觀察法),發現第$49$行中:

$a[i+n] = read() == 0 || a[i] == 0;$

寫的是$a[i+n] = a[i] == 0 || read() == 0;$

$||$運算是短路運算,如果$a[i]=0$成立,就不會讀入了。

ZJOI2009 假期的宿舍

題目描述 學校放假了 有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如 a 和 b 都是學校的學生,a 要回家,而 c 來看b,c 與 a 不認識。我們假設每個人只能睡和自己直接認識的人的床。那麼乙個解決方案就是 b 睡 a 的床而 c 睡 b 的床。而實際情況可能非常複...

ZJOI2009 假期的宿舍

題目 洛谷p2055 bzoj1433 codevs2347。題目大意 有n個人,有些人是學生,有些人是來看學生的 不是學生 學生有床,而非學生沒有 廢話!有些學生回家,有些學生晚上住校,來看學生的人要住在學校裡。現在有一些認識的關係,規定每個要在學校睡覺的人只會睡在自己認識的人的床上,問能否使所有...

ZJOI2009 假期的宿舍

學校放假了 有些同學回家了,而有些同學則有以前的好朋友來探訪,那麼住宿就是乙個問題。比如 a 和 b 都是學校的學生,a 要回家,而 c 來看b,c 與 a 不認識。我們假設每個人只能睡和自己直接認識的人的床。那麼乙個解決方案就是 b 睡 a 的床而 c 睡 b 的床。而實際情況可能非常複雜,有的人...