time limit: 1000ms memory limit: 65536kb
problem description
小明終於找到乙份工作了,但是老闆是個比較奇怪的人,他並不是按照每月每月的這樣發工資,他覺得你想什麼時候來取都可以,而小明恰好是乙個花錢比較大手大腳的人,所以他希望每次取得錢正好夠接下來的n個月的花費,以防浪費。
小明很懶,懶到他連錢都盡量不願多帶(只是嫌沉)。但是他在只有m次取錢的機會,所以他想要用m次把n個月的錢都取出來,但想要每次都盡量少取些。給你小明n個月的花費,還有可取的次數m,問小明在保證每次盡量少取些錢的情況下,最多的那次取了多少錢?當然,每次取錢只能取連續幾個月的花費。
input
多組輸入。
第一行是兩個整數,n(1 ≤ n ≤ 100,000)和m (1 ≤ m ≤ n)
接下來的n行是連續n個月的花費,第i+1行是第i個月的花費。
output
輸出滿足最大的總花費最小的那個組的總花費。
example input
5 3example output hint3 2
9 4
1
將5個月分為3組,第一組(3,2),第二組(9),第三組(4,1),第二組的總花費最大為9,若按其他的方式分,花費最大的那一組的總花費將》=9.
author
lwnsubmit(帶注釋版)
#include
using namespace std;
int n, m;
int n[100005];
int ans;
void binsearch(int low, int high)
}if(count > m)//需要取的次數大於允許取得次數,說明每次允許取的錢數太小了,就確定答案範圍一定在mid到high之間
binsearch(mid+1, high);
else
}int main()
binsearch(low, high);//二分的在這個範圍內精確答案
printf("%d\n", ans);
}return
0;}
submit(純**版)
#include
using namespace std;
int n, m;
int n[100005];
int ans;
void binsearch(int low, int high)
}if(count > m)
binsearch(mid+1, high);
else
}int main()
binsearch(low, high);
printf("%d\n", ans);
}return
0;}
SDUT 2778 小明的花費預算(二分答案)
time limit 1000ms memory limit 65536k 有疑問?點這裡 小明終於找到乙份工作了,但是老闆是個比較奇怪的人,他並不是按照每月每月的這樣發工資,他覺得你想什麼時候來取都可以,取的是前邊連續幾個月中沒有取的工資,而小明恰好是乙個花錢比較大手大腳的人,所以他希望每次取得錢...
二分答案 小明的花費預算
小明的花費預算 time limit 1000ms memory limit 65536k 題目描述 小明終於找到乙份工作了,但是老闆是個比較奇怪的人,他並不是按照每月每月的這樣發工資,他覺得你想什麼時候來取都可以,取的是前邊連續幾個月中沒有取的工資,而小明恰好是乙個花錢比較大手大腳的人,所以他希望...
小明的骰子(SDUT 2859)
time limit 1000ms memory limit 65536k 有疑問?點這裡 眾所周知,小明非常喜歡玩骰子。一天,小芳問小明乙個問題。一次性拋n個骰子,一共能丟擲幾種結果?小明不想讓小芳覺得自己回答不上來,所以小明來求助於你。你一定要幫幫小明。首先輸入乙個整數t,代表有t組資料。接下來...