CodeForces 743A Vladik and flights(思维)

传送门

题意就是有n个飞机场按顺序排列,飞机场有两种类型,要么是0,要么是1,从一个飞机场飞到另一个相同类型的飞机场花费0,飞到不同类型的飞机场花费为两个飞机场间的距离。问从a飞到b的最少花费,中间可以降落。 

一开始是不是感觉没有什么思路?但是我们可以这样想,飞机从起点到终点的过程中是可以降落的,如果起点和终点相同的话,一直飞就好了,用不着中转对吧。但是,如果我们起点和终点不一样,想要花费最小的话,中间是一定要中转的,那么问题来了,怎样中转,在哪儿转机。这样的话我们假设起点为1,终点为0,那么从起点到终点的过程中肯定有两个相邻的机场是这样的:10,仔细想想是不是。想明白之后肯定就知道了吧,我们让飞机停在1机场,此时花费为0,然后从1机场起飞在相邻的0机场降落,这样的话因为是相邻机场花费为1,此时,机场就和终点的机场一样了,直飞就好了,花费为1。所以程序就是起点和终点相同的时候输出0,不相同的时候输出1。附代码如下:

#include<stdio.h>
int main()
{
    int n,a,b;
    char ch[100010];
    scanf("%d %d %d",&n,&a,&b);
    getchar();
    scanf("%s",ch);
    if(ch[a - 1] == ch[b - 1])
        printf("0");
    else
        printf("1");
    return 0;
}

猜你喜欢

转载自blog.csdn.net/xiao__hei__hei/article/details/84728993