[BZOJ1187]神奇游乐园(插头DP)】的更多相关文章

题面: 传送门 给定一个四联通棋盘图,每个格子有权值,求一条总权值最大的回路 思路: 插头dp基础教程 棋盘? 回路? n,m<=10? 当然是插头dp啦~\(≧▽≦)/~ 然后发现这道题并不是哈密顿回路了......需要考虑一下终止条件的不同,对比URAL1519 诚然,回路问题中依然可以用括号表示法来压缩状态,但是此时形成回路.统计答案的就不仅仅在最后一个非障碍格子才可以,而是任何时候,只要状态中只剩下一对左右插头满足条件(看不懂这里的可以去上面那道题看看) 同时请注意,这道题统计的是最值.…
[BZOJ1187][HNOI2007]神奇游乐园 Description 经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细一看,才发现这是一个游乐场,专为旅途中疲惫的人设计.娱乐场可以看成是一块大小为n×m的区域,且这个n×m的区域被分成n×m个小格子,每个小格子中就有一个娱乐项目.然而,小P并不喜欢其中的所有娱乐项目,于是,他给每个项目一个满意度.满意度为正时表示小P喜欢这个项目,值越大表示越喜欢.为负时表示他不喜欢…
1187: [HNOI2007]神奇游乐园 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 668  Solved: 337[Submit][Status][Discuss] Description 经 历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细一看,才发现这是一个游 乐场,专为旅途中疲惫的人设计.娱乐场可以看成是一块大小为n×m的区域,且这个n×m的区域被分成n×m个…
Description 题意给定一个矩阵,每个格子有权值,在[-1000.1000]内,求一条回路使得回路经过权值和最大,每个格子最多经过一次 2≤n≤100,2≤m≤6 Code #include <cstdio> #include <algorithm> #define N 10 #define Inf 0x7fffffff using namespace std; int A[N],now,op[N],k[N],L[N],Ans=-Inf; int n,m,g[110][N]…
bzoj-1187 HNOI-2007 神奇游乐园 题目大意:经历了一段艰辛的旅程后,主人公小P乘坐飞艇返回.在返回的途中,小P发现在漫无边际的沙漠中,有一块狭长的绿地特别显眼.往下仔细一看,才发现这是一个游乐场,专为旅途中疲惫的人设计.娱乐场可以看成是一块大小为n×m的区域,且这个n×m的区域被分成n×m个小格子,每个小格子中就有一个娱乐项目.然而,小P并不喜欢其中的所有娱乐项目,于是,他给每个项目一个满意度.满意度为正时表示小P喜欢这个项目,值越大表示越喜欢.为负时表示他不喜欢,这个负数的绝…
麻麻我会写插头dp了! 推荐陈丹琦论文:https://wenku.baidu.com/view/3e90d32b453610661ed9f4bd.html 破题调一年 #include <cstdio> #include <cstring> <<; ],a[][],b[N],g[N][],f[][][N]; void up(int &x,int y) {if(x<y) x=y;} void dfs(int x,int s,int k) { ) { if(…
题意:n*m的矩阵内值有正有负,找一个四连通的简单环(长度>=4),使得环上值的和最大. 题解:看到2<=m<=6和简单环,很容易想到插头DP,设f[i][j][k]表示轮廓线为第i行第j列,插头状态为k的最大满意度.然后又成了一道插头DP的板子题.注意左插头为左括号,上插头为右括号,其余位置无插头,因为题目不要求走遍所有格子,且只能走一条回路. #include<bits/stdc++.h> using namespace std; ,mod=; ],w[][],a[][N…
[题目大意] 在n*m的网格中选一条回路,使权值和最大. [思路] 和之前裸的插头DP差不多,只不过现在回路不需要经过所有的格子.所以有以下几个注意点(具体看注释): (1)left和up插头相等的时候,直接更新答案; (2)left和up插头不存在的时候,还要考虑当前格子不取的情况. orz写了半天,感觉被掏空.jpg #include<bits/stdc++.h> using namespace std; typedef long long ll; ; ; ; const int INF=…
传送门 大概是算第一道自己做出来的插头dp? (虽然都是照着抄板子的) (虽然有个地方死活没调出来最后只能看题解才发现自己错在哪里的) 我就当你们都会插头dp了…… 因为必须得是一条路径,所以扫描线上的插头得两两对应,要用括号序列 然后分情况讨论一下,记$p1$为当前关键格左边的插头,$p2$为当前关键格上面的插头 $0$表示无插头,$1$表示左括号,$2$表示右括号 1.$p1==0$且$p2==0$ 那么很明显我们可以把下方插头设为$1$右方插头设为$2$,就形成一个新的连通块了 然后注意不…
正题 题目链接:https://www.luogu.com.cn/problem/P3190 题目大意 \(n*m\)的网格上有权值,求一条权值和最大的不交回路. \(1\leq n\leq 100,1\leq m\leq 6\) 解题思路 经典的棋盘形插头\(dp\),和模板不同的地方是求最大权值和并且不用铺满整张图. 那么在没有插头的地方可以选择不新建插头就好了,需要注意判断边界\(j=m\)和\(i=n\)的情况. code #include<cstdio> #include<cs…