状态压缩动态规划
Nowed
把泪水种在心上,一定会开出勇敢的花。
展开
-
#状压DP/迭代加深# [luogu P3052] [USACO12MAR]Cows in a Skyscraper G
TitleP3052 [USACO12MAR]Cows in a Skyscraper GSolution注意题意,输出的是最小分组数,一定要快速准确地理解题意!!!设a[i]a[i]a[i]为iii状态下最少的分组数b[i]b[i]b[i]表示iii状态下最后一组中的最大剩余空间。当然也可以选择练一下dfsdfsdfs的迭代加深,大体就是主程序枚举车厢,然后dfsdfsdfs尝试是否可行。Code(状压)#include<cstdio> #include<cstr原创 2020-10-13 21:59:04 · 114 阅读 · 0 评论 -
#状压DP# [luogu P3694] 邦邦的大合唱站队
TitleP3694 邦邦的大合唱站队Solution注意:三目运算符千万记得加括号,否则会出锅,优先级很低设f[i]f[i]f[i]表示在iii状态(从左到右处理完了那些乐队)下出队人数最少的数量。a[i][j]a[i][j]a[i][j]记录的是前缀和。每次更新f[i]=min(f[i],f[i xor (1<<(j−1))]+num[j]−a[tot][j]+a[tot−num[j]][j])f[i]=min(f[i],f[i\ xor\ (1<&l原创 2020-10-10 16:37:31 · 163 阅读 · 0 评论 -
#状压DP+二分#[luogu P3092] [USACO13NOV]No Change G
TitleP3092 [USACO13NOV]No Change GSolution因为m<=15m<=15m<=15,可以状压使用的硬币情况。对于每一种状态,我们枚举使用的第jjj枚硬币,然后从没有使用这枚硬币转移到使用了这枚硬币。d[i]d[i]d[i]表示iii状态下最多可以买下多少货物f[i]f[i]f[i]表示iii状态下最少的花费对于当前的硬币可以买下后面最多的多少货物,可以二分然后转移。如果d[i]==md[i]==md[i]==m也就是可以买完的时候,更原创 2020-10-10 10:12:39 · 165 阅读 · 0 评论 -
[jzoj 6316] djq的朋友圈 {状态压缩}
题目解题思路我们可以把和1号点相邻且是盟友的点归到A集合,与1号点相邻且不是盟友的归到B集合,然后枚举B集合的排列暴力计算。代码#include<cstdio>#include<algorithm>#include<cstring>#define ll long long#define rep(i,x,y) for (register in...原创 2019-08-21 21:33:58 · 180 阅读 · 0 评论 -
[jzoj 2679] 跨时代 {暴力状压+背包}
题目Description钟逆时针而绕,恶物狰狞的倾巢,我谦卑安静地于城堡下的晚祷,压抑远古流窜的蛮荒暗号,而管风琴键高傲的说,那只是在徒劳。我的乐器在环绕,时代无法淘汰我霸气的皇朝。 你无法预言,因为我越险,翅越艳;没有句点,跨时代蔓延,翼朝天。 月下浮雕,魔鬼的浅笑,狼迎风嚎,蝠翔似黑潮,用孤独去调尊严的色调。我跨越过世代,如兽般的姿态,琴声唤起沉睡的血脉。不需要被崇拜,如兽般的悲哀,只为...原创 2019-07-06 16:21:22 · 157 阅读 · 0 评论 -
[luogu 1896] [SCOI2005]互不侵犯 {状态压缩dp}
题目https://www.luogu.org/problemnew/show/P1896解题思路设f[i][j][l]f[i][j][l]f[i][j][l]表示第iii行时,i−1i-1i−1行是第jjj个合法状态时,已经发了lll个王的方案数。f[i][j][l+a[j]]+=f[i−1][k][l](k表示i−2行时第k个合法状态)f[i][j][l+a[j]]+=f[i-1][...原创 2019-03-31 14:05:45 · 155 阅读 · 0 评论 -
[luogu 2704][poj 1185] 炮兵阵地 {状态压缩dp}
题目https://www.luogu.org/problemnew/show/P2704解题思路设f[i][j][k]表示目前为第i行,i−2行第j个合法状态,i−1行第k个合法状态设f[i][j][k]表示目前为第i行,i-2行第j个合法状态,i-1行第k个合法状态设f[i][j][k]表示目前为第i行,i−2行第j个合法状态,i−1行第k个合法状态时的炮兵总数。f[i][l][k]...原创 2019-03-29 22:30:17 · 268 阅读 · 1 评论 -
[jzoj 1284] 病毒 {状态压缩dp}
题目DescriptionD(1<=D<=15)种病毒正袭击着牧场里的奶牛,这给牧场主约翰造成了极大的麻烦,因为按照卫生检疫条例的规定:如果牛奶中的病毒超过K(1<=K<=D)种则不允许被销售,约翰的牧场里共有N(1<=N<=1,000)头奶牛,每头奶牛都带有若干种病毒,约翰挤出的牛奶是混放在一起的,要求约翰最多可以挤多少头奶牛的牛奶,使得混放在一起的牛奶不...原创 2019-03-16 15:51:58 · 222 阅读 · 0 评论 -
[jzoj 4743] 积木{状态压缩dp}
题目解题思路我们可以设f[s][i][j]f[s][i][j]f[s][i][j]为状态为sss最上面为iii且状态摆放状态为jjj的最优解。那么动态转移方程易推。f[s∣(1&lt;&lt;i−1)][i][1/2/3]=max(f[s∣(1&lt;&lt;i−1)][i][1/2/3],f[s][j][1/2/3]+a/b/c[i]);f[s|(...原创 2019-03-09 16:59:34 · 185 阅读 · 0 评论 -
[poj 2411] Mondriaan's Dream{状态压缩DP}
题目http://poj.org/problem?id=2411解题思路代码#include<cstdio>#include<cstring>#include<algorithm>using namespace std; int n,m; long long f[12][1<<11]; bool s[1<<11]; ...原创 2019-01-29 15:33:17 · 221 阅读 · 0 评论 -
[jzoj 5230] 队伍统计 {状态压缩DP}
题目Description现在有n个人要排成一列,编号为1-&gt;n 。但由于一些不明原因的关系,人与人之间可能存在一些矛盾关系,具体有m条矛盾关系(u,v),表示编号为u的人想要排在编号为v的人前面。要使得队伍和谐,最多不能违背k条矛盾关系(即不能有超过k条矛盾关系(u,v),满足最后v排在了u前面)。问有多少合法的排列。答案对10^9+7取模。Input输入文件名为count.in。...原创 2019-01-27 17:41:03 · 205 阅读 · 0 评论 -
[USACO06NOV]玉米田Corn Fields {状态压缩dp}
题目Description 农民 John 购买了一处肥沃的矩形牧场,分成M*N(1 &lt;= M &lt;= 12; 1 &lt;= N &lt;= 12)个格子。他想在那里的一些格子中种植美味的玉米。遗憾的是,有些格子区域的土地是贫瘠的,不能耕种。精明的 FJ 知道奶牛们进食时不喜欢和别的牛相邻,所以一旦在一个格子中种植玉米,那么他就不会在相邻的格子中种植,即没有两个被选中的格子拥...原创 2018-07-18 22:41:56 · 225 阅读 · 0 评论