P2196 [NOIP1996 提高组] 挖地雷 这是一道经典的深度优先搜索(DFS)问题,旨在寻找一种挖地雷的策略,使得挖到的地雷总数最大。下面是对该题目的详细题解。 输入处理: 第1 行只有一个数字,表示地窖的个数 N。第 2 行有 N 个数,分别表示每个地窖中的地雷个数。第 3 行至第N+1 行表示地窖之间的连接情况,...
一个点的地雷只能挖一次,所以需要维护 visvis 数组。注意,任何点都可以作为起点。代码#include <bits/stdc++.h> using namespace std;int n; int a[25]; vector <int> g[25]; vector <int> path;//答案路径 vector <int> cur;//搜索时的临时路径...
#include <bits/stdc++.h> usingnamespacestd; constintN=30; intval[N],g[N][N],dp[N],q[N],fro[N]; intans=0; intmain(){ intn=0;cin>>n; for(inti=1;i<=n;i++)cin>>val[i]; for(inti=1;i<=n;i++)dp[i]=val[i]; for(inti=1;i<=n-1;i++){ for(intj=i+1;j<=...
洛谷P2196挖地雷[NOIP1996提高组](搜索,记录路径)洛⾕P2196挖地雷[NOIP1996提⾼组](搜索,记录路径)解题思路 就是暴⼒ 没什么好说的,总之,就是枚举每⼀个起点,然后暴⼒算⼀遍以这个点为起点的所有路径,在算的过程中,只要⽐⽬前找到的答案更优,就有可能是最后的答案,于是就把路径更新...
难度:3 关于DP: 观察动态转移方程式,f[i]表示以i结尾的最大值(相当于倒推),遍历图中所有节点,如果i,j之间存在路径且f[i]小于f[j],表示从j走到i比从先前的点走到i的值更大,从而可以更新i,并且加上a[i],…
继续做DFS!中规中矩的深度优先搜索,本来以为时间复杂度会很大,结果这个代码可以很快跑下来。大概洛谷的评测机效率很高吧。 题面 时间空间限制 思路 题面实际上还是多少有点问题,所有的通道实际上都是单行的,如果1和3之间“有通道”,那么只能从1到3,不能从3到1,所以给了我们优化的机会。但是即使我没有优化也能...
// Problem: P2196 [NOIP1996 提高组] 挖地雷 // Contest: Luogu // URL: https://www.luogu.com.cn/problem/P2196 // Memory Limit: 125 MB // Time Limit: 1000 ms // FishingRod #include<bits/stdc++.h> using namespace std; #define endl "\n" ...
洛谷P2196 挖地雷(dp) 题意 [题目链接] Sol 早年NOIP的题锅好多啊。。 这题连有向边还是无向边都没说(~~害的我wa了一遍~~) 直接f[i]表示到第i个点的贡献 转移的时候枚举从哪个点转移而来 然后我就用一个n^2的算法过了一道n <= 20的题??。。
intn,a[],way[],ans=-,en[],ww; boolg[][],vis[]; inlinevoidto(intx){ for(inti=;i<=x;i++) en[i]=way[i]; } inlinevoiddfs(intx,intlen,intdeep){ way[deep]=x; if(len>ans){ ans=len; to(deep); ww=deep; } for(inti=;i<=n;i++){ ...
P2196 挖地雷 题目背景 NOIp1996提高组第三题 题目描述 在一个地图上有N个地窖(N<=20),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径。当地窖及其连接的数据给出之后,某人可以从任一处开始挖地雷,然后可以沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方...