joi 君馬上要和妹妹 joi 子和 joi 美一起吃小吃。今天的小吃是他們三個人都很喜歡的年輪蛋糕。
年輪蛋糕是像下圖一樣呈圓筒形的蛋糕。為了把蛋糕分給三個人,joi 君必須沿著半徑方向切 3 刀,從而把蛋糕分成三塊。然而,由於年輪蛋糕硬得像實木一樣,要讓刀切進去並不簡單。因此,這個年輪蛋糕上事先準備了 n 個切口,而 joi 君只能在有切口的位置下刀。切口按順時針順序編號為 1到 n,對於 1≤i≤n−1,第 i 個切口和第 i+1個切口之間部分的大小是 ai。第 n 個切口和第 1個切口之間部分的大小是 an 。
圖 1:乙個年輪蛋糕的例子,n=6,a1=1,a2=5,a3=4,a4=5,a5=2,a6=4
妹控的 joi 君在把蛋糕切成 3 塊之後,自己選走最小的一塊吃掉,把剩下兩塊分給兩個妹妹。而另一方面,joi 君太喜歡年輪蛋糕了,只要能吃到的時候就會想吃很多很多。試求:最小塊的大小不超過多少。
樣例說明 1
圖 2:從第 1,3,5個切口下刀時是最優解(即圖中粗實線位置)。
這道題用二分+二分。我們知道分乙個蛋糕需要切三刀,第一刀列舉o(n),第二刀二分logn,第三刀二分logn,一共o(nlogn^2),可以過。
第
一、二刀會把最小的一塊給切走,然後留下一大塊。
然後用第三刀切這一大塊,如果這兩塊切完都比剛才切走的小,說明這一大塊無論怎麼切都切不出符合的結果,所以開始的一塊切大了,第二刀往小切
如果前面一塊小於剛切走的,說明第三刀要往後切;
如果後面一塊小了,就往前切;
如果兩塊都可以,說明這種切法可行,第二刀嘗試往更大的切。
注意所有陣列下表的處理。
#include #include#include
#include
#include
#include
#define in(a) a=read()
#define maxn 200020
#define rep(i,k,n) for(long long i=k;i<=n;i++)
using
namespace
std;
inline
long
long
read()
long
long
n;long
long
ans;
long
long
a[maxn],s[maxn];
inline
bool check(long
long i,long
long
k)
return0;
}int
main()
rep(i,
1,n)
s[i+n]=s[i+n-1]+a[i+n];
rep(i,
1,n)
ans=max(s[i+left-1]-s[i-1
],ans);
}cout
<
return0;
}
SICP練習 99 練習2 75
通過模仿書上的make from real imag函式來完成此題。define make from mag ang x y define dispatch op cond eq?op real part x cos y eq?op imag part x sin y eq?op magnitude...
275 最短路徑問題
275.最短路徑問題 描述 提交自定義測試 題目描述 平面上有n個點,每個點的座標均在 10000 10000之間。其中的一些點之間有連線。若有連線,則表示可從乙個點到達另乙個點,即兩點間有通路,通路的距離為兩點間的直線距離。現在的任務是找出從一點到另一點之間的最短路徑。輸入描述 輸入檔案共n m ...
275 隊花的煩惱一
時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 acm隊的隊花c小 經常抱怨 c語言中的格式輸出中有十 六 十 八進位制輸出,然而卻沒有二進位制輸出,哎,真遺憾!誰能幫我寫乙個程式實現輸入乙個十進位制數n,輸出它的二進位制數呀?難道你不想幫幫她嗎?輸入 輸入有多個資料,資料以...