Hdu 4415 Assassin's Creed 【贪心】.cpp
題意:
某A有一個(gè)劍 堅(jiān)韌度為m
他可以用這個(gè)劍去攻打別的隊(duì)伍
殺掉第 i 個(gè)隊(duì)伍需要消耗的堅(jiān)韌度為 Ai 并可以用得到的劍去打別的隊(duì)(Bi個(gè))
但是打完別的隊(duì)這個(gè)劍就不能用了
問(wèn)怎么用最少的堅(jiān)韌度擊敗最多的隊(duì)伍
?
給出T組樣例
每個(gè)樣例給出n m n表示有n個(gè)隊(duì)
接下來(lái)n行給出Ai Bi 表示殺掉這個(gè)隊(duì)需要消耗的堅(jiān)韌度和殺掉這個(gè)隊(duì)可以得到的劍可以殺的隊(duì)伍數(shù)
輸出可以殺掉的最多的隊(duì)和最少花費(fèi)的堅(jiān)韌度
?
思路:
可以想到的就是 殺掉一個(gè)bi != 0理論上就可以殺掉所有 bi != 0 的隊(duì)伍
×××××錯(cuò)的思路..
把bi != 0 和 bi == 0分成兩組
先用把一個(gè)bi != 0里需要用的堅(jiān)韌度最少的隊(duì)伍殺掉..然后用得到的劍殺掉別的bi != 0的隊(duì)伍
然后用這些劍去把 bi == 0 的殺掉
當(dāng)這些得到的劍用完之后就用自己的劍盡量多得把別的隊(duì)伍殺掉
×××××反思ing..
這個(gè)方法沒(méi)考慮到的問(wèn)題就是
4 2
1 1
1 1
1 0
7 0
這組數(shù)據(jù)如果用上面的思路
結(jié)果就會(huì)是 3 1?
而最優(yōu)解應(yīng)該是 4 2
問(wèn)題就出在得到的劍可能不用來(lái)殺 bi != 0而用來(lái)殺 bi == 0但是需要的堅(jiān)韌度 ai 大的隊(duì)伍
可以得到更好的答案
?
所以
√√√√√√√√√√√√√√√正確的思路
分兩種情況考慮
①. 只殺 bi == 0 的隊(duì)伍
②. 殺 bi != 0 和 bi == 0的隊(duì)伍
這樣就要考慮有多少個(gè) bi != 0的隊(duì)伍是用自己的劍殺的
?
所以應(yīng)該分兩種情況求值
然后第二種情況就遍歷用自己的劍殺多少個(gè)bi == 0 的隊(duì)伍
求得最優(yōu)解
?
Tips:
好吧~我表示我的變量總是弄錯(cuò)
這道題主要是把 bi == 0 和 bi != 0 分組討論
?
Code:
View Code?
題目鏈接:
轉(zhuǎn)載于:https://www.cnblogs.com/Griselda/archive/2012/09/26/2704614.html
總結(jié)
以上是生活随笔為你收集整理的Hdu 4415 Assassin's Creed 【贪心】.cpp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: github客户端的使用
- 下一篇: WinForm:进度条的实现(异步)