pid227 / [jsoi2007]乳酪☆
檢視最後一次評測記錄
題目評價
質量
4
★★★★★
★★★★☆
★★★☆☆
★★☆☆☆
★☆☆☆☆
0%16.6%
16.6%
16.6%
50%
★
★
★
★
☆
通過統計
最短耗時
0ms
最小記憶體
0kb
題目標籤
型別
貪心模擬
**jsoi2007
題目描述
乳酪和pizza一樣,是一小塊扇形的固體。在乳酪從工廠裡生產出來的時候,一共有4種形狀,編號為1~4,分別是圓心角為72º;;,144º;;,216º;;,288º;;的扇形。乳酪的盒子是圓形的,半徑和乳酪的半徑一致。也就是說,一塊1號乳酪和一塊4號乳酪可以恰好裝入乙個盒子,一塊2號乳酪和一塊3號乳酪可以恰好裝入乙個盒子。
你的任務是寫乙個程式,計算給定的乳酪最多可以裝滿幾個盒子。
輸入格式
一行,四個數字,表示1~4號乳酪的數量,都在0~100之內
輸出格式
乙個數字,表示可以裝滿幾個盒子
樣例輸入
樣例輸出
題解:我們先將題目稍變一下:有a,b,c,d個體積為1,2,3,4的物體,問能裝滿多少個體積為5的箱子
然後我們不難列出所有能湊的式子:
5*1 3*1+1*2 1*1+2*2 2*1+1*3 1*2+1*3 1*1+1*4 (乘號前為數量,乘號後為體積)
我們發現1個箱子中最多只能裝下1個4,那我們不妨先將4裝入d個箱子中
我們又發現1個箱子中最多只能裝下1個3,,並且不能和4放在一塊,那不妨再將3放入c個箱子中
現在4和3的價值已經被榨乾了,不管它們了(貪心)
然後我們考慮已經裝了4的箱子是否要裝個1將之填滿呢?
答案是肯定的,因為「對於1而言」已經沒有更划算的買賣了(貪心):只要消耗1個1,而且不用消耗2,就能得到1個滿箱子
我們再考慮已經裝了1個3的箱子,有2個問題?是裝它還是裝空箱子?如果裝的話,裝2個1還是裝1個2?
裝空箱子猜猜就是不划算的,而且無論使用「5*1 3*1+1*2 1*1+2*2」中的哪乙個式子,都有辦法用它們中的一部分湊到3體積,
也就是說,用1、2來裝滿5體積的話,相當於先裝了3體積,再裝剩下的2體積。那我還不如直接用已經裝了3體積的那些箱子,少耗資源多好啊(貪心)。
那下乙個問題,裝2個1還是裝1個2?
當然是裝1個2了,因為1個2能做的事,2個1都能做,反之則不一定,因為我可以把2個1拆開用。既然如此,讓沒用的2上吧(貪心)。
小結一下,以上也就是先將1、4盡可能組合,2、3盡可能組合。
如果2沒有了,而那些已經裝了3的盒子還有並且還有1,就用2個1來裝。
現在那些裝了1個4或1個3的箱子已經處理完了,我們來處理手頭剩下的1和2(如果有的話)。
還是老樣子,2沒有用,讓它先上,先用2個2,1個1裝,2不夠了就用1個2,3個1裝,還不夠就用5個1裝。
現在1、2、3、4都被榨乾了,剩下的也都湊不了5了~
注意: a-=b/2; b%=2; 順序不能換呀...
**僅供參考:
#includeusing namespace std;
int main()
else
if (b>=c)
sum+=a/5;
a%=5;
} else
} else
else
sum+=a/5;
a%=5;
} cout<
JSOI2007乳酪題解
題目描述 乳酪和pizza一樣,是一小塊扇形的固體。在乳酪從工廠裡生產出來的時候,一共有4種形狀,編號為1 4,分別是圓心角為72 144 216 288 的扇形。乳酪的盒子是圓形的,半徑和乳酪的半徑一致。也就是說,一塊1號乳酪和一塊4號乳酪可以恰好裝入乙個盒子,一塊2號乳酪和一塊3號乳酪可以恰好裝...
JSOI2007 建築搶修 貪心
可以考慮 dp 但是很顯然 n 2 降不下來.然後考慮貪心,首先,絕對的正確的是,在同等的情況下,給後面的留更多的時間.首先按照 t 2 排序.然後我們維護乙個大根堆 每修理一棟建築 我們就把這棟建築的t1值加入堆 若當前無法修理 我們判斷堆頂是否比這棟建築的t1大 如果大 取消修理堆頂,改為修理當...
題解 JSOI2007 建築搶修
貪心加優先佇列 先對每個建築物的t值從小到大進行排序 當某個建築物無法按時完成時 在已經選擇的建築物裡選擇比這個建築物用時長的替換下來,並且放棄這個建築物 1 include2 include3 include4 include5 using namespace std 6int n,ans,now...