「 Luogu P2196 」 挖地雷
# 解题思路
跑 $\text{n}$ 遍 $\text{spfa}$ 并记录路径,找到比当前最长路长的就更新答案,并且将路径也更新,注意起点的处理。
# 附上代码
#include <iostream>
#include <cstring>
#include <cstdio>
#include <queue>
#define INF 123456789
using namespace std;
int n, a[], head[], cnt, pre[], Ans, ans[], dis[], TANS[], t;
bool vis[];
queue<int> Q;
struct edge {
int nxt, u, v, w;
}ed[*];
inline void addedge(int x, int y, int z) {
ed[++cnt].nxt = head[x];
head[x] = cnt;
ed[cnt].u = x, ed[cnt].v = y, ed[cnt].w = z;
}
inline int spfa(int s) {
while (!Q.empty()) Q.pop();
memset(vis, , sizeof(vis));
for(int i=; i<=n; i++) dis[i] = -INF;
Q.push(s), dis[s] = a[s], vis[s] = , pre[s] = ;
while (!Q.empty()) {
int u = Q.front(); Q.pop();
for(int i=head[u]; i; i=ed[i].nxt) {
if(dis[ed[i].v] < dis[u] + ed[i].w) {
dis[ed[i].v] = dis[u] + ed[i].w;
pre[ed[i].v] = u;
if(!vis[ed[i].v])
vis[ed[i].v] = , Q.push(ed[i].v);
}
}
vis[u] = ;
}
for(int i=; i<=n; i++) {
if(dis[i] > Ans) {
Ans = dis[i];
for(int j=; j<=n; j++) ans[j] = pre[j];
t = i;
}
}
}
int main() {
scanf("%d", &n);
int x;
for(int i=; i<=n; i++) scanf("%d", &a[i]);
for(int i=; i<=n; i++) {
for(int j=i+; j<=n; j++) {
scanf("%d", &x);
if(x == ) addedge(i, j, a[j]);
}
}
for(int i=; i<=n; i++)
spfa(i);
cnt = ;
for(int i=t; i; i=ans[i]) TANS[++cnt] = i;
for(int i=cnt; i>=; i--) printf("%d ", TANS[i]);
printf("\n%d", Ans);
}
「 Luogu P2196 」 挖地雷的更多相关文章
- 「 Luogu P1231 」 教辅的组成
题目大意 有 $\text{N1}$ 本书 $\text{N2}$本练习册 $\text{N3}$本答案,一本书只能和一本练习册和一本答案配对.给你一些书和练习册,书和答案的可能的配对关系.问你最多可 ...
- 「Luogu 1525」关押罪犯
更好的阅读体验 Portal Portal1: Luogu Portal2: LibreOJ Description \(S\)城现有两座监狱,一共关押着\(N\)名罪犯,编号分别为\(1 - N\) ...
- 「Luogu 2367」语文成绩
更好的阅读体验 Portal Portal1: Luogu Description 语文老师总是写错成绩,所以当她修改成绩的时候,总是累得不行.她总是要一遍遍地给某些同学增加分数,又要注意最低分是多少 ...
- 「Luogu 1821」[USACO07FEB]银牛派对Silver Cow Party
更好的阅读体验 Portal Portal1: Luogu Portal2: POJ Description One cow from each of N farms \((1 \le N \le 1 ...
- 「Luogu 1349」广义斐波那契数列
更好的阅读体验 Portal Portal1: Luogu Description 广义的斐波那契数列是指形如\(an=p \times a_{n-1}+q \times a_{n-2}\)的数列.今 ...
- 「Luogu 3792」由乃与大母神原型和偶像崇拜
更好的阅读体验 Portal Portal1: Luogu Description 给你一个序列\(a\) 每次两个操作: 修改\(x\)位置的值为\(y\): 查询区间\([l, r]\)是否可以重 ...
- 「Luogu P3866」[TJOI2009]战争游戏 解题报告
题面 好难表述啊~ 在n*m的矩阵上,有一些大兵(为0),一些空地(一个正整数),障碍物(-1),现在摧毁一些空地,使所有大兵不能走出矩阵去(代价为表示空地的整数),求最小代价 思路: 网络流最小割 ...
- 「Luogu P2201」数列编辑器 解题报告
数列编辑器,在线IDE 本期的主题是洛谷的在线IDE 小学生?!小学生虐我
- 「Luogu 1471」 方差
题目背景 滚粗了的HansBug在收拾旧数学书,然而他发现了什么奇妙的东西. 题目描述 蒟蒻HansBug在一本数学书里面发现了一个神奇的数列,包含N个实数.他想算算这个数列的平均数和方差. 输入输出 ...
随机推荐
- postgresql数据库基本信息查看
切换至postgresql数据库用户pguser 或 postgres(根据自己实际情况) 1. SELECT version(); 2.对的 2. 查看数据库大小: SELECT pg_size ...
- Go JSON嵌套解析失败
//结构体成员变量名首字母要大写,要小写需要用tag,请看范例. //如果没有tag,嵌套时就无法解析属性,解析失败就是空值. type messageRow struct { UserID stri ...
- Qt之程序发布以及打包成exe安装包
一.简述 Qt项目开发完成之后,需要打包发布程序,而因为用户电脑上没有Qt配置环境,所以需要将release生成的exe文件和所依赖的dll文件复制到一个文件夹中,然后再用 Inno Setup打包工 ...
- Poj 3436 ACM Computer Factory (最大流)
题目链接: Poj 3436 ACM Computer Factory 题目描述: n个工厂,每个工厂能把电脑s态转化为d态,每个电脑有p个部件,问整个工厂系统在每个小时内最多能加工多少台电脑? 解题 ...
- hdu 1025 Constructing Roads In JGShining's Kingdom
本题明白题意以后,就可以看出是让求最长上升子序列,但是不知道最长上升子序列的算法,用了很多YY的方法去做,最后还是超时, 因为普通算法时间复杂度为O(n*2),去搜了题解,学习了一下,感觉不错,拿出来 ...
- 题解报告:hdu 1114 Piggy-Bank(完全背包恰好装满)
Problem Description Before ACM can do anything, a budget must be prepared and the necessary financia ...
- Linux环境下MySQL5.7安装记录
参考文档 <Installing MySQL on Unix/Linux Using Generic Binaries> https://dev.mysql.com/doc/refman/ ...
- php 静态绑定
简介 编辑 后期静态绑定 从PHP 5.3.0开始,PHP增加了一个叫做后期静态绑定的功能,用于在继承范围内引用静态调用的类. 该功能从语言内部角度考虑被命名为”后期静态绑定“.”后期绑定“的意思是说 ...
- 关于JTable的使用
JTable是个JavaSwing中的表格控件,可以用来显示数据和编辑数据.这里讲一下我的使用心得. JavaSwing讲究MVC理念,而这个JTable也可以说是个迷你的MVC模型.JTable只是 ...
- CentOS系统里如何正确取消或者延长屏幕保护自动锁屏功能(图文详解)
不多说,直接上干货! 对于我这里想说的是,分别从CentOS6.X 和 CentOS7.X来谈及. 1. 问题:默认启动屏幕保护 问题描述: CentOS系统在用户闲置一段时间(默认为5分钟)后, ...