hdu4352 數字dp 狀態壓縮

2021-06-27 14:19:09 字數 750 閱讀 9484

題意:

給出l和r找出在[l,r]中滿足最長遞增子串行長度等於k的個數。

題解:狀壓想不到,看了kuangbin的才明白,1<<10狀壓存數出現了沒有。利用了nlogn遞增字序列演算法的思想。

#include#include#include#include#includeusing namespace std;

typedef long long lld;

#define oo 0x3f3f3f3f

#define mod 1000000007

#define maxn 30+5

lld dp[maxn][1<<10][15];

int bit[maxn];

lld l,r,k;

int nextst(int st,int x)

return cnt;

}lld dfs(int pos,int st,int zero,int f)

if(!f) dp[pos][st][k]=res;

return res;

}lld getans(lld n)

return dfs(len,0,0,1);

}int main()

{ int t;

memset(dp,-1,sizeof dp);

scanf("%d",&t);

for(int cas=1;cas<=t;cas++)

{cin>>l>>r>>k;

cout<<"case #"<

HDU 4352(數字dp 狀態壓縮 LIS)

求區間範圍內最長上公升子串行數字k的數字有多少個 首先由數字dp引入思路,dp轉移方程為 dfs pos,status.累加dfs pos 1,stautselse 可備忘錄記錄的dp陣列為 dp pos status k 之所以要備忘錄k,是為了滿足不同k的訪問 status記錄的是開頭數字到po...

HDU 4352做題筆記

聽說是多校的題,難怪做自閉了 參考了網上各種題解終於大概懂了,這裡放幾個我參考的 i.ii.iii.首先本題要求l到r範圍內,在2進製下,lis長度為k的數的個數,於是想到數字dp,那麼怎麼處理lis呢,以及如何記錄狀態呢 首先看到l和r的大小,要求乙個數的lis,通常想法是把這個數存下來。但是由於...

數字dp HDU 4352 LIS狀態壓縮

題目大意 題意 介紹了電子科大的乙個傳奇學姐,最後幾句話才是題意,這題意思就是給你乙個ll範圍內的區間 l,r 問你在這個區間內最長遞增子串行長度恰為k的數有多少個。在dp過程中,我們要維護lis。而且數字只有0 9,如果你知道怎麼在o n logn 的時間複雜度維護lis,那麼就好辦了。但是這個方...