nyoj195 飞翔

飞翔

时间限制:3000 ms  |  内存限制:65535 KB

难度:4

描述

鹰最骄傲的就是翱翔,但是鹰们互相都很嫉妒别的鹰比自己飞的快,更嫉妒其他的鹰比自己飞行的有技巧。

这些鹰的起始点被设在一个N*M矩阵的左下角map[1,1]的左下角。终点被设定在矩阵的右上角map[N,M]的右上角,有些map[i,j]是可以从中间穿越的。每一个方格的边长都是100米。如图所示:

没有障碍,也没有死路。这样设计主要是为了高速飞行的鹰们不要发现死路来不及调整而发生意外。潘帕斯雄鹰冒着减RP的危险从比赛承办方戒备森严的基地中偷来了施工的地图。但是问题也随之而来,他必须在比赛开始之前把地图的每一条路都搞清楚,从中找到一条到达终点最近的路。(哈哈,笨鸟不先飞也要拿冠军)但是此鹰是前无古鹰,后无来鹰的吃菜长大的鹰--菜鸟。他自己没有办法得出最短的路径,于是紧急之下找到了学OI的你,希望找到你的帮助。于是,他们决定举办一场比赛,比赛的地方将在一个迷宫之中。

输入
本题有多组数据。以EOF为输入结束的标志。

每组测试数据的首行为n,m(0<n,m<=1000000),第2行为k(0<k<=1000)表示有多少个特殊的边。以下k行为两个数,i,j表示map[i,j]是可以直接穿越的。

输出
仅一行,1,1-->n,m的最短路径的长度,四舍五入保留到整数即可
样例输入
3 231 13 21 2
样例输出
383

思路:

1.看到这道题首先应该想到的是

   假如没有可以从中间穿越的 则需要飞的总距离是固定的为:n*m*100

   每当增加一个穿越数时,则总距离为:(n*m-2+sqrt(2))*100(设穿越数为ans个)
   由此可知:最短飞行总距离为:(n*m-2*ans+sqrt(2)*ans)*100

2.把穿越数用数组存起来人后排序,动态规划求出ans

   代码如下:

<span style="color:#ff0000;">#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#define max(a,b) a>b?a:b
int dp[1001];
struct node
{
	int left;
	int right;
}map[1001];
int cmp(const void *a,const void *b)
{
	if(((struct node *)a)->left!=((struct node *)b)->left)
		return (((struct node *)a)->left-((struct node *)b)->left);
	else
		return (((struct node *)a)->right-((struct node *)b)->right);
}
int main()
{
	int n,m;
	while(scanf("%d%d",&n,&m)!=EOF)
	{
		int k,i,j,count=0,a,b,ans=0;
		memset(map,0,sizeof(map));
		memset(dp,0,sizeof(dp));
		scanf("%d",&k);
        for(i=1;i<=k;i++)
		{
			scanf("%d%d",&a,&b);
			map[i].left=a;
			map[i].right=b;
		}
		qsort(map+1,k,sizeof(map[0]),cmp);</span>//排序<span style="color:#ff0000;">
		for(i=1;i<=k;i++)
		{
			dp[i]=1;
		   for(j=1;j<k;j++)
		   {
                         if((map[i].right>map[j].right)&&(map[i].left>map[j].left))</span>//当满足条件时执行<span style="color:#ff0000;">
			  {
				  dp[i]=max(dp[i],dp[j]+1);
			  }
			  ans=max(dp[i],ans);</span>//动态规划求出最优ans<span style="color:#ff0000;">
		   }
		}
		printf("%.0f\n",(m+n-ans*2+ans*sqrt(2))*100);</span>//计算输出最短飞行距离<span style="color:#ff0000;">
	}
	return 0;
}
</span>


时间: 2024-10-13 01:40:51

nyoj195 飞翔的相关文章

【动态规划】NYOJ195 飞翔

飞翔 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 鹰最骄傲的就是翱翔,但是鹰们互相都很嫉妒别的鹰比自己飞的快,更嫉妒其他的鹰比自己飞行的有技巧.于是,他们决定举办一场比赛,比赛的地方将在一个迷宫之中. 这些鹰的起始点被设在一个N*M矩阵的左下角map[1,1]的左下角.终点被设定在矩阵的右上角map[N,M]的右上角,有些map[i,j]是可以从中间穿越的.每一个方格的边长都是100米.如图所示: 没有障碍,也没有死路.这样设计主要是为了高速飞行的鹰们不要发现死

《逆光飞翔》

逆光飞翔演唱:范逸臣作词:陈曦作曲:董冬冬有时想大哭一场找个没人的地方不需要同情的目光自己给自己的力量有时想放空一趟转过身背对着窗不借助别人的肩膀自己帮自己成长暴风雨一场我看到了阳光和那坚强的模样人生的路上隐藏那份坚强是爱为我插上翅膀逆光飞翔会更有力量我知道我要去的方向只要放下心中的脆弱和悲伤就能痛快的大声歌唱逆光飞翔会让爱闪亮我知道幸福就在路上只要带上全部的执着和坚强就能无限的接近梦想

