
动态规划——状压dp
文章平均质量分 74
无
迷蒙之雨
这个作者很懒,什么都没留下…
展开
-
[PA2015]Edycja
中,若产生了和贪心方案中不同的环,那么把某一个出边改变的点的出边改为贪心的,那么因为边时贪心选的,所以一定不劣,同时还能破坏环。这样构成一个图,若这个图没有环,那么存在一种构造是对于每棵树从上到下依次操作,同时因为贪心选择,所以总代价一定是最小的可以直接输出。因此,对于每个字符,我们有且只会对其执行一次二操作,且由这次二操作产生的字符不会因为其他二操作改变,设其为。否则,若存在其他不是环的基环树,那么可以等其执行完后对于其一个叶子当做条边辅助操作,也是多一个。,再依次执行环上的操作,最后执行。原创 2023-01-07 20:40:37 · 567 阅读 · 0 评论 -
[ZYOI]通往天国的倒计时(sosdp+点分治+随机化+状压)
解题思路一道自己出的题目思路来自谋道类似的随机化题目首先如果K=pK=pK=p怎么做考虑点分治算出所有经过重心的路径记录重心上的颜色种类,这个可以状压一下,记作sta[i]sta[i]sta[i]而总的颜色就是S=(1<<p)−1S=(1<<p)-1S=(1<<p)−1那么两条路径可以拼出答案,当且仅当sta[x]∣sta[y]==Ssta[x]|sta[y]==Ssta[x]∣sta[y]==S我们枚举xxx,就可以算出最优的yyy而符合条件的y.原创 2022-02-17 14:58:29 · 484 阅读 · 0 评论 -
sosdp(高维前缀和)学习笔记
高维前缀和我们先看一维前缀和for(int i=1;i<=n;i++)s[i]+=s[i-1];那么二维前缀和for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)s[i][j]+=s[i-1][j]+s[i][j-1]-s[i-1][j-1];这个是根据容斥计算的,维度很高的时候就不行了我们换一种方法for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)s[i][j]+=s[i-1][j]原创 2022-02-09 14:41:30 · 1541 阅读 · 0 评论 -
[九省联考2018]一双木棋chess(状压DP+博弈论+Minmax搜索)
洛谷题目传送门解题思路nnn和mmm都很小,很容易想到状压DP题目描述的规则大致是长这个样子也就是说填的位置单调递减,我们大胆一点,设一个10进制的状压,表示每一列填到了那个位置,那么这个数要单调递减,易证明这样的合法状态数是很小的既然是一道博弈DP题,那么我们需要倒叙DP,因为如果正序,我们会不知道未来的情况如何,而倒着的话就可以知道了,对于A选手,他想让ValA−ValBValA-ValBValA−ValB最大,但是他应该从最小的一个状态转移,这里应用到Min−MaxMin-MaxMin−M原创 2021-11-15 22:03:14 · 909 阅读 · 0 评论 -
P3977 [TJOI2015]棋盘(状压DP+矩阵乘法)
洛谷题目传送门解题思路看到m小于等于6,立马觉得是状压先预处理出每一行合法的状态,再枚举相邻两行的状态i,j,若这两行的棋子不会互相攻击,则说明j可以从i转移,则开个vector存进去DP式:F[i][j]=∑k∈legal[j]F[i−1][k]F[i][j]=\sum_{k\in legal[j]}F[i-1][k]F[i][j]=k∈legal[j]∑F[i−1][k]其中legal表示j可以转移的状态集合期望得分:50分#include<bits/stdc++.h>us原创 2021-11-03 14:48:39 · 155 阅读 · 0 评论 -
P3943 星空(状压DP+bfs+异或差分)
命运偷走如果只留下结果, 时间偷走初衷只留下了苦衷。你来过,然后你走后,只留下星空。 洛谷题目传送门题目描述逃不掉的那一天还是来了,小 F 看着夜空发呆。天上空荡荡的,没有一颗星星——大概是因为天上吹不散的乌云吧。心里吹不散的乌云,就让它在那里吧,反正也没有机会去改变什么了。小 C 拿来了一长串星型小灯泡,假装是星星,递给小 F,想让小 F 开心一点。不过,有着强迫症的小 F 发现,这串一共 n 个灯泡的灯泡串上有 k 个灯泡没有被点亮。小 F 决定和小 C 一起把这个灯泡串全部点亮。不.原创 2021-08-11 17:52:24 · 165 阅读 · 0 评论 -
[NOI2015] 寿司晚宴(状压DP)
洛谷题目传送门解题思路首先考虑30pts的做法因为两人选的数必须互质,因此可以想到只要维护二者没有共同质因子就行了因为质因子个数很少,考虑状压DP设 dp[S][T] 表示 A选了数的质因子状态为 S,B的质因子状态为 T那么 dp[S|k][T]+=dp[S][T] ((k&T)==0) dp[S][T|k]+=dp[S][T] ((k&S)==0)其中 k 表示 第 i 个数 的质因子状态,因为可以用滚动数组优化,因此不需...原创 2021-07-09 21:31:58 · 214 阅读 · 3 评论 -
炮兵阵地
炮兵阵地题目描述司令部的将军们打算在N×MN×M的网格地图上部署他们的炮兵部队。一个N×MN×M的地图由N行M列组成,地图的每一格可能是山地(用"H" 表示),也可能是平原(用"P"表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵.原创 2021-02-16 16:26:08 · 181 阅读 · 1 评论 -
Corn Fields
Corn Fields题目描述Farmer John新买了一块长方形的牧场,这块牧场被划分成M列N行(1<=M<=12; 1<=N<=12),每一格都是一块正方形的土地。FJ打算在牧场上的某几格土地里种上美味的草,供他的奶牛们享用。遗憾的是,有些土地相当的贫瘠,不能用来放牧。并且,奶牛们喜欢独占一块草地的感觉,于是FJ不会选择两块相邻的土地,也就是说,没有哪两块草地有公共边。当然,FJ还没有决定在哪些土地上种草。 作为一个好奇的农场主,FJ想知道,如果不考虑草地的总块数,那么原创 2021-02-16 15:59:13 · 200 阅读 · 0 评论 -
[bzoj1087] little kings
[bzoj1087]little kings题目描述在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案。国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子。输入格式只有一行,包含两个数N,K ( 1 <=N <=9, 0 <= K <= N * N)输出格式一行,一个整数,表示答案。样例数据input3 2output16数据规模与约定N<=10看到数据范围,首先考虑暴搜.原创 2021-02-16 15:48:45 · 173 阅读 · 2 评论