E-COM-NET
首页
在线工具
Layui镜像站
SUI文档
联系我们
推荐频道
Java
PHP
C++
C
C#
Python
Ruby
go语言
Scala
Servlet
Vue
MySQL
NoSQL
Redis
CSS
Oracle
SQL Server
DB2
HBase
Http
HTML5
Spring
Ajax
Jquery
JavaScript
Json
XML
NodeJs
mybatis
Hibernate
算法
设计模式
shell
数据结构
大数据
JS
消息中间件
正则表达式
Tomcat
SQL
Nginx
Shiro
Maven
Linux
——状压dp
uva 11825 Hackers' Crackdown (
状压dp
,子集枚举)
题目链接:uva 11825 题意: 你是一个黑客,侵入了n台计算机(每台计算机有同样的n种服务),对每台计算机,你能够选择终止一项服务,则他与其相邻的这项服务都终止。你的目标是让很多其它的服务瘫痪(没有计算机有该项服务)。 思路:(见大白70页,我的方程与大白不同) 把n个集合P1、P2、Pn分成尽量多的组,使得每组中全部集合的并集等于全集,这里的集合Pi是计算机i及其相邻计
·
2015-11-08 11:49
rack
[Swust OJ 581]--彩色的石子(
状压dp
)
题目链接:http://acm.swust.edu.cn/problem/0581/ Time limit(ms): 1000 Memory limit(kb): 65535 Description 把m个含有k种不同颜色的石子放成一条线上。现在要问你怎么才能取走 最少的石子,使得没有两个相同颜色
·
2015-11-07 10:03
dp
Codeforces Gym 100676G Training Camp
状压dp
非常简单的一道
状压dp
(一开始我还误导队友写成两维的去了 T^T); dp[s] : s 的二进制存放的是已经选择的课程,在该状态下的能获得的最大
·
2015-11-07 10:10
codeforces
cf298F:
状压dp
+剪枝
div2的F题,只想到了一个复杂度略高的dp,T了几次,后来加了剪枝减掉一些无用的状态终于过了。。 题意: 一个n*m的矩阵 (n<=5,m<=20),对格子进行黑白染色,已经给出了每行每列黑色联通块的个数,要求输出一组答案,满足有解。 思路: 首先发现n只有5,考虑按列处理,每列总共有2^5=32种状态;又发现对于给出的联通块个数,最坏情况是当联通块个数等于1或者
·
2015-11-06 07:18
dp
【大渣】【
状压Dp
】过河
过河(NOIP)TimeLimit:10000MS MemoryLimit:65536KTotalSubmit:97Accepted:26 CaseTimeLimit:1000MSDescription在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧。在桥上有一些石子,青蛙很讨厌踩在这些石子上。由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数轴上的一
Musame
·
2015-11-05 16:00
dp
学习交流
【HDU1572】【旅行商问题
状压DP
数据小全排列暴力】下沙小面的(2)
#include #include #include #include #include #include #include #include #include #include #include #include #include usingnamespacestd; voidfre(){freopen("c://test//input.in","r",stdin);freopen("c://t
snowy_smile
·
2015-11-05 10:00
ACM
STL
ICPC
HDU
151104总结
2进制,然后就是统计l~r的二进制每位出现了多少次/*wa的只有30分,把(1<
状压
beginendzrq
·
2015-11-04 15:00
总结
sdut-2725-The Urge to Merge-
状压DP
把数组竖起来,从上往下走。 如果当前位置是竖着乘的,那么第一个点标记为1.否则标记为0. 样例最终的状态为: 0 0 1 0 1 0 1 0 0 0 0 0 #include<iostream> #include<cmath> #include<algorithm> #include<stdio.h>
·
2015-11-02 18:11
merge
HDU 4739 Zhuge Liang's Mines (状态压缩+背包DP)
思路 比赛的时候暴力dfs+O(n^4)枚举写过了……无意间看到有题解用
状压DP
(这才是正解吧T_T),然后自己才恍然大悟- -…… 点不多嘛,用一个20位的整数表示各个点。
·
2015-11-02 17:16
HDU
HDU 4739 Zhuge Liang's Mines (状态压缩+背包DP)
思路 比赛的时候暴力dfs+O(n^4)枚举写过了……无意间看到有题解用
状压DP
(这才是正解吧T_T),然后自己才恍然大悟- -…… 点不多嘛,用一个20位的整数表示各个点。
·
2015-11-02 17:53
HDU
hdu 4284 Travel floyd +
状压DP
http://acm.hdu.edu.cn/showproblem.php?pid=4284 题解:http://www.cnblogs.com/E-star/archive/2012/09/11/2680992.html View Code #include <iostream> #include <cstdio> #include <cstrin
·
2015-11-02 15:34
floyd
UVa 1252 (
状压DP
+ 记忆化搜索) Twenty Questions
题意: 有n个长为m的各不相同的二进制数(允许存在前导0),别人已经事先想好n个数中的一个数W,你要猜出这个数。 每次只可以询问该数的第K为是否为1. 问采用最优询问策略,则最少需要询问多少次能保证猜到。 比如有1100 和 0110两个数,只需要询问第一或第三位数是否为1,即可猜中,因此答案为1. 分析: d(s, a)表示已经询问了的集合s,在已经询问了的集合中W中为1的集合为a,
·
2015-11-02 15:16
uva
UVa 10817 (
状压DP
+ 记忆化搜索) Headmaster's Headache
题意: 一共有s(s ≤ 8)门课程,有m个在职教师,n个求职教师。 每个教师有各自的工资要求,还有他能教授的课程,可以是一门或者多门。 要求在职教师不能辞退,问如何录用应聘者,才能使得每门课只少有两个老师教而且使得总工资最少。 分析: 因为s很小,所以可以用状态压缩。 dp(i, s1, s2)表示考虑了前i个人,有一个人教的课程的集合为s1,至少有两个人教的集合为s2。 在递归的
·
2015-11-02 15:15
master
BZOJ 1231: [Usaco2008 Nov]mixup2 混乱的奶牛( dp )
状压dp
dp( x , S ) 表示最后一个是 x , 当前选的奶牛集合为 S , 则状态转移方程 : dp( x , S ) = Σ dp
·
2015-11-02 12:02
USACO
pku 1185 炮兵阵地
状压DP
http://poj.org/problem?id=1185 题意: 给出一个n*m的矩阵,矩阵的每个方格标有P/H p表示可以安置大炮,H表示不能安置大炮,当大炮安置于(i,j)点时,其左右两个单位以及上下两个单位都在攻击范围,求在两支大炮不会相互攻击的前提下,最多能够安置大炮的数量。 思路: 当前行大炮的的安置要受其前两行的影响,所以状态转移方程有: dp[i][j][k] = ma
·
2015-11-02 11:21
pku
HDU 1074 Doing Homework
第一次做这道题大概是半个月前了吧,
状压DP
一个很新鲜的名词 当时看题解怎么也看不懂,现在看懂了以后还是很简单的 所谓状态压缩就是用一个整数的二进制来表示一个状态,比如有三个作业 000表示一科作业也没做
·
2015-11-02 11:31
home
UVa 11825 (
状压DP
) Hackers' Crackdown
这是我做
状压DP
的第一道题,状压里面都是用位运算来完成的,只要耐下心来弄明白每次位运算的含义,还是容易理解的。
·
2015-11-02 11:15
rack
hdu 1074
状压dp
用不同的状态表示当前作业完成的情况,运用
状压dp
定义集合S为已经完成的
liujc_
·
2015-11-01 23:00
BZOJ 4145: [AMPPZ2014]The Prices(
状压dp
+ 01背包 )
我自己只能想出O( n*3^m )的做法....肯定会T O( nm*2^m )做法: dp( x, s ) 表示考虑了前 x 个商店, 已买的东西的集合为s. 考虑转移 : 先假设我们到第x个商店去, so初始时 dp( x, s) = dp( x-1, s ) + d[x] 然后我们可以对第x个商店做01背包, dp(x, s + {h} ) = min( dp( x, s + {
·
2015-11-01 14:11
ICE
BZOJ 2073: [POI2004]PRZ(
状压dp
)
状压dp
, dp( s ) 表示 s 状态下所用的最短时间 , 转移就直接暴力枚举子集 . 可以先预处理出每个状态下的重量和时间的信息 .
·
2015-11-01 14:05
poi
1688: [Usaco2005 Open]Disease Manangement 疾病管理( 枚举 )
我一开始写了个
状压dp
..然后没有滚动就MLE了...
·
2015-11-01 14:04
USACO
BZOJ 1087: [SCOI2005]互不侵犯King(
状压dp
)
简单的
状压dp
... dp( x , h , s ) 表示当前第 x 行 , 用了 h 个 king , 当前行的状态为 s .
·
2015-11-01 14:01
ZOJ
1076: [SCOI2008]奖励关( dp )
期望
状压dp
.... ------------------------------------------------------------------ #include<cstdio&
·
2015-11-01 14:55
2008
BZOJ 4057: [Cerc2012]Kingdoms(
状压dp
)
状压dp
.... 我已开始用递归结果就 TLE 了...
·
2015-11-01 14:54
2012
Codeforces 543C Remembering Strings(DP)
20的范围恰好又是常见
状压DP
的范围,所有状态压缩后用DP[sta]代表对应位的字符串已经满
·
2015-11-01 12:19
codeforces
SGU 220.Little Bishops(DP)
Solution: 一眼看上去感觉是
状压
·
2015-11-01 12:00
it
hdu 1074 Doing Homework(
状压dp
)
传送门:hdu 1074 题意:有n个作业,每个作业都有最迟上交时间和完成该作业所需的时间,若某作业超过最迟上交时间,则扣相应的分数,求上交所有的作业使得扣分最少,并输出作业的顺序,若扣分相同,则先交字典序较小的作业。(n<=15) 分析:每种作业都有已上交和未上交两种,状态,总共有2^15种状态,用二进制表示。 由于要记录扣分,当前时间和作业的顺序,所以定义一个结构体。 状态表示:
·
2015-11-01 08:26
home
HDU 3006 The Number of set
转自: http://zc634579757.blog.163.com/blog/static/1244974622009716104841721/ 这题真是让我看到了位运算和
状压DP
的神奇之处
·
2015-10-31 13:02
number
BZOJ1097 : [POI2007]旅游景点atr
状压DP
新姿势get√ 需要注意的是,这题Main上原题的内存限制只有64MB。
·
2015-10-31 11:53
2007
BZOJ 3446: [Usaco2014 Feb]Cow Decathlon(
状压dp
)
水
状压dp
. dp(x, s) = max{ dp( x - 1, s - {h} ) } + 奖励(假如拿到的) (h∈s).
·
2015-10-31 11:49
USACO
POJ 3254 (
状压DP
) Corn Fields
基础的
状压DP
,因为是将状态压缩到一个整数中,所以会涉及到很多比较巧妙的位运算。 我们可以先把输入中每行的01压缩成一个整数。
·
2015-10-31 11:28
Field
POJ 1185 状态压缩DP 炮兵阵地
题目直达车: POJ 1185 炮兵阵地 分析: 列( <=10 )的数据比较小, 一般会想到
状压DP
. Ⅰ、如果一行10全个‘P’,满足题意的状态不超过
·
2015-10-31 11:23
poj
hdu 1074
状压dp
题意:有n门课,每门课有截止时间和完成所需的时间,如果超过规定时间完成,每超过一天就会扣1分,问怎样安排做作业的顺序才能使得所扣的分最小 链接:点我 1 #include<cstdio> 2 #include<iostream> 3 #include<algorithm> 4 #include<cstring> 5 #incl
·
2015-10-31 10:29
HDU
poj 2923
状压dp
+01背包
好牛b的思路 题意:一系列物品,用二辆车运送,求运送完所需的最小次数,两辆车必须一起走 解法为状态压缩DP+背包,本题的解题思路是先枚举选择若干个时的状态,总状态量为1<<n,判断这些状态集合里的那些物品能否一次就运走,如果能运走,那就把这个状态看成一个物品。预处理完能从枚举中找到tot个物品,再用这tol个物品中没有交集(也就是两个状态不能同时含有一个物品)的物品进行01背包,每
·
2015-10-31 10:27
poj
HDU 4539
状压DP
状压DP
,同炮兵阵地,写着练练手。
·
2015-10-31 10:20
HDU
[HDU 4336]Card Collection[状态压缩DP][概率DP][容斥原理]
思路: 1.用
状压dp
,dp[ s ]表示在s状态时,集齐所需要的袋数期望.
·
2015-10-31 10:15
Collection
POJ 2686(
状压DP
题目: 大意是有一个人从某个城市要到另一个城市(点数<=30) 然后有n个马车票,相邻的两个城市走的话要消耗掉一个马车票。 花费的时间呢,是马车票上有个速率值,用边/速率就是花的时间。 问最后这个人花费的最短时间是多少 第一次做状压感觉那一长串for显示了这是个多么暴力的算法呢。。。1A了倒是挺顺的 #include<iostream> #include<c
·
2015-10-31 10:27
poj
HDU 2280
状压DP
用dfs找到状态的最优解 且那个正方形块可以由两个水平块组成,所以无需考虑 1 #include <cstdio> 2 #include <cstring> 3 #include <iostream> 4 5 using namespace std; 6 #define N 1005 7 int state[N]
·
2015-10-31 10:08
HDU
POJ 1185
状压DP
legal[] 保存所有在当前行可显示的状态,由dfs得到,len[]保存legal[]对应下标状态中的 1 的个数 , 也就是放置炮台的个数 state[i] 表示第 i 行这块区域的土地情况,H表示 1 ,P表示 0 那么每次加入一个legal状态 都要符合 !(legal[i] & state[k]) 1 #include <cstdio&
·
2015-10-31 10:07
poj
POJ 2411
状压dp
题目大意: 用 1*2 或者2 *1的木板填满 h*w的长方形,问总共有多少种填充方法 直接dfs会超时,因为后面答案甚至爆了int,直接搜,肯定也是long long 的时间复杂度 这里我们将当前位置没放置任何木板为 0 , 如有放置则看为 1 每次通过当前行 i 的状态 old 找到下一行 i + 1 所有满足当前行状态的状态 new , 将
·
2015-10-31 10:07
poj
zoj3471Most Powerful
状压dp
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <climits> #include <string> #include <iostream> #include <map>
·
2015-10-31 10:43
ZOJ
poj1185炮兵阵地
状压dp
压前两行的状态很容易想到,但是 直接搞 (1<<10) * (1<<10) 空间时间都明显受不了, 但是经过高人指点,你会发现:枚举每一行可行的状态,其实并不多,预先打表处理,不用 1->(1<<10)枚举每一种状态。。 然后记忆化搜就ok了。 #include <cstdio> #include <c
·
2015-10-31 10:43
poj
poj3311Hie with the Pie
状压dp
tsp,但是它可以每个点经过不止一次,所以求一遍最短路,然后搞。 #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <climits> #include <string> #include &l
·
2015-10-31 10:43
with
poj3254Corn Fields
状压Dp
用一个数记录上一行取的状态,在枚举此时的状态,并且把符合条件的传递下去。判断写的有点丑,roll 直接位运算搞定。 #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <climits> #include &l
·
2015-10-31 10:43
Field
Hdu3681Prison Break
状压Dp
#include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <climits> #include <string> #include <iostream> #include &
·
2015-10-31 10:43
break
[POJ1038]
状压DP
(n<=150,m<=10) 思路:看到m=10就应该往
状压dp
方面想了。
·
2015-10-31 10:35
poj
poj 3254
状压dp
题意:给出一个n行m列的草地,1表示肥沃,0表示贫瘠,现在要把一些牛放在肥沃的草地上,但是要求所有牛不能相邻,问你有多少种放法。 链接:点我 定义状态dp【i】【j】,第 i 行状态为 j 的时候放牛的种数。 去年暑假做过的题,现在忘光了 1 #include <cstdio> 2 #include <cstring> 3 const int N =
·
2015-10-31 09:04
poj
Most Powerful(ZOJ 3471
状压dp
)
题意:n个原子,两两相撞其中一个消失,产生能量,给出任意两原子相撞能产生的能量,求能产生的最大能量。 分析:dp[i]表示情况为i时产生的最大能量 /*#include <map> #include <set> #include <list> #include <cmath> #include <queue> #inclu
·
2015-10-31 09:19
ZOJ
Tourism Planning(HDU 4049
状压dp
)
题意:n个朋友去游览m个城市,给出每个人对每个城市的兴趣值,和每人去每个城市的花费,如果两人在一个城市有一个价值,若多于2人这这个价值是任意两人产生价值的总和。在去每个城市的过程中人可以随便离开,也可以一个城市也不游览,求兴趣值总和+产生价值总和-总花费 最大。 分析:开始读错题意了,白白浪费了一个小时,吸取教训啊。。。 理解题意后分析状态,dp[i][j]在去第i个城市情况为j(0没去,1去
·
2015-10-31 09:19
HDU
Survival(ZOJ 2297
状压dp
)
题意:有n个怪,已知杀死第i个怪耗费的血和杀死怪恢复的血,和杀死boss耗的血,血量不能超过100,若过程中血小于0,则失败,问 是否能杀死boss(boss最后出现). 分析:就是求杀死n个怪后剩余的最大血量 dp[i]表示杀怪情况为i(0未杀,1已杀)时剩余最大血量,注意血量上限为100,过程中血小于0,则失败即可。 #include <map> #include <
·
2015-10-31 09:19
val
上一页
25
26
27
28
29
30
31
32
下一页
按字母分类:
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
其他