小w隱藏的心緒已經難以再隱藏下去了。小w有n+ 1(保證n為偶數)個心緒,每個都包含了[1,2n]的乙個大小為n的子集。現在他要找到隱藏的任意兩個心緒,使得他們的交大於等於n/2。
一行乙個整數n。接下來每行乙個長度為k的字串,該字串是乙個64進製表示,ascii碼為x的字元代表著x-33,所有字元在33到33+63之間。轉為二進位制表示有6k位,它的前2n個字元就是讀入的集合,第i位為1表示這個集合包含i,為0表示不包含。
一行兩個不同的整數表示兩個集合的編號。如果無解輸出「no solution」。
樣例輸入
10evk#
ih=#
676"
r7,#
74s"
6v2#
o3j#
s-7$
nu5"
c[$$
3n.#
樣例輸出
1 2對於20%的資料滿足n≤100。
對於50%的資料滿足n≤1×103。
對於100%的資料滿足n≤6×103。
分析我覺得應該沒有人會想到暴力即是正解
首先先看一眼資料規模,好像用int存字串會炸記憶體,於是考慮用bitset存
不然就像我一樣爆零
然後就可以暴力地o(n3/32)地做啦
我們來驗證一下它的正確性
任選出兩個子集,考慮每個元素在兩個子集中共有的概率,加起來就是期望共有的個數
由於總共有2n個元素,每個子集有n個元素,那麼乙個元素在子集內的概率就是$\frac 1 2$,
那麼乙個元素同時在兩個子集內的概率就是$\frac 1 4$
所以任選兩個子集期望的共有的個數是$\frac 1 4 \times 2n=\frac n 2$
當然,這個期望值是建立在資料純隨機的情況下的
我們接下來可以求一下在出題人控制了資料的情況下我們任選兩個子集,子集的共有元素的期望個數
假設第i號元素有si個子集擁有,那麼對於i號元素就有$c_^2$種情況任選兩個子集都包含i號元素,而任選兩個子集的情況總數為$c_^$
所以對於i號元素,任選兩個子集都包含它的概率為
$$\frac ^2} ^2}$$
任選兩個子集的期望共有元素個數為
$$\sum_^ \frac ^2} ^2}$$
顯然出題人可以控制每個si的大小來卡我們,但他無法控制其它數的大小。
我們只要求出這個東西的最小值就可以知道出題人是否能卡我們
而且我們還知道
$$\sum_^ si=n(n+1)$$
所以我們化簡一下這個式子
$$\sum_^ \frac ^2} ^2}$$
$$=\frac ^ ^2} } ^2}$$
$$=\frac ^ } } }$$
$$=\frac ^ } $$
$$=\frac ^ - \sum_^ } $$
$$=\frac ^ - n(n+1)} $$
接下來只需要根據$\sum_^ si=n(n+1)$求出$\sum_^ $的最小值就好啦
我們可以小的情況推到大的情況,比如知道$a+b=x$,求$min(a^2+b^2)$
可以用均值不等式的思想來證明
因為$(a-b)^2 \geq 0$,所以$a^2+b^2 \geq 2ab$
又因為$(a+b)^2=x^2$,所以$2ab=x^2-a^2-b^2$
代入$a^2+b^2 \geq 2ab$就有$a^2+b^2 \geq }$
同理,因為
$$\sum_^\sum_^(si-sj)^2 \geq 0$$
所以$$\sum_^\sum_^(si^2+sj^2-2sisj) \geq 0$$
$$\sum_^\sum_^si^2 + \sum_^\sum_^sj^2 - \sum_^\sum_^2sisj\geq 0$$
$$\sum_^\sum_^si^2 + \sum_^\sum_^sj^2\geq 2\sum_^\sum_^sisj$$
$$2n\sum_^si^2 +2n\sum_^sj^2\geq 2\sum_^\sum_^sisj$$
$$4n\sum_^si^2\geq 2\sum_^\sum_^sisj$$
又因為$\sum_^ si=n(n+1)$
所以$$\left ( \sum_^ si \right )^2=n^2(n+1)^2$$
$$\sum_^\sum_^sisj=n^2(n+1)^2$$
代入上面的不等式就有
$$4n\sum_^si^2\geq 2\sum_^\sum_^sisj=2n^2(n+1)^2$$
$$\sum_^si^2\geq \frac $$
我們終於求出了$\sum_^si^2$的最小值
把它代入我們之前求出的式子裡
$$\frac ^ - n(n+1)} \geq \frac -n(n+1)} $$
$$=\frac -1=\frac $$
所以不管出題人怎麼出資料,任選兩個字串共有元素的期望個數最小都是$\frac $,所以直接o(n^3/32)是很正確的
**?我™手賤重啟電腦清空了
CSP模擬賽 方程(數學)
題目描述 求關於x的方程 x1 x2 xk n的非負整數解的個數。輸入格式 僅一行,包含兩個正整數n,k。輸出格式 乙個整數,表示方程不同解的個數,這個數可能很大,你只需輸出mod 20080814 的結果。輸入樣例 1 1輸出樣例1提示 資料範圍 對於50 的資料,n,k 300 對於80 的資料...
CSP模擬賽 方程(數學)
求關於x的方程 x1 x2 xk n的非負整數解的個數。僅一行,包含兩個正整數n,k。乙個整數,表示方程不同解的個數,這個數可能很大,你只需輸出mod 20080814 的結果。1 11 提示資料範圍 對於50 的資料,n,k 300 對於80 的資料,n,k 1000 對於100 的資料,n,k ...
CSP模擬賽 巨神兵
題目 歐貝利斯克的巨神兵很喜歡有向圖,有一天他找到了一張 n 個點 m 條邊的有向圖。歐貝利斯克認為乙個沒有環的有向圖是優美的,請問這張圖有多少個子圖 即選定乙個邊集 是優美的?答案對 10 9 7 取模。對於40 的資料 n 5,m 20 對於60 的資料 n 10 對於80 的資料 n 15 對...