枚舉子集&高位前綴和
最近做的題裏面有這個東西,於是寫一篇博客總結一下吧。
枚舉子集
枚舉子集就是狀壓的時候枚舉其中的二進制位中的1的子集。直接暴力枚舉二進制位時間復雜度是\(O(4^n)\),但是我們可以發現,對於每一位有以下三種狀態,在枚舉的子集中為1,在子集中為0且在原狀態中為1,以及在原狀態中為0。這樣,對於1到\(2^n\)的數中,子集的總數為\(3^n\),這樣,通過一些比較優秀的枚舉,時間復雜度即為\(O(3^n)\)。代碼如下:
for(int i=s;;i=(i-1)&s) {
//do sth...
if(!i) break;
}
其中,對於每次循環的i,枚舉的即是s的子集。
枚舉子集&高位前綴和
相關推薦
枚舉子集&高位前綴和
strong 就是 代碼 比較 做的 二進制位 cpp span n) 最近做的題裏面有這個東西,於是寫一篇博客總結一下吧。 枚舉子集 枚舉子集就是狀壓的時候枚舉其中的二進制位中的1的子集。直接暴力枚舉二進制位時間復雜度是\(O(4^n)\),但是我們可以發現,對於每一位有
Hihocoder 1496 尋找最大值(狀態壓縮 + 高位前綴和)
ems sca 題目 二進制 包含 aps void post 前綴 題目鏈接 Hiho 1496 設$f[i]$為二進制集合包含$i$的最大的兩個數,這個東西用高維前綴和維護。 高位前綴和轉移的具體方案 :枚舉每一位,然後枚舉每個集合,大的轉移到小的。 註意合並的
UVA 11825 - Hackers' Crackdown 狀態壓縮 dp 枚舉子集
... 節點 ble hack 一個 tex wid cas 大小 UVA 11825 - Hackers‘ Crackdown 狀態壓縮 dp 枚舉子集 ACM 題目地址:11825 - Hackers‘ Crackdown 題意: 有一個由編號0~n-1的
高斯求和等差數列前綴和(洛谷1147 連續自然數和)
數學 i++ -a 一半 自己 簡潔 空格 ron div 對一個給定的自然數M,求出所有的連續的自然數段,這些連續的自然數段中的全部數之和為M。 例子:1998+1999+2000+2001+2002 = 10000,所以從1998到2002的一個自然數段為M=10
AtCoder Regular Contest 075 E - Meaningful Mean 樹狀數組求順序對, 前綴和
n) cin 答案 bound std lan memset main ani 題目鏈接: http://arc075.contest.atcoder.jp/tasks/arc075_c 題意: 給你一個序列和一個數k,求有多少對l,r,使得a[l]+a[l+1]+...+
二分查找前綴和(洛谷1314聰明的質監員NOIP2011提高組)
ron min 最小值 一個數 -s 判斷 inf bre sync 小T 是一名質量監督員,最近負責檢驗一批礦產的質量。這批礦產共有 n 個礦石,從 1到n 逐一編號,每個礦石都有自己的重量 wi 以及價值vi 。檢驗礦產的流程是: 1 、給定m 個區間[Li,Ri
【bzoj4868】[Shoi2017]期末考試 前綴和
[1] con microsoft pre log mic 表示 div 描述 題目描述 有n位同學,每位同學都參加了全部的m門課程的期末考試,都在焦急的等待成績的公布。第i位同學希望在第ti天或之前得知所.有.課程的成績。如果在第ti天,有至少一門課程的成績沒有公布,他
算法筆記--關於求前綴和前的O(1)詢問更新
初始 ems target blank -- 所有 href lan 復雜 所有元素初始值為0才能這麽做。 ①l--r全加1 a[l]++; a[r]--; 求一遍前綴和為元素本身。 求兩遍前綴和為元素前綴和。 例題:http://codeforces.com/proble
2017盛大遊戲杯 零件組裝(狀態壓縮DP之巧妙枚舉子集)
mst print scan shu for ble pre 一個 clas 題目鏈接:2017盛大遊戲杯 零件組裝 題意: 有n個零件,給你相鄰關系和排斥關系,每兩塊零件組裝起來有一個代價,問最少的代價總和是多少。 題解: 考慮狀態壓縮,dp[i]表示i這個集合為一個零件
CodeForces 816B Karen and Coffee(前綴和,大量查詢)
pre div 準備 nes 個數 contain 端點 -i integer CodeForces 816B Karen and Coffee(前綴和,大量查詢) Description Karen, a coffee aficionado, wants to know
和為k的連續區間 前綴和
i++ code 結束 lns out blog 數列 .org sizeof 一整數數列a1, a2, ... , an(有正有負),以及另一個整數k,求一個區間i,ji,j,(1 <= i <= j <= n),使得aii + ... + ajj =
ACdreamoj 1011(樹狀數組維護字符串hash前綴和)
cdr popu stdin ace fin 代碼 long long 方法 snippet 題目鏈接:http://acdream.info/problem?pid=1019 題意:兩種操作,第一種將字符串某個位置的字符換為還有一個字符。另外一種查詢某個連續子序
CF427 C star sky 二維數組前綴和
problem main urn str 亮度 等價 前綴 sizeof 矩形區域 用pre[t][i][j]存時間等價於t時坐標(1, 1) 和(i, j)組成的矩形區域的星星總亮度。再註意一下一個坐標處可以有多顆星星就可以了。 star sky 1 // http
Codeforces Round #427 (Div. 2) Problem C Star sky (Codeforces 835C) - 前綴和
題目 scan 開心 color 一個 lin cond cati ict The Cartesian coordinate system is set in the sky. There you can see n stars, the i-th has coordi
Codeforces 838A - Binary Blocks(二維前綴和+容斥)
using min class blank -i push_back cin size 1的個數 838A - Binary Blocks 思路:求一下前綴和,然後就能很快算出每一小正方塊中1的個數了,0的個數等於k*k減去1的個數,兩個的最小值就是要加進答案的值。 代碼:
51nod 1682 中位數計數(前綴和)
int 計數 ret sizeof == clas out using ron 51nod 1682 中位數計數 思路: sum[i]表示到i為止的前綴和(比a[i]小的記為-1,相等的記為0,比a[i]大的記為1,然後求這些-1,0,1的前綴和); hash[sum[i]
【bzoj4972】小Q的方格紙 前綴和
sample 面積 滿了 div zoj pac 需要 fine namespace 題目描述 方格紙與草稿紙一樣,都是算法競賽中不可或缺的重要工具。身經百戰的小Q自然也會隨身帶著方格紙。小Q的方格紙有n行m列,一共n*m個方格,從上到下依次標記為第1,2,...,n行,
51nod 1103 N的倍數 思路:抽屜原理+前綴和
相等 ace http 程序 pre logs amp cin images 題目: 這是一道很神奇的題目,做法非常巧妙。巧妙在題目要求n個數字,而且正好要求和為n的倍數。 思路:用sum[i]表示前i個數字的和%n。得到sum[ 1-N ]共N個數字。 N個數
一維前綴和 - 包含輸入輸出優化
ons 自己 mes 相減 || them 結果 put clu 2017-08-27 09:30:59 writer:pprp 很基礎的一個知識點,想要求區間內的和,可以考慮用兩個前n項和 相減 輸入輸出部分,采用自己寫的一個函數,用getchar() putchar()
CF835 C 前綴和
file names 前綴和 pri auth let git set https 100*100規模上第一象限坐標系上有1e5規模的點,每個點隨時間在同一個值域內(最大10)周期遞增,但初始值不同,給出一個矩陣和時間詢問此時範圍內點的值的和。 預處理初始時刻不同權值下的