CSP校內集訓 v(記憶化搜尋 map優化狀壓)

2022-03-16 23:58:05 字數 760 閱讀 1400

有乙個長為\(n\)的01序列,每次等概率從\([1,len]\)中抽取乙個\(x\),可以選擇從右向左或是從左往右的第\(x\)個數字取走,求\(k\)次操作後取走1的期望個數\((k\leq n\leq 30)\)

然而就是直接狀態壓縮

以24為分界線,24步以內用狀態壓縮;24步以上可以發現狀態很大但狀態數很少(因為只進行了幾次操作),用\(map\)存

對於每種狀態列舉\(x\)記憶化搜尋即可,需要大力卡常

二進位制下去掉第\(p\)位:\(x=((x>>p)<<(p-1)) | (x\&((1<

(因為我的**太菜了卡不過常數,所以放的別人的)

#include#define maxn 35

#define ll long long

using namespace std;

int n,m,a[maxn];

char s[maxn];

double ans,f[(1<<24)+5];

const double eps=1e-10;

ll bin,num;

map< ll,double > mp[31];

inline void work(int x,int len)

double dfs(int now)

if(len<24) return f[1

}int main()

CSP校內集訓 替換遊戲(tarjan 離散化)

給乙個範圍 0,n 有兩種變換方式,k 或者給定的 m 個 x y 但必須保證變換前後的數始終在範圍內,給乙個數 x 求出它一直變換下去 注意不能得到了乙個數之後返回上一步 可以得到的所有數的和的最大值 n leq 10 8 m leq 10 5 k leq n 多組詢問 對兩種方式建邊,顯然乙個強...

CSP校內集訓 打撲克

有 n 堆大小為1的撲克,支援合併兩堆撲克和查詢有多少對撲克堆滿足 size i size j leq c c 不確定 暴力做法 開桶記錄當前存在有多少個大小為 i 的堆,查詢可用樹狀陣列或者雙指標,時間複雜度 o m 2logn 或者 o m 2 優化 發現列舉大小的桶有很多是空的,實際上,可以證...

CSP校內集訓 kat(期望DP)

一本有n道題的練習冊,katarina大佬每天都會做k道題。第一天做第1k題,第二天做第2k 1題 第n k 1天做第n k 1 n道題。每道題有它的難度值,假設今天katarina大佬做的題目中最大難度為t,那麼今天katarina大佬的勞累度就是 w t 做完這本書的勞累值就是每天的勞累值之和。...