南外集训Day3
状压dp
特点
- 数据规模小的一类最优化问题。
- 状态满足无后效性,且你无法抽象出一个不是暴力的状态(即你需要对所有点进行求解才能得到答案)。
做法
状压dp多以二进制作为状态,有时多进制。
操作:
有一个数x
-
第k位置为1
x|=1<<k
-
第k位设置为0
(x|(1<<k))^(1<<k)
-
第k位取反
x^(1<<k)
-
判断第k位是否位1
x&(1<<k)>0
-
取最低位1对应的10进制数
x&(-x)
-
去掉x的最低位1
x-(x&(-x)),x&(x-1)
-
取出整数的第k位
(x>>k)&1
……
反正手推即可。
例题
[SCOI2007]排列perm
题目。
题意
给一个数字串s和正整数d, 统计s有多少种不同的排列能被d整除(可以有前导0)。例如123434有90种排列能 被2整除,其中末位为2的有30种,末位为4的有60种。
思路
套路:把余数开进状态
再把选的数压进状态
这是个板题……
美妙的菜肴
题目。
题意
吃m种菜,每种有一个贡献,连着吃x_i,y_i并且按照x_i,y_i的顺序吃会多c_i的贡献,求最大贡献。
思路
记录吃的菜状态和上一个选的。
卡牌游戏
题目。
思路
差值可以是负数!!!那么我们发现两个人都想让自己的值变大。
dp[i][s]前i次操作,卡牌状态为s,之所以能状压是因为最多用到最好的那m张
我们发现不禁卡牌和禁m张中最差的m张一样,因为这步操作一定会使m张卡牌多出一张,而这张必定选不到。所以我们就保证了每步必定会禁一张。
然后就是这样,很水,直接上即可。
[POI2004]PRZ
题意。
题目
一只队伍在爬山时碰到了雪崩,他们在逃跑时遇到了一座桥,他们要尽快的过桥. 桥已经很旧了, 所以它不能承受太重的东西. 任何时候队伍在桥上的人都不能超过一定的限制. 所以这只队伍过桥时只能分批过,当一组全部过去时,下一组才能接着过. 队伍里每个人过桥都需要特定的时间,当一批队员过桥时时间应该算走得最慢的那一个,每个人也有特定的重量,我们想知道如何分批过桥能使总时间最少.
思路
枚举子集+预处理可以水过。
[NOIP2017 提高组] 宝藏
题目。
思路
环的计数
给定 n 个点 m 条边的简单无向图,求其中环的数量。
思路
dp[s][u]为到u的链有多少条,那么我们看看u到s中的最小点是否有连边以确定权值即可。
序列递推
思路
[Noi2012]随机数生成器
题目。
题意
X[n+1]=(aX[n]+c)mod m, 求X[n] mod g。
思路
矩阵快速幂直接上就行了
由于会爆long long,所以用龟速乘即可
[SDOI2009]HH去散步
题目。
思路
材料分解
题目。
思路
随机交换排序法
题目。
题意
给一个长度为
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)