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選中的 例如,...