TC 572 D1L2 (雙向搜尋 記憶化)

2022-04-28 19:51:09 字數 1417 閱讀 8858

這一題是比較難實現的雙向搜尋題:(字串+雙向搜尋+hash記憶化)

我們可以先把k的前半部分列舉出來,並將得出的所有結果和題目給的n個數的每乙個數的前半部分都比對一遍,得到它和每乙個數有幾位相同,並hash存到map中去。

然後我們列舉k的後半部分,並將得出的所有結果和題目給的n個數的每乙個數的後半部分都比對一遍,得到它和每乙個數有幾位相同。這樣我們可以得到:對於每乙個列舉出的結果,他所對應的前半部分和n個數中每個數比對後應該有幾位相同,將你得到的結果與標準值取差然後hash,看map中是否有一樣的值存在。(存在就表示你找到了乙個(也可能是多個)解,然後判斷一下輸出即可)

當然,這一題還難在細節,要仔細一點(前導零,字串的處理,如何hash,怎樣比對,分類討論應該輸出什麼........)

#include#include#include#include#include#include#include#include#include#include#include#include#define ll long long

#define db double

#define inf 0x7fffffff

#define rg register int

using namespace std;

int n,m,s,su,ans,f;

int l[11],r[55];

int b[55],a[55][11];

char ch[55];

maph;

inline int qr()

inline int haxi()

return sdf%inf;

}inline int bint(int i,int j)

inline void yu(int t)

int sdf=haxi(),lkj=bint(1,m);

if(h.find(sdf)!=h.end()) h[sdf]=-1;

else h[sdf]=lkj;

return ;

} for(rg i=0;i<=9;++i)

l[t]=i, yu(t+1);

}inline void dfs(int t)

int sdf=haxi();

if(h.find(sdf)!=h.end())

} return ;

} for(rg i=0;i<=9;++i)

l[t]=i,dfs(t+1);

}int main() yu(1); dfs(m+1);

if(ans)printf("%d",ans);

} else puts("liar");

return 0;

}

L1 L2損失 和 L1 L2正則化

1 l1損失 最小絕對值誤差 最小化 值 真實值 的絕對值,魯棒性強。2 l2損失 最小平方誤差 最小化 值 真實值 的平方,對於大於1的數,平方更大,因此對樣本敏感。3 l1正則化 l1正則化和l2正則化可以看做是損失函式的懲罰項,l1正則化是指權值向量中各個元素的絕對值之和。l1正則化可以產生稀...

L1 L2範數 概念

向量的範數可以簡單形象的理解為向量的長度,或者向量到零點的距離,或者相應的兩個點之間的距離。向量的範數定義 向量的範數是乙個函式 x 滿足非負性 x 0,齊次性 cx c x 三角不等式 x y x y 常用的向量的範數 l0範數 x 0為x向量各個非零元素的個數 l1範數 x 1 為x向量各個元素...

面試L0,L1,L2範數

在深度學習中,監督類學習問題其實就是在規則化引數同時最小化誤差。最小化誤差目的是讓模型擬合訓練資料,而規則化引數的目的是防止模型過分擬合訓練資料。引數太多,會導致模型複雜度上公升,容易過擬合,也就是訓練誤差小,測試誤差大。因此,我們需要保證模型足夠簡單,並在此基礎上訓練誤差小,這樣訓練得到的引數才能...