dp,状压dp等 一些总结
也就作业几题而已,分析一下提醒
最重要的就是,记住,没用的状态无论怎么转移最后都会是没用的状态,所以每次转移以后的有值的状态都是有用的状态。
几种思考方向:
第一种:枚举当前的状态,转移成另外一个状态
第二种:枚举最终状态,然后通过另外一个枚举能转移到这种状态
①就是给你一个地图,然后这个图上面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有如下特点:之前的状态转移了以后就没有其他作用了
然后采用一维有以下几个特征:数组中保存的是之前的状态,更新的是目前的状态
状压dp里面很需要剪枝,然后一下有几种剪枝的可能性
①先枚举状态,再枚举所需要的另外一维。所以这个不剪枝的复杂度是O(状态的种类*另外一维的大小),然后这个时候把没用的状态给continue了就好了,那么多的状态里面肯定会消去很多种状态的,所以复杂度会下降的很快 。例如POJ2441
②如果你需要枚举之前的状态和目前所在这一行的状态的话,单纯的暴力枚举是TLE的。这个时候题目一般会告诉你每个状态之间都会有条件,而且这个条件都会把剩下来的状态变得很小,然后再暴力就好了。例如POJ3254
dp,状压dp等 一些总结的更多相关文章
- 【BZOJ】1076 [SCOI2008]奖励关 期望DP+状压DP
[题意]n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡.每种宝物有一个价值(有负数).每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益.k<=100,n&l ...
- CCF 201312-4 有趣的数 (数位DP, 状压DP, 组合数学+暴力枚举, 推公式, 矩阵快速幂)
问题描述 我们把一个数称为有趣的,当且仅当: 1. 它的数字只包含0, 1, 2, 3,且这四个数字都出现过至少一次. 2. 所有的0都出现在所有的1之前,而所有的2都出现在所有的3之前. 3. 最高 ...
- hdu 4352 "XHXJ's LIS"(数位DP+状压DP+LIS)
传送门 参考博文: [1]:http://www.voidcn.com/article/p-ehojgauy-ot.html 题解: 将数字num字符串化: 求[L,R]区间最长上升子序列长度为 K ...
- [转]状态压缩dp(状压dp)
状态压缩动态规划(简称状压dp)是另一类非常典型的动态规划,通常使用在NP问题的小规模求解中,虽然是指数级别的复杂度,但速度比搜索快,其思想非常值得借鉴. 为了更好的理解状压dp,首先介绍位运算相关的 ...
- 状态压缩dp 状压dp 详解
说到状压dp,一般和二进制少不了关系(还常和博弈论结合起来考,这个坑我挖了还没填qwq),二进制是个好东西啊,所以二进制的各种运算是前置知识,不了解的话走下面链接进百度百科 https://baike ...
- 洛谷 P3343 - [ZJOI2015]地震后的幻想乡(朴素状压 DP/状压 DP+微积分)
题面传送门 鸽子 tzc 竟然来补题解了,奇迹奇迹( 神仙题 %%%%%%%%%%%% 解法 1: 首先一件很明显的事情是这个最小值可以通过类似 Kruskal 求最小生成树的方法求得.我们将所有边按 ...
- 51nod 1673 树有几多愁(链表维护树形DP+状压DP)
题意 lyk有一棵树,它想给这棵树重标号. 重标号后,这棵树的所有叶子节点的值为它到根的路径上的编号最小的点的编号. 这棵树的烦恼值为所有叶子节点的值的乘积. lyk想让这棵树的烦恼值最大,你只需输出 ...
- BZOJ3836 [Poi2014]Tourism 【树形dp +状压dp】
题目链接 BZOJ3836 题解 显然这是个\(NP\)完全问题,此题的解决全仗任意两点间不存在节点数超过10的简单路径的性质 这意味着什么呢? \(dfs\)树深度不超过\(10\) \(10\)很 ...
- SCUT - 254 - 欧洲爆破 - 概率dp - 状压dp
https://scut.online/p/254 思路很清晰,写起来很恶心. #include<bits/stdc++.h> using namespace std; #define l ...
- bzoj1076: [SCOI2008]奖励关(期望dp+状压dp)
1076: [SCOI2008]奖励关 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2989 Solved: 1557[Submit][Statu ...
随机推荐
- 《剑指Offer》题二十一~题三十
二十一.调整数组顺序使奇数位于偶数前面 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数位于数组的前半部分,所有偶数位于数组的后半部分. 测试用例: 功能测试:输入数组中的奇 ...
- 自测之Lesson15:TCP&UDP网络编程
题目:编写一个TCP通信的程序. 实现代码: #include <stdio.h> #include <sys/socket.h> #include <unistd.h& ...
- 初涉算法——STL初步
一.头文件<algorithm> ①sort函数 sort使用数组元素默认的大小比较运算符进行排序,只有在需要按照特殊依据进行排序时才需要传入额外的比较函数: sort可以给任意对象排序( ...
- Lecture Sleep(尺取+前缀和)
Description 你的朋友Mishka和你参加一个微积分讲座.讲座持续n分钟.讲师在第i分钟讲述ai个定理. 米什卡真的对微积分很感兴趣,尽管在演讲的所有时间都很难保持清醒.给你一个米什卡行 ...
- alpha-4
前言 失心疯病源4 团队代码管理github 站立会议 队名:PMS 530雨勤(组长) 今天完成了那些任务 19:00~21:50 利用背景相减法完成背景构建与更新模块,查找关于blob更多的论文资 ...
- iOS开发自定义试图切换
CATransition *transition = [CATransition animation]; transition.duration = 1.0f; transition.timingFu ...
- BAT批处理(六)
字符串处理 批处理有着具有非常强大的字符串处理能力,其功能绝不低于C语言里面的字符串函数集.批处理中可实现的字符串处理功能有:截取字符串内容.替换字符串特定字段.合并字符串.扩充字符串等功能.下面对这 ...
- nginx 设置默认虚拟 host
nginx 设置默认虚拟 host listren 80 default_server
- spring ioc经典总结
component-scan标签默认情况下自动扫描指定路径下的包(含所有子包),将带有 @Component @Repository @Service @Controller标签的类自动注册到spri ...
- HTML5拖拽表格中单元格间的数据库
效果图: