【水】vijosP1336 飞翔

P1336飞翔

背景

鹰最骄傲的就是翱翔,但是鹰们互相都很嫉妒别的鹰比自己飞的快,更嫉妒其他的鹰比自己飞行的有技巧。于是,他们决定举办一场比赛,比赛的地方将在一个迷宫之中。

描述

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

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

格式

输入格式

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

输出格式

仅一行,1,1-->n,m的最短路径的长度,四舍五入保留到整数即可

样例

输入

3 2
3
1 1
3 2
1 2

输出

383

思路

太久了早就忘记了自己看代码吧……

代码

#include<iostream>
#include<cmath>
#include<iomanip>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
    long long i,j,k,a,b,m,n,tmp,s,t,best;
    double distance;
    long special[1005][4];  //special[i][0]表示第i条斜边左下角顶点x坐标,special[i][1]表示第i条斜边左下角顶点y坐标
    long x,y;

    {cin>>n>>m;  //读入
    cin>>k;
    for (i=1;i<=k;++i) //读入一叠叠的坐标
     cin>>special[i][0]>>special[i][1];
    }

    for (i=1;i<=k;++i)  //冒泡排序,准则:先x后y升序排列,使需要查找时向左查找 ★现在做的是x升序排序★纵坐标不用排★
      { for (j=i+1;j<=k;++j)
       { if (special[i][0]>special[j][0])
         { for (s=0;s<=3;++s)  //整个点的所有内容转移,懒得打4遍
           {tmp=special[i][s];special[i][s]=special[j][s];special[j][s]=tmp;}
          }
        }
       }

      for (i=1;i<=k;++i) special[i][2]=0;  //初始化special[i,2]值,使自己算一条 

      for (i=1;i<=k;++i)
      { for (j=1;j<=i;++j)
        { if ((special[i][0]>special[j][0])and(special[i][1]>special[j][1]))
           { if (special[j][2]+1>special[i][2]) special[i][2]=special[j][2]+1; }
         }
       }

      distance=100*m+100*n;
      best=0;
      for (i=1;i<=k;++i)
      {if (special[i][2]>best) best=special[i][2];}

      best=best+1;

      distance=distance-200*best+best*sqrt(2)*100;

      cout<<int(distance+0.5)<<endl;
     return 0;
}

结果

时间: 2024-08-09 22:01:50

【水】vijosP1336 飞翔的相关文章

一&#183;京京得水

有一个小姑娘,今年六岁了,眼睛又圆又大,像黑豆子似的,但嘴巴挺大,很爱说话.虽然年龄比较小,可就是爱看野外的大自然,所以常常跑到野外,令家人担心,最担心的 是妈妈,妈妈常常"京京" "京京"的叫,嗓子都叫哑了. 她是一个懂得很多东西的女孩,知道很多动物和植物的名称.她也是一个很有耐心的女孩,有一件玩具,连她的妈妈,爸爸和哥哥都弄不懂该怎么玩,而她哪?就算弄乱,也要找到技巧,所以她会使用很多东西. 在一个晴朗的天气,小京京在家里又呆不住了,去找邻居家的孩子----彩云

三角函数之美-水波纹加载LoadingView

一.前言 学习是要总结的,最近几天学习了绘图相关的,但是使用的机会较少,现在又快要遗忘了,这次看了水波纹的绘制,觉得十分有意思,还是 把实现的方法记录下来.技术无他,为手熟尔,还是要多练习,空淡误国,实干兴邦,让我们看看今天的三角函数之美吧. 二.概述 肯定大家对中学学习的三角函数都不陌生吧,不过学习的sin.cos是超越函数一类函数,是初等函数的一种,借用维基百科的一张图: 一个完整的正弦函数应该是这样的:>y=Asin(ωx+φ)+h,A决定峰值,ω决定周期,φ表示初相位,h表示y轴的位置.

bzoj1601【Usaco2008 Oct】灌水

1601: [Usaco2008 Oct]灌水 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 1589  Solved: 1035 [Submit][Status][Discuss] Description Farmer John已经决定把水灌到他的n(1<=n<=300)块农田,农田被数字1到n标记.把一块土地进行灌水有两种方法,从其他农田饮水,或者这块土地建造水库. 建造一个水库需要花费wi(1<=wi<=100000),连接两

c语言:1000瓶水,有一瓶是有毒的,现共有10只老鼠,怎么判断毒水?

问题:1000瓶水,其中有一瓶是有毒的,一只老鼠喝下毒水会一天之后死亡,现在共有10只老鼠,怎么判断哪一瓶水是毒水? 分析:2^10=1024,则可以考虑利用二进制求解 解:给1000瓶水依次标号1至1000,将10只老鼠从右向左排成一列,第一瓶水让右边第1只老鼠喝,第2瓶水让第2只老鼠喝,第3瓶水让第1,2只老鼠喝,则第4瓶水让第3只老鼠喝,......第1000瓶水依次让第4,6,7,8,9,10只老鼠喝,记死亡的老鼠为1,未死亡的老鼠为0,按照二进制表示数的方法求出这个数,就知道哪瓶是毒水

2015南阳CCPC L - Huatuo&#39;s Medicine 水题

L - Huatuo's Medicine Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 无 Description Huatuo was a famous doctor. He use identical bottles to carry the medicine. There are different types of medicine. Huatuo put medicines into the bottles and chain these b

android 水波纹

public class MyWaveView extends View{ private ArrayList<Wave> list; private int[] colors = {Color.RED,Color.BLUE, Color.DKGRAY,Color.GREEN,Color.YELLOW}; public boolean isRunning = false; public MyWaveView(Context context) { this(context,null); } pu

ZOJ 3827 Information Entropy 水

水 Information Entropy Time Limit: 2 Seconds      Memory Limit: 65536 KB      Special Judge Information Theory is one of the most popular courses in Marjar University. In this course, there is an important chapter about information entropy. Entropy is

如果是壬癸水八字的人呢?壬癸水遇风水-日课-命理-养生-日课原理与择日玄机命理养生

紧着我又接到另一个老板的电话,电话的内容是约请我晚上一起吃饭,因为他过来的时辰不好,我就让他先到我办公室坐了一会,等过了这个申时到酉时的时候再下去,因为一时分八刻,在酉时的前两刻还有申时的过度内容.所以我们在算八字的时候,要知道他的出生地和现居住,尽量要知道求测者的出生时间是几点几分,因为一个时辰要分为八刻,每一刻代表的度数也不一样,在一.二刻和七 八刻的时候就要两边跨,我们就要看他的大运是几岁运,如果是昨天立秋,今天出生的人,他是几岁运?他是逆推运必然是1虚岁岁运,如果求测者出生的时辰是在午月

sdut 2841 Bit Problem (水题)

题目 贴这个题是因为看题解有更简单的方法, 我做的时候是直接算的, 也很简单. 贴一下题解吧: 如果一个整数不等于 0,那么该整数的二进制表示中至少有一位是 1. 这个题结果可以直接输出 x - (x&(x-1)); 因为x-1 之后二进制下,就是最右边的1变成了0, 最右边的1的 右边所有的0变成了1, 不影响最左边. 我的代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4