1. 程式人生 > >CodeForces 743A Vladik and flights(思維)

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;
}