原创 hdu 4733 G(x) 狀態dp

這是個狀態DP 首先我們設p的的二進制爲 a1  a2 a3 a4 a5 a6 明顯[p/2] 爲 0 a1 a2 a3 a4 a5 然後我們設a3爲p第一個爲0的位數那麼p就是a1 a2 0 1 1 [p/2]= 爲 0 a1 a2 0

原创 hdu 4737 線段樹維護+二分

線段樹維護從i到j 或的值,然後對於每一個i 二分最大j (滿足單調性)  i-j 所有小於m 總複雜度爲(n*log(n)*log*(n))我是找

原创 hdu 4712 2種解發(狀態dp| 隨機化) 我又相信愛情了~~(第一發)

  這個題目我們省賽的時候就已經做看過一次,但是那時候知道你n^2 一定是超時的,然後就gg了,這次在warm up上是發現了狀態dp 然後估計了下

原创 hdu 4738 Caocao's Bridges 割邊無敵(trick)

比賽的時候一直沒有做出來,後面看了wrong了40++ 其實這個題目trick 在於如果有一條權值爲0的割邊,你至少要派一個人去,這個就是全部了。。唉。。就看了一體還沒做出555555 #include<iostream> #includ

原创 hdu 4725 (spfa+建圖) 明顯要求最短路

如果按照自己建圖點個數爲(N^2) 明顯這個複雜度是不行的,過後,可以把每一層分成上個層進入點,和到下層的進入點,只需要把某一個邊變成C就可以了,比

原创 hdu 2089 不要62

hdu 2089 基礎數位dp 用dp[i][j] 表示滴i個數時以j結尾所應該統計的個數 明顯每次遞推的時候特殊考慮 4 和 6  2 但是在統計的時候需要注意前面是否有4 和62 來防止計算了。第一個數位 #include<cstdi

原创 cf div2_199_E

題目的意思是給你一顆樹n(100000)個樹的幾點,然後開始樹都是白色的,根的顏色是紅色的,然後給你m個操作,1  x操作表示把x這個點變成紅色,2 x詢問x到最近紅色點的距離,我聽聞有3種解法(分割+點的分治+輕重邊) 解法1 對於m

原创 hdu 4734 數位dp

剛好近來學了數位dp剛好用上了,nice 用dp[i][j][k] 表示第i位用j時f(x)=k的時候的個數,然後需要預處理下小於k的和,然後就很容易想了  dp[i+1][j][k+(1<<i)]=dp[i][j1][k];(0<=j1

原创 hdu 4722 good number 數位dp入門

明顯dp[i][j][k] 表示i爲取j的時候餘數爲k的個數 然後dp方程就顯然可得了,我看其他人都是2位,少了j這個位,但是我認爲有這位比較清楚啊

原创 數位dp 入門 nbut 1475

nbut 1475 用dp[i][j][k]  表示滴i位時取j是已經有k個1 這樣狀態就很容易表示了 if(j==1) dp[i][j][k]=dp[i][0-9][k-1]; else dp[i][j][k]=dp[i][0-9][k

原创 bzoj 2599 Race樹的分治

劃分字樹,在更新mark的時候要反過來更新回去,很裸的,但是我想了很久,學了大神一招,就是bfs 來find_root #include<cstdi

原创 zoj 3631 Watashi's BG 雙向暴力搜素

題目的意思是給你n(30)個重量爲ai的物品,然後要你看能否組成小於等於m(1000000)的重量最大的組合,一開始明顯可以看出是揹包,然後明顯複雜度是(10000000*30);這複雜度貌似是不可以做的,但是如有你想飄過還是可以的我有個

原创 hdu 2222 裸的AC自動機靜態模板

ac自動機模板題,看着大神的模板敲個一個靜態的ac自動機,第二次理解有深刻了一下,送上模板。 大神鏈接點擊打開鏈接 #include<cstdio> #include<cstring> #define M 600000 using na

原创 spoj 375 Query on a tree 鏈路剖分模板

在大神的看了下。,然後自己寫了一下,對於鏈路剖分還是比較模式化的  邊權型160++ #include<cstdio> #include<cstring> #include<iostream> #define M 20000 #defi

原创 Python 實例方法 類方法 靜態方法 (instance method, class method, static method )

首先看一個簡單的python 代碼 class T(object): name = "Alice" #類變量 def __init__(self): self.name = "Bob" #實例變量