UVa11093 例題9 13 環形跑道

2021-08-08 21:37:57 字數 715 閱讀 5988

uva11093

環形跑到上有n個加油站,每個加油站可以加p[i]的油,而到下乙個加油站需要q[i]的油,油箱無上限,求出能不能從某個加油站除法能可以走完一圈。

紫書上給的思路:如果從第0個加油站出發,無法到達p+1站,在第p個加油站終止,則0~p之間的所有加油站都可以。

原理很簡單:既然可以從0到第p站說明,從0站到第1站(這裡假設p不為0)的時候油箱裡的有油只可能增多或者不變,不可能是負的(如果是負的不可能到第1站),所以理論上從第0站開始比從第1站更容易到達p+1,但是並沒有到第p站。所以下次在開始可直接從第p+1站開始。時間複雜度o(n)。

#include

#include

using

namespace

std;

const

int maxn = 100001 + 5;

int main()

else

}if (begin >= n) cout

<< "case "

<< ++kase << ": not possible\n";

else

cout

<< "case "

<< ++kase << ": possible from station "

<< begin + 1

<< endl;

}return

0;}

UVA 11093 環形跑道

題意 環形跑道上的加油站有n個,第i個加油站加油pi單位,開到下個加油站需要qi單位,求乙個最小的起點編號使得從該點出發可以繞一圈回到該起點。思路 列舉 從1開始起,模擬油量以及消耗的過程,假設到 k 點後油量不足以到達下乙個點 那麼1 k的點都不能做起點。以k 1作為新起點,記住當前還需要 欠 多...

uva297 例題6 11(計算有限面積)

計算技巧 雜湊思想 空間換時間 我寫這一題的第一思維是,用二維陣列存樹,兩顆樹的每一層都表示出來,節點數不足的數將其補全。如 第三層應該是16個葉子,但是表示出來的葉子只有8個。那說明上一層的節點肯定有白節點或者黑節點,那麼補全這一層得應該是4個黑4個白。且兩棵樹一定要一樣深,但是要完成這些操作過於...

算典04 例題 03

n n 20 個人站成一圈,逆時針編號為1 n。有兩個 a從1開始逆時針數,b從n開始順時針數。在每一輪中,a數k個就停下來,b數m個就停下來 注意有可能兩個 停在同乙個人上 接下來被 選中的人 1個或者2個 離開隊伍。輸入n,k,m輸出每輪裡被選中的人的編號 如果有兩個人,先輸出被a選中的 例如,...