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
方格取数(1)(HDU 1565
状压dp
)
题意: 给你一个n*n的格子的棋盘,每个格子里面有一个非负数。 从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的和最大。 分析:直接枚举压缩后的所有情况超时,所以先把行所有可能的情况处理并得到该情况的对应的和,状态只与上一行状态有关,所有用两个数组保存当前行状态和上一行状态。 #include
·
2015-10-31 09:19
HDU
Doing Homework(HDU 1074
状压dp
)
题意:给你n个要做的作业,它们的名字、期限、可完成所需天数(必须连续)在规定期限不能完成要扣分(每天一分)求做作业顺序使扣分最少。 分析:作业数量较少,用状态压缩,做到第i种作业花费的天数dp[i].t,最小扣分dp[i].sc,当前完成作业标号dp[i].now,和之前完成的作业的情况dp[i].par(要求做作业顺序)枚举所有可能的情况,更新。 #include <ma
·
2015-10-31 09:19
home
Corn Fields(POJ 3254
状压dp
)
题意: n*m网格1能放0不能放 放的格子不能相邻 求一共多少种可放的方案。 分析: dp[i][j]第i行可行状态j的的最大方案数,枚举当前行和前一行的所有状态转移就行了(不放牛也算一种情况) #include <map> #include <set> #include <list> #include <cmath> #inclu
·
2015-10-31 09:18
Field
炮兵阵地(POJ 1185
状压dp
)
题意:n*m地图'H'能放'p'不能放,布兵的方格上下左右不能布兵,给你地图求最大布兵数 分析:关系到前两行,所以dp[i][j][k]第i行状态为j,i-1行状态为k时的最大布兵数, 先求出所有可行的状态,统计出其布兵数。 #include <map> #include <set> #include <list> #include <cmat
·
2015-10-31 09:18
poj
hdu 5045 N个人做M道题的正确率
n最大值是10,想到用状压
状压dp
#include <cstdio> #include <cstdlib> #include <
·
2015-10-31 09:34
HDU
Another Chocolate Maniac
状压dp
难度:1
132. Another Chocolate Maniac time limit per test: 0.25 sec. memory limit per test: 4096 KB Bob really LOVES chocolate. He thinks he never gets enough. Imagine his joy when hi
·
2015-10-31 09:37
man
Hardwood floor
状压dp
难度:2
131. Hardwood floor time limit per test: 0.25 sec. memory limit per test: 4096 KB The banquet hall of Computer Scientists' Palace has a rectangular form of the size M x N (1<=M<=9
·
2015-10-31 09:36
OO
hdu 2167(
状压dp
)
pid=2167 思路:经典的
状压dp
题,前后,上下,对角8个位置不能取,状态压缩枚举即可所有情况,递推关系是为dp[i][j]=max(dp[i][j],dp[i-1][k]+sum[i][j]),
·
2015-10-31 08:53
HDU
hdu 4284(
状压dp
)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4284 思路:类似于poj3311:http://poj.org/problem?id=3311,首先floyd预处理出两点之间的最短距离,然后就是枚举所有的状态了。 1 #include<iostream> 2 #include<cstdio> 3 #in
·
2015-10-31 08:53
HDU
hdu 3001(
状压dp
)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 思路:这道题类似于TSP问题,只不过题目中说明每个城市至少要走一次,至多走2次,因此要用到三进制压缩,然后就是状态转移方程了:dp[i+State[k]]=min(dp[i+State[k]],dp[i][j]+map[j][k]); 1 #include<iostream&
·
2015-10-31 08:53
HDU
hdu 4539(
状压dp
)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4539 思路:跟poj1185简直就是如出一辙! 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 usin
·
2015-10-31 08:53
HDU
poj 1185(
状压dp
)
题目链接:http://poj.org/problem?id=1185 思路:状态压缩经典题目,dp[i][j][k]表示第i行状态为j,(i-1)行状态为k时最多可以放置的士兵个数,于是我们可以得到递推方程:dp[i][j][k]=max(dp[i][j][k],dp[i-1][k][l]+num[j]);(其中num[j]为该状态下可以放置的士兵的个数。至于具体怎么分析,这位大牛讲的很清楚:
·
2015-10-31 08:53
poj
hdu 3681(bfs+二分+
状压dp
判断)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3681 思路:机器人从出发点出发要求走过所有的Y,因为点很少,所以就能想到经典的TSP问题。首先bfs预处理出‘Y',’F','G'之间的最短距离,由于G点可以充电,到达G点就把当前能量更新为电池容量然后继续走。因为每个G点只能充一次电,这就好像TSP中的每个点只能走一次一样,然后就是二分答案了,用状
·
2015-10-31 08:53
HDU
hdu 4114 Disney's FastPass
状压dp
Disney's FastPass Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=4114 Description Disney's FastPass is a virtual queuing system created by the Wal
·
2015-10-31 08:03
HDU
bzoj1151
id=1151
状压DP
,枚举前面4个,使得环型变线型。
·
2015-10-31 08:25
ZOJ
hdu 4640(
状压dp
)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4640 思路:f[i][j]表示一个人状态i下走到j的最小花费,dp[i][j]表示i个人在状态j下的最下花费。首先我们可以一遍bfs求出f[i][j],然后通过f[i][j]得到dp[1][i],最后就是更新dp[i][j]了。 1 #include<iostream>
·
2015-10-30 16:57
HDU
hdu 2809(
状压dp
)
pid=2809 思路:简单的
状压dp
,看代码会更明白。
·
2015-10-30 16:49
HDU
hdu 2686(
状压dp
)
id=2686 思路:典型的
状压dp
题,dp[s][v]表示到达剩下的车票集合为S并且现在在城市v的状态所需要的最小的花费。
·
2015-10-30 16:46
HDU
Hackers' Crackdown( UVA UVA 11825
状压dp
)
题意:N台电脑,现在有N种服务,现在你可以在每台电脑终止一项服务,他和他相邻的电脑都会被关闭,如果一项服务在所有电脑都没运行,该项服务成功被破坏,问最多能破坏几种服务。 分析:把n个集合分成尽量多组,使每组中的集合(为电脑i及相邻电脑的集合)的并集为全集,通过这个题学到了状态s的每位表示一个集合是否被并,dp[s]状态s是能破坏的最多服务,dp[s]=max(dp[s],dp[s^ss]+1)(
·
2015-10-30 13:05
rack
Travel(HDU 4284
状压dp
)
分析:这个题想到杀怪(Survival(ZOJ 2297
状压dp
) 那个题,也是钱如果小于0就挂了,最后求剩余的最大钱数,先求出最短路和
·
2015-10-30 13:05
HDU
Clear All of Them I(HDU 3920
状压dp
)
题意:给有2*n个敌人的位置,枪在(0,0)位置,一次能消灭两个敌人,耗费能量为枪到一个敌人,由这个敌人再到另个敌人的的距离和,求消灭所有敌人最小耗费能量。 分析:一次枚举状态的两位即可 #include <map> #include <set> #include <list> #include <cmath> #include <
·
2015-10-30 13:04
clear
Light OJ 1061 - N Queen Again(搜索+
状压DP
)
大致题意:8*8的棋盘,已知八个皇后的位置,问最少移动多少次,可以让八个皇后不互相攻击。(同行,同列,同斜线视为互相攻击)思路:易知八皇后不攻击一共有92种,dfs出这92种,然后对于每种状压求出最少需要移动多少次复杂度:O(92*n*2^n)(n=8)//packageok; importjava.math.*; importjava.io.BufferedReader; importjava.
kalilili
·
2015-10-30 10:00
loj 1021(
状压dp
+记忆化搜索)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25887 题目大意:给定的一个某进制下的排列,问它的全排列有多少个能够整除给定的十进制下的数字k。 思路:记忆化搜索,dp[state][r]表示在某状态下被k除余数为r有多少个。 1 #include<iostream> 2 #inc
·
2015-10-30 10:19
dp
loj 1018(
状压dp
+记忆化搜索)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25844 思路:首先预处理出点在同一直线上的所有的点集状态(dp[i][j]),然后记忆化搜索。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring&
·
2015-10-30 10:18
dp
hdu 4640 Island and study-sister(最短路+
状压dp
)
题目链接:hdu4640Islandandstudy-sister解题思路用二进制数表示2~n的点是否移动过的状态,dp[s][i]表示状态s上的点必须经过并且当前在i节点的最小代价,这步用类似最短路的方式求出。然后是dp2[i][s]表示i个人移动过s状态的点的最小代价。代码#include #include #include #include #include usingnamespaces
u011328934
·
2015-10-28 22:00
POJ 2411 Mondriaan's Dream (
状压DP
)
Mondriaan's Dream Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 9135 Accepted: 5280 Description Squares and rectangles fascinated the fa
·
2015-10-28 09:48
poj
POJ 1185 炮兵阵地 (
状压DP
)
炮兵阵地 Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 14869 Accepted: 5575 Description 司令部的将军们打算在N*M的网格地图上部署他们的炮兵部队。一个N*M的地图由N行M列组成,地图的每一格可
·
2015-10-28 09:47
poj
bzoj1087
又一道
状压dp
查了半天错 又被位运算的优先级坑了 1 #include<cstdio> 2 #include<cstring> 3 #include<
·
2015-10-28 08:24
ZOJ
bzoj4057
状压dp
不解释
数组不能开太大啊啊啊啊啊啊啊啊啊啊啊啊啊啊! 1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<cmath> 5 #include<algorithm> 6 #include<cstdlib> 7
·
2015-10-28 08:22
ZOJ
[
状压dp
]HDOJ3182 Hamburger Magi
题意 大致是: 有n个汉堡 m块钱 (n<=15) 然后分别给n个汉堡的能量 再分别给n个汉堡所需的花费 然后下面n行 第i行有x个汉堡要在i汉堡之前吃 然后给出这x个汉堡的编号 输出 能获得的最大能量 分析: n那么小, 很明显状压 状压吃的顺序 每个汉堡的花费是固定的, 因此只要一维的dp &
·
2015-10-28 08:24
dp
[
状压dp
]HDOJ1565 方格取数(1)
中文题~~ 题意略 $n\le 20$ ! 很明显是状压! 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <climits> 5 #include <cctype> 6 #include &
·
2015-10-28 08:24
dp
[
状压dp
]HDU5045 Contest
题意: n和人做m道题, 每俩人做的题数不能相差一题以上.(也就是每n道题分别由n个人完成) 给n个人分别做m道题的概率, 求完成m题的最大期望 $1\le N \le 10$ 注意!!! fill dp 的地方! [0, m] 所以要 m+1 !! 1 #include <cstdio> 2 #include <cstd
·
2015-10-28 08:23
test
[
状压dp
]HDU3001 Travelling
题意: 走n个城市, m条路, 起点任意, 每个城市走不超过两次, 求最小花费, 不能走输出-1. $1\le n\le 10$ 分析: 每个城市的拜访次数为0 1 2, 所以三进制状压, 先预处理10位(n最大为10)的三进制数 1 int num[12], vis[60005][12]; 2 3 void init() 4 { 5 num[0
·
2015-10-28 08:23
HDU
[
状压dp
]POJ2686 Traveling by Stagecoach
题意: m个城市, n张车票, 每张车票$t_i$匹马, 每张车票可以沿某条道路到相邻城市, 花费是路的长度除以马的数量. 求a到b的最小花费, 不能到达输出Impossible $1\le n\le8$ $2\le m\le30$ 1 #include <cstdio> 2 #include <cstdlib> 3 #include <cst
·
2015-10-28 08:22
poj
URAL 1152 Faise Mirrors
状压DP
简单题
1152. False Mirrors Time limit: 2.0 second Memory limit: 64 MB Background We wandered in the labyrinth for twenty minutes before finally entering the large hall. The walls were covered by mirr
·
2015-10-28 08:07
ror
POJ 2441 Arrange the BUlls
状压DP
Arrange the Bulls Time Limit: 4000MS Memory Limit: 65536K Total Submissions: 3752 Accepted: 1438 Description Farmer Johnson's Bulls love playing bask
·
2015-10-28 08:07
poj
hdu 3001(
状压dp
, 3进制)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3001 由于本题中一个点最多能够访问2次,由此可以联想到3进制; visited[i][j]表示在状态i下在点j已经做过的次数,dp[i][j]表示在状态i下到达点j走过的最小的路程,于是我们可以通过预处理得到visited[i][j]数组,然后就是一般的状态转移。 1 /*******
·
2015-10-28 07:38
HDU
hdu 4114(
状压dp
)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4114 思路:首先是floyd预处理出任意两点之间的最短距离。dp[state1][state2][u]表示在该状态state1(已经访问过的景点)、state2(手中有的景点的票)、目前所在的位置时所花费的时间的最小值,于是答案就是dp[(1<<k)-1][state][1]了(0<
·
2015-10-28 07:33
HDU
loj 1316(spfa预处理+
状压dp
)
思路:首先我们可以spfa预处理出起点到标记的最短距离,标记的点到终点的最短距离,然后就是
状压dp
了,dp[state][u]表示在该状态下到达点u的最短路径。 1 #include&l
·
2015-10-28 07:32
SPFA
loj 1037(
状压dp
)
题目链接:http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25914 思路:dp[state]表示当前状态下要消耗的最小的shots。 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #in
·
2015-10-28 07:30
dp
Hie with the Pie(POJ 3311
状压dp
)
题意:披萨店给n个地方送披萨,已知各地方(包括披萨店)之间花费的时间,求送完所有地方并回到店花费的最小时间 分析:状态好确定dp[i][j],i中1表示地方已送过,否则为0,j为当前状态最后一个送过的地方,注意怎么走才算最小时间,当然是走最短路,点很少由floyd求出各点最短路 求回到店的最小时间,从店出发(状态为1)。 #include <map> #include <
·
2015-10-27 14:21
with
Islands and Bridges(POJ 2288
状压dp
)
题意:给你一个图和每个点的价值,边权值为连接两点权值的积,走哈密顿通路,若到达的点和上上个点相连则价值加三点乘积,求哈密顿通路的最大价值,和最大价值哈密顿通路的条数。 分析:开始看这个题很吓人,但想想这个题状态好确定dp[i][j][k]表示 i已走过点的情况,当前点为j前一点为k所产生的最大价值,枚举所有可行的情况即可,接着想怎么求条数啊, 纠结了好久,才发现和在求价值时若和原来的价值相等,
·
2015-10-27 14:21
bridge
[
状压dp
]POJ1185 炮兵阵地
中文题 题意不再赘述 对于中间这个“P” 根据dp的无后效性 我们只需考虑前面的 就变成了 只需考虑: 也就是状压前两行 具体与HDOJ的4539类似: 看HDOJ 4539 仅仅是共存状态的判断不同 1 //#include <bits/stdc++.h> 2 #include <cstdio&g
·
2015-10-27 13:22
poj
UVALive 6462
状压DP
UVALive6462题目链接:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=4473题意:两个人轮流选包,包里有一些颜色。包选完后放到柜子里。规定柜子里如果某种颜色的个数大于等于S个时,柜子里该颜色的个数减S,此轮该人得到一颗魔法石。该操
beihai2013
·
2015-10-26 20:00
Single Round Match 671 Round 1 - Division II, Level Three(
状压DP
)(略难)
题目链接:http://community.topcoder.com/stat?c=problem_statement&pm=14070&rd=16551大致题意:描述太麻烦。摘取关键题意:Whenpushingthetrees,Limakalwaysfollowsafewrules:Heonlypushestreesintwodirections:eithersouthwardsoreastwa
kalilili
·
2015-10-24 23:00
紫书的训练计划——一点点来,坚持到底!
(好久没来记录了,哎呀,简直逼了狗了,本想到会在dp里好久,然后,然后,然后其实也没什么)这一部分还有(
状压dp
,数位
WildKid1024
·
2015-10-24 16:05
总结和反思
POJ1321(
状压DP
)
数据比较小,怎么暴力都行。#include #include #include #include #include usingnamespacestd; #definemaxn1>=1; } returnans; } boolok(intx){ if(x==0) return1; for(inti=1;i<(1<
morejarphone
·
2015-10-23 23:00
AC自动机+
状压dp
hdu2825 Wireless Password
传送门:点击打开链接题意:有个密码长度为n,现在有m个魔力单词,要求密码中魔力单词的种类数>=k,问这种密码的种类数。思路:和之前一样,我们会想到AC自动机去压缩状态,把状态给简化。然后我们就会想到一个问题,,因为一种种类实际上可能会出现很多次,但是统计的时候只统计一次,所以用普通的dp可能就做不到了,那么我们就必须考虑复杂度更高的方法,又看到m #include #include #includ
qwb492859377
·
2015-10-23 22:00
cdoj 1141 酱神寻宝
状压dp
酱神寻宝 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.uestc.edu.cn/#/problem/show/1141 Description 酱神来到了一座小岛,岛上有n个箱子。 一共有3中不同的钥匙,金钥匙、银钥匙和万能钥匙。酱神一开始有a把金钥匙、b把银钥匙和c把万能钥匙。 第i个箱子上有xi把金
·
2015-10-23 09:04
dp
zoj 3905 Cake(
状压dp
)
题目链接:zoj3905Cake代码#include #include #include usingnamespacestd; constintmaxn=805; structState{ inta,b; State(inta=0,intb=0):a(a),b(b){} booloperatoru.b; returna>1);j++) dp[j]=max(dp[j],tmp[j-1]+S[i]
u011328934
·
2015-10-22 19:00
上一页
26
27
28
29
30
31
32
33
下一页
按字母分类:
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
其他