也就作业几题而已,分析一下提醒

最重要的就是,记住,没用的状态无论怎么转移最后都会是没用的状态,所以每次转移以后的有值的状态都是有用的状态。

几种思考方向:

第一种:枚举当前的状态,转移成另外一个状态

第二种:枚举最终状态,然后通过另外一个枚举能转移到这种状态

①就是给你一个地图,然后这个图上面1的可以放东西,0的不能放,问一共有n个东西,每个东西只能放在特定的几个位置上,最多有几种?POJ2441

这个问题就是,因为地图之间的每个空间都是很大的,如果只是普通的dp是无法进行状态转移的,因此这道题就是状压dp(当然数据小的话也是一种标志),然后接下来就是从上到下,然后枚举状态即可。(把上面一行的所有的状态的可能性都放过来,是从上面一种状态转移到另外一种状态)

②所有的种类问题,给你一个地图,地图上面1可以放东西,0不能放,一个有多少种放法?(放东西的次数可以为1,2,3,4...到无穷)POJ3254

这道题目虽然和上面这个题目很像,但是由于可以任意放,所以又有点变化,和第一类的主要区别在于,目前所在的这个状态是上一种条件下能够满足加入这个状态的所有状态的和

③铺砖问题UVA11270

这一类问题是轮廓线dp,但是就是状压dp的变种。

就是给你一个矩阵n*m,再给你方块,问你有多少种情况能铺满整个矩阵?

我们就是不断的递推目前的dp,然后dp的每一维的长度都是1<<m,然后我们只需要每次从上往下移位,然后转移的时候判断能否往上、往左、往下、往右、或者不放即可(当然只是其中的几种,看你怎么推了),然后最后因为矩阵满足的状态是所有被覆盖嘛,因此答案就是你目前所在的pos和(1<<m)-1

④覆盖问题 POJ2836(当然个人感觉这道题目的数据太水了。。。我的代码以奇怪的姿势都过了。。。)

给一个图,图上有n个点(都在图的线的交叉处),然后有任意大小的矩阵无穷多个,要让这些矩阵铺满所有的点(每个点可以被覆盖多次),问,覆盖掉所有的点所需要的矩阵的最小面积是多少?

我们可以得到以下的情况,我们枚举n个点,制造n*n个矩阵,然后分别要知道矩阵内部(含边界)有几个点,最后dp[s]得到就可以了

⑤罚时问题 HDU1074(逆向思考有时是dp的一把刀韧)

一个人作业没做完,每个作业有限定的期限,但是如果你不在这个限定的期限内做完的话,每过一天扣一分,然后给你n门科目,怎么做才能让自己的分数损失为最小?

首先这个是一维的状压DP,一维的状压DP有如下特点:之前的状态转移了以后就没有其他作用了

然后采用一维有以下几个特征:数组中保存的是之前的状态,更新的是目前的状态

 然后这道题的关键点就在于逆向思考:我们在寻找状态的时候,如果说,你目前的状态转移出去有多个状态且这多个状态都需要用到的时候,不如反过来思考,我们定义好状态,然后看看能否向目前的这个状态转移
⑥不相交子序列的最大值问题,子序列里面的数字是要连续。(HDU1024)
kuangbin同志的题解http://www.cnblogs.com/kuangbin/archive/2011/08/04/2127085.html
定义dp[i][j],分成i组,到第j个,然后状态转移:dp[i][j] = a[j]包含在第i组里面,还是自己独立成组

状压dp里面很需要剪枝,然后一下有几种剪枝的可能性

①先枚举状态,再枚举所需要的另外一维。所以这个不剪枝的复杂度是O(状态的种类*另外一维的大小),然后这个时候把没用的状态给continue了就好了,那么多的状态里面肯定会消去很多种状态的,所以复杂度会下降的很快 。例如POJ2441

②如果你需要枚举之前的状态和目前所在这一行的状态的话,单纯的暴力枚举是TLE的。这个时候题目一般会告诉你每个状态之间都会有条件,而且这个条件都会把剩下来的状态变得很小,然后再暴力就好了。例如POJ3254

