51nod_1445 变色DNA 最短路模板 奇妙思维
这是一道最短路模板题,但是在理解题意和提出模型的阶段比较考验思维,很容易想到并且深深进入暴力拆解题目的无底洞当中。
题意是说:给出一个邻接矩阵,在每个点时,走且仅走向,合法路径中编号最小的点。问题是是否能够从0点走向n-1点。如果可以走到,求出,最少应当删除几个合法边(如果(1,2)(2,1)(2,3)同时合法,前两个边就会不停的循环,这时候必须删掉(2,1)才能够让(2,3)这条边被走到,从而到达新的节点)。
题解:重新定义变得权重:按照题意变得权重应当每次是1,但是显然在这道题的设定下,这个权重并没有意义。因此应当重新定义每条边的权重:使得邻接矩阵path[i][j]代表的含义是:如果要合法的走过这条边,应当删除前面的几条边?
普通的dijkstra:
#include<bits/stdc++.h>
using namespace std; long long cases,n,m;
const long long MAXN=+;
const long long INF=1e12+;
long long path[MAXN][MAXN];
long long dp[MAXN]; void init()
{
cin>>n;
for(int i=;i<n;++i)
{
dp[i]=INF;long long point=;
for(int j=;j<n;++j)
{
path[i][j]=INF;
char c;
cin>>c; if(c!='N')
{
path[i][j]=point;
point++;
}
}
}
}
bool v[MAXN];
void dijkstra()
{
memset(v,,sizeof(v));
dp[]=;int x=;
for(int i=;i<n;++i)
{
long long mini=INF;
for(int j=;j<n;++j)
{
if(!v[j]&&dp[j]<mini)
{
mini=dp[j];
x=j;
}
}v[x]=;
for(int j=;j<n;++j)
{
dp[j]=min(dp[j],dp[x]+path[x][j]);
}
} if(dp[n-]==INF)cout<<"-1"<<endl;
else cout<<dp[n-]<<endl;
} int main()
{
cin.sync_with_stdio(false);
cin>>cases;
for(int itee=;itee<cases;++itee)
{
init();
dijkstra();
}
return ;
}
两行代码的解决方案:
#include<bits/stdc++.h>
using namespace std;long long cases,n,m;const long long MAXN=+;const long long INF=1e12+;long long path[MAXN][MAXN];long long dp[MAXN];void init(){ cin>>n; for(int i=;i<n;++i) { dp[i]=INF;long long point=; for(int j=;j<n;++j) { path[i][j]=INF; char c; cin>>c; if(c!='N') { path[i][j]=point; point++; } } }}bool v[MAXN];void dijkstra(){ memset(v,,sizeof(v)); dp[]=;int x=; for(int i=;i<n;++i) { long long mini=INF; for(int j=;j<n;++j) { if(!v[j]&&dp[j]<mini) { mini=dp[j]; x=j; } }v[x]=; for(int j=;j<n;++j) { dp[j]=min(dp[j],dp[x]+path[x][j]);}} if(dp[n-]==INF)cout<<"-1"<<endl; else cout<<dp[n-]<<endl;}int main(){ cin.sync_with_stdio(false); cin>>cases; for(int itee=;itee<cases;++itee) { init(); dijkstra(); } return ;}
51nod_1445 变色DNA 最短路模板 奇妙思维的更多相关文章
- 51nod 1445:变色DNA 最短路变形
1445 变色DNA 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 有一只特别的狼,它在每个夜晚会进行变色,研究发现 ...
- 变色DNA(最短路思维题)
个人心得:太水了,还是对最短路不太深入了解,无法构建出最短路模板,然后就是读题能力, 这题的关键在于转换为最短路模板,因为DFS我在24组超时了. 假设把从i到j的代价看做是权值,那么就是对权值的确立 ...
- 51nod 1445 变色DNA(dij)
题目链接:51nod 1445 变色DNA 看了相关讨论再去用最短路:val[i][j]之间如果是'Y',说明i可以到达j,并且i到达j的代价是i那行 1到j-1 里面'Y'的数量. 最后,求 0到n ...
- 51NOD 1445 变色DNA
1445 变色DNA 有一只特别的狼,它在每个夜晚会进行变色,研究发现它可以变成N种颜色之一,将这些颜色标号为0,1,2...N-1.研究发现这只狼的基因中存在一个变色矩阵,记为colormap,如果 ...
- POJ 2449Remmarguts' Date K短路模板 SPFA+A*
K短路模板,A*+SPFA求K短路.A*中h的求法为在反图中做SPFA,求出到T点的最短路,极为估价函数h(这里不再是估价,而是准确值),然后跑A*,从S点开始(此时为最短路),然后把与S点能达到的点 ...
- poj1511/zoj2008 Invitation Cards(最短路模板题)
转载请注明出处: http://www.cnblogs.com/fraud/ ——by fraud Invitation Cards Time Limit: 5 Seconds ...
- k短路模板 POJ2449
采用A*算法的k短路模板 #include <iostream> #include <cstdio> #include <cstring> #include < ...
- HDU 5521.Meeting 最短路模板题
Meeting Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total ...
- ACM-ICPC 2018 沈阳赛区网络预赛 D. Made In Heaven(第k短路模板)
求第k短路模板 先逆向求每个点到终点的距离,再用dij算法,不会超时(虽然还没搞明白为啥... #include<iostream> #include<cstdio> #inc ...
随机推荐
- SpringMVC09 Converter变流器、数据回显、异常测试
1.配置web.xml文件 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3// ...
- selenium+phantomjs报错:Unable to find a free port的分析和解决
selenium+phantomjs报错:Unable to find a free port的分析和解决 Table of Contents 1. 现象 2. 分析 3. 解决办法 1 现象 在做项 ...
- Visual Studio Code的快捷键和相关技巧
编辑相关的键盘快捷键: Shift + Alt + F = 格式化代码(似乎不好用) Ctrl + Shift + Enter = 在上一行新建空行并转到上一行 Ctrl + K,Ctrl + C = ...
- mui的ajax例子1
mui.ajax()方法,get请求 前端页面: <!DOCTYPE html><html><head> <meta charset="utf-8& ...
- centos6.2安装内核
http://vault.centos.org/6.2/updates/Source/SPackages/ yum install rpm-build redhat-rpm-config unifde ...
- 阿里 EasyExcel 7 行代码优雅地实现 Excel 文件生成&下载功能
欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 资深架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...
- 绿卡基础知识:I-129
绿卡基础知识:I-129 标签: 绿卡基础知识 I-129 表格本不该你来填的.那是你老板的 business.在美国工作,除非是公民或有绿卡,都需要移民局的批准.如果你没有 EAD,I-129 就是 ...
- mybatis-关联关系2
关系关系主要有一对一,一对多,多对多,往往多对多都是通过俩个一对多来完成的 实例项目还是之前的,只是增加了一个年级实体类 1.创建年级实体类:---年级中有学生的集合 package com.java ...
- Graylog+elasticsearch+mongodb集群+nginx负载均衡前端
网上有张图画的很好,搜索有关它的配置文章,google里有几篇英文的,都是依靠haproxy等或别的什么实现,没有纯粹的Graylog+elasticsearch+mongodb集群,项目需要,只有自 ...
- sk-learning(1)
sk-learning学习笔记(1) 简介 scikit learning 是一个python的机器学习库,内置许多机器学习的算法诸如svm.随机森林.逻辑回归.贝叶斯网络等算法.覆盖了分类.聚类.回 ...