數字dp 板子題

2021-10-10 12:27:29 字數 1463 閱讀 2431

題目傳送

存乙個狀態就可以了,用來判斷前一位是不是6的情況

具體看**注釋

ac**

#include

inline

long

long

read()

while

(c >=

'0'&& c <=

'9')

return x*s;

}using

namespace std;

#define newnode (treenode *)malloc(sizeof(treenode))

#define mem(a,b) memset(a,b,sizeof(a))

#define lowbit(x) (x)&(-x)

const

int n =

2e5+10;

const

long

long infinf =

0x7f7f7f7f7f7f7f

;const

int inf =

0x3f3f3f3f

;const

double eps =

1e-5

;const

int mod =

1e9+7;

const

double ii =

acos(-

1);const

double pp =

(ii*

1.0)/(

180.00);

typedef

long

long ll;

typedef

unsigned

long

long ull;

typedef pair<

int,

int> pii;

typedef pair piil;

ll dp[20]

[2],a[20]

;ll dfs

(ll pos,ll pre,ll sta,

bool limit)if(

!limit) dp[pos]

[sta]

= temp;

//記憶化

return temp;

//否則有限制的話就不用記憶化,因為只判斷一次有限制的時候

}ll solve

(ll num)

ll sum =

dfs(pos-1,

-1,0

,true);

// for(int i = pos-1;i >= 0;i--)

// cout << dp[i][0] << " " << dp[i][1] << endl;

return sum;

}signed

main()

}

不要62(數字dp板子題)

傳送門 hdu 2089 杭州人稱那些傻乎乎粘嗒嗒的人為62 音 laoer 杭州交通管理局經常會擴充一些的士車牌照,新近出來乙個好訊息,以後上牌照,不再含有不吉利的數字了,這樣一來,就可以消除個別的士司機和乘客的心理障礙,更安全地服務大眾。不吉利的數字為所有含有4或62的號碼。例如 62315 7...

石子合併(區間DP板子題)

設有n堆石子排成一排,其編號為1,2,3,n。每堆石子有一定的質量,可以用乙個整數來描述,現在要將這n堆石子合併成為一堆。每次只能合併相鄰的兩堆,合併的代價為這兩堆石子的質量之和,合併後與這兩堆石子相鄰的石子將和新堆相鄰,合併時由於選擇的順序不同,合併的總代價也不相同。例如有4堆石子分別為 1 3 ...

動態dp 板子

瞎扯兩句吧 先從序列上理解,維護鏈的最大獨立集。放在樹上的話,兒子都可以轉移,把輕兒子的轉移放在子鏈鏈頭更新,然後每條鏈都處理成序列就行了。注意一點,因為維護的是序列,所以單點存放的矩陣是只含輕兒子和自己的貢獻,相當於把輕兒子的子樹縮給了自己,而重兒子維護的東西是通過線段樹上維護的區間貢獻過來的。咕...