dp,状压dp等 一些总结的更多相关文章

  1. 【BZOJ】1076 [SCOI2008]奖励关 期望DP+状压DP

    [题意]n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡.每种宝物有一个价值(有负数).每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益.k<=100,n&l ...

  2. CCF 201312-4 有趣的数 (数位DP, 状压DP, 组合数学+暴力枚举, 推公式, 矩阵快速幂)

    问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...

  3. hdu 4352 "XHXJ's LIS"(数位DP+状压DP+LIS)

    传送门 参考博文: [1]:http://www.voidcn.com/article/p-ehojgauy-ot.html 题解: 将数字num字符串化: 求[L,R]区间最长上升子序列长度为 K ...

  4. [转]状态压缩dp(状压dp)

    状态压缩动态规划(简称状压dp)是另一类非常典型的动态规划,通常使用在NP问题的小规模求解中,虽然是指数级别的复杂度,但速度比搜索快,其思想非常值得借鉴. 为了更好的理解状压dp,首先介绍位运算相关的 ...

  5. 状态压缩dp 状压dp 详解

    说到状压dp,一般和二进制少不了关系(还常和博弈论结合起来考,这个坑我挖了还没填qwq),二进制是个好东西啊,所以二进制的各种运算是前置知识,不了解的话走下面链接进百度百科 https://baike ...

  6. 洛谷 P3343 - [ZJOI2015]地震后的幻想乡(朴素状压 DP/状压 DP+微积分)

    题面传送门 鸽子 tzc 竟然来补题解了,奇迹奇迹( 神仙题 %%%%%%%%%%%% 解法 1: 首先一件很明显的事情是这个最小值可以通过类似 Kruskal 求最小生成树的方法求得.我们将所有边按 ...

  7. 51nod 1673 树有几多愁(链表维护树形DP+状压DP)

    题意 lyk有一棵树,它想给这棵树重标号. 重标号后,这棵树的所有叶子节点的值为它到根的路径上的编号最小的点的编号. 这棵树的烦恼值为所有叶子节点的值的乘积. lyk想让这棵树的烦恼值最大,你只需输出 ...

  8. BZOJ3836 [Poi2014]Tourism 【树形dp +状压dp】

    题目链接 BZOJ3836 题解 显然这是个\(NP\)完全问题,此题的解决全仗任意两点间不存在节点数超过10的简单路径的性质 这意味着什么呢? \(dfs\)树深度不超过\(10\) \(10\)很 ...

  9. SCUT - 254 - 欧洲爆破 - 概率dp - 状压dp

    https://scut.online/p/254 思路很清晰,写起来很恶心. #include<bits/stdc++.h> using namespace std; #define l ...

  10. bzoj1076: [SCOI2008]奖励关(期望dp+状压dp)

    1076: [SCOI2008]奖励关 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2989  Solved: 1557[Submit][Statu ...

随机推荐

  1. Java内存管理特点

    Java内存管理特点     Java一个最大的优点就是取消了指针,由垃圾收集器来自动管理内存的回收.程序员不需要通过调用函数来释放内存. 1.Java的内存管理就是对象的分配和释放问题.     在 ...

  2. 头文件#ifndef #define #endif使用

    想必很多人都看过“头文件中的 #ifndef #define #endif 防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?是不能在不同的两个文件中使用include来包含这个头文件 ...

  3. Java实验二实验报告:java面向对象程序设计

    java实验二实验报告 实验内容 1. 初步掌握单元测试和TDD 2. 理解并掌握面向对象三要素:封装.继承.多态 3. 初步掌握UML建模 4. 熟悉S.O.L.I.D原则 5. 了解设计模式 实验 ...

  4. java日期格式处理

    继承关系:java.lang.Object->java.text.Format->java.text.DateForm->java.text.SimpleDateFormat 日期代 ...

  5. PHP 签到,与时间获取,数组长度获取

    本文实例讲述了php实现签到功能的方法.分享给大家供大家参考,具体如下:首先我在数据库里建了两张表,一个是用户的积分表,一个是签到状态表,分来用来记录用户的积分数和先到状态 在用户签到状态表中我们有一 ...

  6. C# 知识回顾 - 匿名方法

    C# 基础回顾 - 匿名方法 目录 简介 匿名方法的参数使用范围 委托示例 简介 在 C# 2.0 之前的版本中,我们创建委托的唯一形式 -- 命名方法. 而 C# 2.0 -- 引进了匿名方法,在 ...

  7. java 基础--switch--003

    1,break可以省略吗? default中的可以省略,其他的如果省略会执行下一个case,从下一个case的 break中中断.(case穿透) 2,default一定要在最后吗? 不是,可以在任意 ...

  8. 在 visual studio 中添加 ILDASM 工具

    先写下一般的用法,就是在 vs 中添加 ILDASM 工具. 添加步骤: 工具---->外部工具----->添加: 标题我一般取为 ILDASM,命令那一栏是要选择 ILDASM 的路径, ...

  9. AndroidStudio3.0 注解报错Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor.

    把Androidstudio2.2的项目放到3.0里面去了,然后开始报错了. 体验最新版AndroidStudio3.0 Canary 8的时候,发现之前项目的butter knife报错,用到注解的 ...

  10. css3 字体渐变

    先看个效果 https://www.bienvillecapital.com/ 然后人家样式这样写的 font-family: Overpass,Helvetica,sans-serif; font- ...