51nod1468 小Y的IP位址

2021-08-17 09:56:50 字數 1982 閱讀 1347

1468 小y的ip位址

基準時間限制:1 秒 空間限制:262144 kb 分值: 80 

難度:5級演算法題

小y最近在研究乙個奇怪的16位ip系統

為了方便表示,我們可以將這個系統中的ip位址表示成16位二進位製非負整數(既小於  2

16 的非負整數),子網掩碼表示成(  2

x−1 ), x可能的取值是1到16(注意,和一般的子網掩碼是不同的)。

列舉每乙個可能的子網掩碼,對於任一子網掩碼(設為x),我們將得到網路位址(設為z)z = (ip位址 and x)。(and是按位與操作)如果對於當前的ip位址,z沒有出現過,那麼小y將得到v[z]的愉悅值,否則小y得到0點愉悅值。這個ip位址可以給小y帶來的愉悅值是這些愉悅值的和。

例如,當ip位址為5時:

如果子網掩碼為1, 則得到v[5 & 1] = v[1]點愉悅值

如果子網掩碼為3, 因為5 & 3 = 1, 這個位址已經出現過了,不會得到愉悅值

如果子網掩碼為7,則得到v[5 & 7] = v[5]點愉悅值

對於其他可能的子網掩碼,z都是5,因此都不會得到愉悅值

因此,ip位址為5時,小y將得到v[1] + v[5]點愉悅值

小y並不知道v陣列,但對於每個隨機生成出來的ip位址,小y都會將他得到的愉悅值告訴你,現在小y希望你還原乙個可能的v陣列。

input

第一行乙個整數n(0 <= n <= 2^16), 代表小y隨機產生了多少ip位址

接下來n行每行輸入兩個整數a, b(0 <= a output

輸出2^16個整數,第i個整數代表v[i - 1]

輸入保證有解

input示例

1

5 2

output示例

0 1 0 0 0 1 0 ...(省略(2 ^ 16 - 7)個0)
題解:

說實話我到現在還是不理解。。直接給大神思路吧。

=∑i=

015ai

∗2i,

其中ai

=0or

1ip=∑i=015ai∗2i,   其中ai=0  or   1h[

ip]h[ip]h[

ip]=

∑z=1

216−1

xz∗v

[z],

−−−1

式h[ip]=∑z=1216−1xz∗v[z],−−−1式[z

]v[z]

看作方程未知量 , xzxz

為係數0

到 216−

1216−1

每個ip都對應乙個方程ip

xip必然為1,並且有xk=

0,k>ip

xk=0 , k>ipv[

k+2t

]=h[

k+2t

]−h[

k]其中

k<2t

v[k+2t]=h[k+2t]−h[k]其中k<2t

#include 

#include

#include

#include

using

namespace

std;

typedef

long

long ll;

const

int maxn=(1

<<16)+10;

const ll inf=0x3f3f3f3f3f3f3f3f;

ll h[maxn];

ll v[maxn];

int main ()

v[0]=h[0];

v[1]=h[1];

for(int i=2,sz=1

<<16,a=2,b=4;iif(ielse

}for(int i=0,sz=1

<<16;iprintf("%lld ",v[i]);

printf("\n");

return

0;}

51Nod 1468 小Y的IP位址

acm模版 這個題我不會,請教的我 佐神燈 學姐,她說是神馬解方程組,高斯消元,這個我也能想到,但是奇了怪了,最後她的 怎麼成了這種構造方法 看 據說,明天早上她會把詳細題解放到討論區,好期待啊 o o 這個題讓我很納悶兒,我加上輸入輸出優化比不加還慢上十幾毫秒,平時像這種大量輸入輸出的題,加上我那...

51nod 1468 小Y的IP位址

小y最近在研究乙個奇怪的16位ip系統 為了方便表示,我們可以將這個系統中的ip位址表示成16位二進位製非負整數 既小於216 的非負整數 子網掩碼表示成 2 x 1 x可能的取值是1到16 注意,和一般的子網掩碼是不同的 現在小y將隨機生成一些ip位址,對於每乙個ip位址小y將做如下操作 列舉每乙...

51nod 1778 小Q的集合

原題連線 題目繞了一點。並沒有直接給出數字形式。而且這個題有好像有很多方法。我也yy了乙個 不過還是題解多效率高 題目中是給定了乙個集合 s 並且有 s n 要說明的是。這個集合是沒有重複元素的集合。這一點很重要 其實不特別說明。一般集合也都沒有重複元素。集合s的子集數量等價於 從 s 中取元素的取...