题意:题目是说从0到n-1,我还是习惯从1到n,所以以下我都这么写,大概题意就是(i, j)==‘Y’表示可以从i颜色变成j颜色,然后问我们最少删除几个会影响结果的‘Y’,能到n这个颜色;

没有意义的‘Y’:因为题目说了,能变色就一定得变色,而且,每次变色都得变成当前能变的颜色最小的那个,所有有可能执行了某些变色操作会导致变不成n,比如n==4,(1,2)==‘Y’;(3,4)==‘Y’;

那么会先变成2,然后就没得变了;

解题思路:

#include<iostream>
#include<algorithm>
#include<string>
#include<queue>
#include<cstring>
#define maxn 10005
#define inf 0x3f3f3f3f
using namespace std;
struct node
{
int num;
int dist;
node(int _num=0,int _dist=0):num(_num),dist(_dist){}
friend bool operator<(node a,node b)
{
return a.dist>b.dist;
}
};
struct Edge
{
int next;
int to;
int w;
}edge[maxn];
int head[maxn];
int dist[maxn];
int cnt;
int visit[maxn];
void add(int u,int v,int w)
{
edge[cnt].next=head[u];
edge[cnt].w=w;
edge[cnt].to=v;
head[u]=cnt++;
}
void dij(int x)
{
priority_queue<node>que;
memset(dist,0x3f3f3f3f,sizeof(dist));
memset(visit,0,sizeof(visit));
dist[x]=0;
que.push(node(x,0));
while(!que.empty())
{
node u=que.top();
que.pop();
int now=u.num;
for(int i=head[now];i!=-1;i=edge[i].next)
{
Edge e=edge[i];
if(dist[e.to]>dist[now]+e.w)
{
dist[e.to]=dist[now]+e.w;
que.push(node(e.to,dist[e.to]));
}
}
}
}
int main()
{
char s[60][60];
int t;
int n;
cin>>t;
while(t--)
{
cin>>n;
memset(head,-1,sizeof(head));cnt=0;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
cin>>s[i][j];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
int cnt=0;
if(s[i][j]=='Y')
{
for(int k=1;k<=j-1;k++)
{
if(s[i][k]=='Y')
cnt++;
}
add(i,j,cnt);
} }
}
dij(1);
if(dist[n]==inf)
cout<<"-1\n";
else
cout<<dist[n]<<endl;
}
return 0;
}

  

根据先变小的这个操作,所以,我们可以这么建图,(i,j)==‘Y’时,可以建一条从i到j的边,权值为第i行开始从[1,j-1]中‘Y'的数量,因为如果我们要用这条边的话,因为先变小,所以我们得把这一行中比当前小的都删去,删掉一个权值加1;

代码:

