没看出来动规怎么做,看到n <= 20,直接一波暴搜,过了。

#include<cstdio>
#include<cstring>
#include<algorithm>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std; const int MAXN = 25;
int g[MAXN][MAXN], a[MAXN], f[MAXN];
int vis[MAXN], path[MAXN], n; int dfs(int cur)
{
vis[cur] = 1;
int t = 0;
REP(i, 0, n)
if(!vis[i] && g[cur][i])
{
int temp = dfs(i);
if(t < temp)
{
t = temp;
path[cur] = i;
}
}
vis[cur] = 0;
return a[cur] + t;
} int main()
{
scanf("%d", &n);
REP(i, 0, n) scanf("%d", &a[i]);
REP(i, 0, n)
REP(j, i + 1, n)
scanf("%d", &g[i][j]); int ans = 0, st;
REP(i, 0, n)
{
memset(path, -1, sizeof(path));
memset(vis, 0, sizeof(vis));
int t = dfs(i);
if(ans < t)
{
st = i;
ans = t;
memcpy(f, path, sizeof(f));
}
} for(int p = st; p != -1; p = f[p]) printf("%d ", p + 1);
puts("");
printf("%d\n", ans); return 0;
}

然后我还是想想动规怎么做吧

因为只能往下挖,所以最后一个地窖是挖不了的

所以我们倒着推

我们设f[i]为从i开始能挖到的最大地雷

那么有

f[i] = f[j] + a[i]; i < j, i与j连接

#include<cstdio>
#include<cstring>
#include<algorithm>
#define REP(i, a, b) for(int i = (a); i < (b); i++)
using namespace std; const int MAXN = 25;
int g[MAXN][MAXN], a[MAXN], f[MAXN];
int path[MAXN], n; int main()
{
memset(path, -1, sizeof(path));
scanf("%d", &n);
REP(i, 0, n) scanf("%d", &a[i]);
REP(i, 0, n)
REP(j, i + 1, n)
scanf("%d", &g[i][j]); int ans = 0, st;
for(int i = n - 1; i >= 0; i--)
{
f[i] = a[i];
REP(j, i + 1, n)
if(g[i][j] && f[i] < f[j] + a[i])
{
f[i] = f[j] + a[i];
path[i] = j;
}
if(ans < f[i])
{
ans = f[i];
st = i;
}
} for(int p = st; p != -1; p = path[p]) printf("%d ", p + 1);
puts("");
printf("%d\n", ans); return 0;
}

