bzoj 5043 密碼破譯

2021-08-08 17:02:31 字數 792 閱讀 7683

求乙個最小的數,它和一串數的異或值的和=m。

orz:claris f[

i][j

] 表示i位前(後面的先砍掉,不理,方便轉移)+j=m的i位前。

那麼當j<0或j>=n時是一定無解的,因為後面的位至多補(n

−1)∗

2i所以隨便轉移一下就好了。

關鍵是狀態表示,還是太菜了。

code:

#include

#include

#include

#include

#define ll long long

using

namespace

std;

ll inf=(1ll<<61);

int n;

ll s,f[63][100010],c[63][3];

void cmin(ll &x,ll y)

int main()

for(int i=0;i<=60;i++)

for(int j=0;j<=100005;j++)

f[i][j]=inf;

f[60][0]=0;

for(int i=59;i>=0;i--)

for(int j=0;j<=100005;j++)

if(f[i+1][j]for(int k=0;k<=1;k++)

}if(f[0][0]==inf) printf("-1");

else

printf("%lld",f[0][0]);

}

bzoj5043 密碼破譯

題目 dp神題,公式什麼的我們想出來,看一發題解吧。但是,這不是重點,重點是get到了乙個新姿勢。int型別如果右移超過了32位,前32位是無效的,也就是說移40位和移8位是一樣的233。因為這個,我樣例都沒過,好菜呀。include define n 100000 using namespace ...

簡單密碼破譯

problem description 密碼是我們生活中非常重要的東東,我們的那麼一點不能說的秘密就全靠它了。哇哈哈.接下來淵子要在密碼之上再加一套密碼,雖然簡單但也安全。假設淵子原來乙個bbs上的密碼為zvbo941987,為了方便記憶,他通過一種演算法把這個密碼變換成yuanzi1987,這個密...

python 破譯密碼

題目內容 a國情報局抓獲敵國間諜一名,從間諜身上搜出了若干密電,在嚴刑逼供之下,間諜說出了密電加密方法 將明文電報 僅由大寫字母構成 中的所有字母均替換為字母表中向後看的第n個字母,如果超過z,則從a繼續數,這樣就得到了密文,比如attack,向後看第2個字母,就加密為cvvcfm。可還沒等到間諜說...