【水】vijosP1336 飞翔

P1336飞翔 背景 鹰最骄傲的就是翱翔,但是鹰们互相都很嫉妒别的鹰比自己飞的快,更嫉妒其他的鹰比自己飞行的有技巧.于是,他们决定举办一场比赛,比赛的地方将在一个迷宫之中. 描述 这些鹰的起始点被设在一个N*M矩阵的左下角map[1,1]的左下角.终点被设定在矩阵的右上角map[N,M]的右上角,有些map[i,j]是可以从中间穿越的.每一个方格的边长都是100米.如图所示: 没有障碍,也没有死路.这样设计主要是为了高速飞行的鹰们不要发现死路来不及调整而发生意外.潘帕斯雄鹰冒着减RP的危险从比赛

因为我的飞翔,一直用了她的翅膀

小时候,就知道她和别的妈妈不同.她从来不说这样的话--妈妈养你多辛苦,你长大了要对妈妈好. 在我不记事的时候,父亲就病故了,之后她一个人带着我生活.所以有很多大人对我说,你妈妈抚养你要辛苦很多倍.当然,她的不同并不只是她不说那样的话,最大的不同是,她很"放纵"我. 当时同龄的孩子大多会被家长逼着学习各种才艺,上各种奥数班.英语班.才艺班.但是她不,她甚至从来不让我在作业之外再去和课本纠缠.于是小时候的我被很多每天忙忙碌碌修炼本领的同学羡慕.他们好奇地反复问我,你妈真的不逼你学奥数吗--

用余下的青春尽力飞翔

经常感叹,时间过得真的很快很快,不知不觉发思特软件就要十年了,人们常说:"十年磨一剑",我的剑在那里,但它的威力在哪里,寻寻觅觅之后伤感油然而生,于是只好用"比上不足比下有余"来阿Q式的自我安慰一下,其实很多时候我们也不知道成功的定义是什么?都没有成功过因此也没有办法说失败,就如同当年我从深圳落魄而回,碰到朋友就说:"我创业失败了,好伤感!" 大部分的朋友都热情主动地安慰并赠送卖醉机会,直到有一天有一位友人惊天动地的一句话敲醒了我:"老

HTML5游戏源码 飞翔的字母 可自定义内容

相信大家都玩过飞翔的小鸟吧,当然,可能已经有很多人因为这个游戏砸了不少手机.吼吼. 废话不多说,回到主题,源码如下,需要打包源码的朋友们请留言邮箱地址.当然还有,不要忘了点赞哦~谢谢大家的支持. 直接上源码:一共是三个文件:页面.js.css. HTML(index.html)页面源码如下: 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title&g

如风一样,飞翔------Day37

我一直都认为自己是个反应没有那么敏锐的人,而不幸的是事实上也是,所以,在菜鸟的头衔上,我不得不再背负上一个笨鸟的"光芒",我不苛求一飞冲天的传奇,却也有着不甘寂寞的激昂,我选择先飞,因为我还渴求着,如风一样,飞翔.... 作为一个已婚人士,我不得不面对生活的琐碎,可事实上,这繁杂的经历却给了我一份波澜不惊的沉静和一颗喜欢思考的心,我为此开心了很久.进入这个行业的第一个项目结束,陪妻子已经疯了一天,明天还要继续,或者说今天还要继续,大幅度抛开代码的两天,却在喧嚣之后的安宁下想了很多,关于

nyoj 195 飞翔

飞翔 时间限制:3000 ms  |  内存限制:65535 KB 难度:4 描述 鹰最骄傲的就是翱翔,但是鹰们互相都很嫉妒别的鹰比自己飞的快,更嫉妒其他的鹰比自己飞行的有技巧.于是,他们决定举办一场比赛,比赛的地方将在一个迷宫之中. 这些鹰的起始点被设在一个N*M矩阵的左下角map[1,1]的左下角.终点被设定在矩阵的右上角map[N,M]的右上角,有些map[i,j]是可以从中间穿越的.每一个方格的边长都是100米.如图所示: 没有障碍,也没有死路.这样设计主要是为了高速飞行的鹰们不要发现死

母亲送给孩子的一对人生飞翔的翅膀

一 一位年轻的妈妈患了癌症.一日,她五岁的儿子抬头望着天上的云彩,问:"妈妈,天上的云彩会掉下来吗?" "会呀."她说. "地上怎么没有看到掉下来的云彩呢?"儿子问. "雨滴就是天上掉下来的云彩呀."她说. "那雨滴为什么没有云彩美呢?"儿子继续好奇地问. "因为雨滴离我们近,云彩离我们远,同一样东西,拉远去看,我们会更容易看到它的美丽.平时在我们身边一些普通.平常的东西,比如妈妈对你的爱,平时也