南外集训Day3

状压dp

特点

  • 数据规模小的一类最优化问题。
  • 状态满足无后效性,且你无法抽象出一个不是暴力的状态(即你需要对所有点进行求解才能得到答案)。

做法

状压dp多以二进制作为状态,有时多进制。

操作:

有一个数x

  1. 第k位置为1

    x|=1<<k

  2. 第k位设置为0

    (x|(1<<k))^(1<<k)

  3. 第k位取反

    x^(1<<k)

  4. 判断第k位是否位1

    x&(1<<k)>0

  5. 取最低位1对应的10进制数

    x&(-x)

  6. 去掉x的最低位1

    x-(x&(-x)),x&(x-1)

  7. 取出整数的第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去散步

题目

思路

材料分解

题目

思路

随机交换排序法

题目

题意

给一个长度为 n (n100)0/1 串,进行 k (k109) 次操作,每次操作选择两个位置 i,j (1i<jn),交换 i,j 上的数,求 k 次操作后,该 0/1 串变成非降序列的概率,答案对 109+7 取模。

思路

posted @   徐子洋  阅读(19)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· Apache Tomcat RCE漏洞复现(CVE-2025-24813)
点击右上角即可分享
微信分享提示