UVA12627奇怪的氣球膨脹

2021-09-11 17:30:22 字數 547 閱讀 3698

找規律。用 f(k,i)表示:第 k 小時最上面 i 行有多少紅球。

找a-b行紅球的數量,也就是求 f(k,b) - f(k,a-1)。k 時刻的狀態是和 k-1的狀態緊密相關的。k 時刻狀態是 3 個 k-1時刻的狀態(分別位於左上,左下,右上),右下全是藍色球。所以,

當 i <= 2^(k-1),等於左上和右上的兩個(k-1)狀態,即:f(k,i) = 2 * f(k-1, i - 2(k-1)) ;

當 i > 2^(k-1),等於完整的左上,右上加上部分左下,f(k,i) = f(k-1, i - 2(k-1)) + 2 * 3^(k-1);

注意:3的k-1次方直接用pow函式會錯誤,因為會int越界,應該存在乙個陣列裡!。

#include #include typedef long long ll;

ll temp[31];

// 第 k小時,最上面 i 行的紅球數量

ll f(ll k, ll i)

int main()

return 0;

}

遞推 UVA 12627 奇怪的氣球膨脹

題目大意 給你k,a,b,求k小時後,a b行的紅氣球總數。解題思路 求解遞推式即可,只不過注意乙個優先順序問題,符號優先順序高於 兩個符號,所以不能1 1 ac include include include include include include using namespace std ...

UVa10934 裝滿水的氣球

uva10934 解析 設還剩i個氣球,j次機會時能夠測得的最大高度為d i j 換句話說,就是d i j 層內,可以用i個氣球j次機會測出氣球硬度為j 可以知道 例項 include includeusing namespace std const int maxk 100 const int m...

貪心 Uva1614奇怪的股市

題意 給出乙個長度為n的序列a,滿足1 a i i,給每個數分配乙個正號或負號,求是否能讓這些數加起來為0,如果是輸出每個數的正負 任意方案 題解 如果a陣列每個元素加起來不為2的倍數,就無解 因為正負號不會影響奇偶 若當前沒被判無解,就從後往前掃一遍,記錄乙個sum,如果當前sum 0,那麼給當前...