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位址input示例接下來n行每行輸入兩個整數a, b(0 <= a output
輸出2^16個整數,第i個整數代表v[i - 1]
輸入保證有解
1output示例5 2
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 中取元素的取...