洛谷P2196 && caioj 1415 动态规划6:挖地雷的更多相关文章

  1. 洛谷P1280 && caioj 1085 动态规划入门(非常规DP9:尼克的任务)

    这道题我一直按照往常的思路想 f[i]为前i个任务的最大空暇时间 然后想不出来怎么做-- 后来看了题解 发现这里设的状态是时间,不是任务 自己思维还是太局限了,题做得太少. 很多网上题解都反着做,那么 ...

  2. 洛谷P2196 挖地雷 [2017年4月计划 动态规划13]

    P2196 挖地雷 题目背景 NOIp1996提高组第三题 题目描述 在一个地图上有N个地窖(N<=20),每个地窖中埋有一定数量的地雷.同时,给出地窖之间的连接路径.当地窖及其连接的数据给出之 ...

  3. 洛谷 p2196 挖地雷 题解

    好久没有写博客了,今天水几篇博客 传送门 挖地雷这个题之前在  信息学奥赛一本通  上做过几乎一样的题,但是由于数据太水导致我当时过了,进而导致我昨天(4.28)考试丢了20分,今天写一篇题解 这个挖 ...

  4. 洛谷——P2196 挖地雷

    题目背景 NOIp1996提高组第三题 题目描述 在一个地图上有N个地窖(N<=20),每个地窖中埋有一定数量的地雷.同时,给出地窖之间的连接路径.当地窖及其连接的数据给出之后,某人可以从任一处 ...

  5. 洛谷—— P2196 挖地雷

    https://www.luogu.org/problem/show?pid=2196 题目背景 NOIp1996提高组第三题 题目描述 在一个地图上有N个地窖(N<=20),每个地窖中埋有一定 ...

  6. 洛谷P2196 挖地雷(dp)

    题意 题目链接 Sol 早年NOIP的题锅好多啊.. 这题连有向边还是无向边都没说(害的我wa了一遍) 直接\(f[i]\)表示到第\(i\)个点的贡献 转移的时候枚举从哪个点转移而来 然后我就用一个 ...

  7. 洛谷 P2196 挖地雷 & [NOIP1996提高组](搜索,记录路径)

    传送门 解题思路 就是暴力!!! 没什么好说的,总之,就是枚举每一个起点,然后暴力算一遍以这个点为起点的所有路径,在算的过程中,只要比目前找到的答案更优,就有可能是最后的答案,于是就把路径更新一遍,保 ...

  8. 洛谷 P2196 挖地雷

    题目传送门 解题思路: 记忆化搜索,题目比较坑的地方在于,这是个有向图,给的边是单向边!!!!!!!! AC代码: #include<iostream> #include<cstdi ...

  9. 洛谷 P1464 Function【动态规划(递推)/记忆化搜索(递归)】

    题目描述 对于一个递归函数w(a,b,c) 如果a<=0 or b<=0 or c<=0就返回值1. 如果a>20 or b>20 or c>20就返回w(20,2 ...

随机推荐

  1. sql 分割日期

    datename(Year,CreateTime)   ==2017 datename(Month,CreateTime)   7 1.获取星期(显示中文如:星期一) Select DateName( ...

  2. HttpWebRequest WebExcepton: The remote server returned an error: (407) Proxy Authentication Required.

    1. Supply the credentials of the Currently Logged on User to the Proxy object similar to this: // Be ...

  3. MySQL本地密码过期处理及永不过期设置

    今天在使用mysql的时候,提示“your password has expired”,看了一下问题是因为我本地mysql的密码已经过期了,然后搜罗了一下网上的解决办法.(我的mysql版本 5.7. ...

  4. gcd的queue与group

    queue相当于事件处理机制里的事件池:只是任务池: 线程作为事件处理的实施者,由线程池从任务池中获取任务进行调度派发: group相当与工作组,按照任务的相关性对任务进行组织.

  5. SpringCloud学习笔记(12)----Spring Cloud Netflix之Hystrix断路器的流程和原理

    工作流程(参考:https://github.com/Netflix/Hystrix/wiki/How-it-Works) 1. 创建一个HystrixCommand或HystrixObservabl ...

  6. perl脚本去除文件中重复数据

    今天第一天写博客,写的不好请大家多多指教,废话不多说了,干货送上: ############################################################# #!/u ...

  7. Qt之自定义布局管理器(QCardLayout)

    简述 手动布局另一种方法是通过继承QLayout类编写自己的布局管理器. 下面我们详细来举一个例子-QCardLayout.它由同名的Java布局管理器启发而来.也被称之为卡片布局,每个项目偏移QLa ...

  8. Leetcode--easy系列9

    #198 House Robber You are a professional robber planning to rob houses along a street. Each house ha ...

  9. 移植u-boot-2014.4到S5PV210/TQ210(完整)

    本文很多其它的是教会大家怎样学习 1.1   概述 1.2   u-boot配置过程分析 1.3   u-boot编译过程分析 1.4   SPL 1.5   加入自己的单板 1.6   移植u-bo ...

  10. 为什么button在设置标题时要用一个方法,而不像lable一样直接用一个属性

    为什么button在设置标题时要用一个方法.而不像lable一样直接用一个属性 原因是有时我们对      button做一次点击,须要改变button的标题.仅仅实用方法才干做到,而label是标签 ...