51nod-1445-变色DNA(最短路)的更多相关文章

  1. 51nod 1445 变色DNA(dij)

    题目链接:51nod 1445 变色DNA 看了相关讨论再去用最短路:val[i][j]之间如果是'Y',说明i可以到达j,并且i到达j的代价是i那行 1到j-1 里面'Y'的数量. 最后,求 0到n ...

  2. 51NOD 1445 变色DNA

    1445 变色DNA 有一只特别的狼,它在每个夜晚会进行变色,研究发现它可以变成N种颜色之一,将这些颜色标号为0,1,2...N-1.研究发现这只狼的基因中存在一个变色矩阵,记为colormap,如果 ...

  3. 51nod 1445 变色DNA ( Bellman-Ford算法求单源最短路径)

    1445 变色DNA 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 有一只特别的狼,它在每个夜晚会进行变色,研究发现它可以变成N种颜色之一,将这些颜色标号为0,1 ...

  4. 51nod 1445 变色DNA(最短路变形)

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1445 题意: 思路: 挺好的一道题目,如果$colormap[i][j] ...

  5. 51nod 1445:变色DNA 最短路变形

    1445 变色DNA 题目来源: TopCoder 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 有一只特别的狼,它在每个夜晚会进行变色,研究发现 ...

  6. 51nod_1445 变色DNA 最短路模板 奇妙思维

    这是一道最短路模板题,但是在理解题意和提出模型的阶段比较考验思维,很容易想到并且深深进入暴力拆解题目的无底洞当中. 题意是说:给出一个邻接矩阵,在每个点时,走且仅走向,合法路径中编号最小的点.问题是是 ...

  7. 变色DNA(最短路思维题)

    个人心得:太水了,还是对最短路不太深入了解,无法构建出最短路模板,然后就是读题能力, 这题的关键在于转换为最短路模板,因为DFS我在24组超时了. 假设把从i到j的代价看做是权值,那么就是对权值的确立 ...

  8. 51nod 1624 取余最短路(set)

    题意: 佳佳有一个n*m的带权矩阵,她想从(1,1)出发走到(n,m)且只能往右往下移动,她能得到的娱乐值为所经过的位置的权的总和. 有一天,她被下了恶毒的诅咒,这个诅咒的作用是将她的娱乐值变为对p取 ...

  9. 51Nod 迷宫问题(最短路+权值)(模板)

    你来到一个迷宫前.该迷宫由若干个房间组成,每个房间都有一个得分,第一次进入这个房间,你就可以得到这个分数.还有若干双向道路连结这些房间,你沿着这些道路从一个房间走到另外一个房间需要一些时间.游戏规定了 ...

  10. 【ACM】那些年,我们挖(WA)过的最短路

    不定时更新博客,该博客仅仅是一篇关于最短路的题集,题目顺序随机. 算法思想什么的,我就随便说(复)说(制)咯: Dijkstra算法:以起始点为中心向外层层扩展,直到扩展到终点为止.有贪心的意思. 大 ...

随机推荐

  1. MySQL 数据库规范--调优篇(终结篇)

    前言 这篇是MySQL 数据库规范的最后一篇--调优篇,旨在提供我们发现系统性能变弱.MySQL系统参数调优,SQL脚本出现问题的精准定位与调优方法. 目录 1.MySQL 调优金字塔理论 2.MyS ...

  2. BZOJ3601 一个人的数论 莫比乌斯反演、高斯消元/拉格朗日插值

    传送门 题面图片真是大到离谱-- 题目要求的是 \(\begin{align*}\sum\limits_{i=1}^N i^d[gcd(i,n) == 1] &= \sum\limits_{i ...

  3. NO NEWS IS GOOD NEWS

    从客户那传来一个噩耗:要求每个表单在保存之后,要在页面上弹一个 “ 保存成功 ” 的对话框. 客户代表志得意满地说这样用户体验更好,略带谴责意味地傲娇道,“你们早该想到的”.呵呵…… 可不是嘛,我刚入 ...

  4. 腾讯 Omi 5.0 发布 - Web 前端 MVVM 王者归来,mappingjs 强力加持

    写在前面 腾讯 Omi 框架正式发布 5.0,依然专注于 View,但是对 MVVM 架构更加友好的集成,彻底分离视图与业务逻辑的架构. 你可以通过 omi-cli 快速体验 MVVM: $ npm ...

  5. Class AtomicInteger

    Overview Package Class Use Tree Deprecated Index Help Java™ PlatformStandard Ed. 7 Prev Class Next C ...

  6. H5 32-百度首页

    32-百度首页 新 闻 网 页 贴 吧 知 道 音 乐 图 片 视 频 地 图 百科 文库 hao123 | 更多>> 百度地图带你吃喝玩乐,全心全意为人民服务 把百度设为主页 安装百度卫 ...

  7. 安装pandas时出现环境错误

    在安装pandas时出现Could not install packages due to an EnvironmentErrorConsider using the `--user` option ...

  8. Xcode中控制台中打印中文处理

    xcode 10以后的方法,一般使用 #ifdef DEBUG #define NSLog(FORMAT, ...) fprintf(stderr,"\n %s:%d %s\n", ...

  9. Docker : Tomcat Clustering with Load Balancer (Tomcat and Nginx)

    Tomcat Clustering Series Part 5 : NginX as Load Balancer - Ramki Technical Bloghttps://www.ramkitech ...

  10. 接口工具之postman

    在我们日常开发中,经常会对功能接口进行相应的测试.那么postman是一款不错的测试工具,因为平常使用的比较多,因此在这里简单记录一下,经常使用到的一些地方 简单的使用就不错介绍了, 基本流程: 新建 ...