HDU 3271 SNIBB 數字DP 二分

2021-06-16 13:41:50 字數 760 閱讀 7054

比較裸的數字dp,需要注意的就是二分時一定要寫成 mid=((long long)l+(long long)r)>>1;不然會溢位導致超時的,被這個坑了好一會兒。還有就是題目並沒有說y一定大於x,所以需要判斷一下。

#include #include #include #include #include #include #include #include #include #include #include using namespace std;

#define ll long long

#define int64 __int64

#define m 50005

#define n 1005

#define inf 1000010

#define mod 2520

int b , m;

int dig[105] , dp[105][350];

int dfs(int index , int sum , int lim)

if (!lim)dp[index][sum] = ret;

return ret;

}int solve(int k)

return dfs(len , 0 , 1);

}int main()

else

else

l = mid+1;

}printf("%d\n",ans);

}} }

return 0;

}

HDU 3271 SNIBB (數字統計 二分)

by cxlove 題目 將乙個數轉化成b進製後,他的val表示的是各位上的數字和。詳見題目描述。首先還是預處理,dp i j 表示轉化成b進製後,長度為i的數中,數字和為j的數字有多少個,感覺越來越像數字dp。對於詢問1 壓根就是數字dp,從高位開始列舉,記錄之前已經出現的位數和,然後列舉當前位。...

hdu5787 數字dp 數字壓縮

分析 大概是比較經典的數字dp,需要維護連續的 k 個數字不相同,所以我們的狀態記錄裡需要記錄前k 1個數字是哪些,擴充套件下一位的時候不能出現前k 1 位的數字。這樣就來設計狀態 dp len k ban 表示前長度為le n 連續的 k 個字元禁止出現相同,前k 1個數字為ba n 這裡的ban...

HDU 2089 數字dp (簡單)

數字dp 和hdu 3555類似,稍微複雜了點點,不同在於,一 多考慮4的情況 二 因為子串是 62 而3555的子串 49 末尾數字不同 所以這題要多加一種情況if num i 2 last 6 last 表示前一位數num i 1 狀態還是一樣 dp i 0 表示所有不含不吉利的數開頭任意 dp...