宅男计划
題解
$dp$不行考慮三分
發(fā)現(xiàn)單峰
1.理性打表,得到單峰
2.感性思考,你會(huì)發(fā)現(xiàn)你買食物次數(shù)越多,你錢數(shù)越少,你買的好食品更多,你買食物次數(shù)越少,你錢數(shù)越多,然而你必須買一些價(jià)格貴保質(zhì)期長(zhǎng)彌補(bǔ)次數(shù)少.
單峰,我們?nèi)志屯炅?其實(shí)也可以模擬退火,然而我參數(shù)爆炸了一直60分)
那么$check$怎么寫?
貪心,
考慮排序
考慮先以保質(zhì)期排序,然后再以價(jià)格排序去掉垃圾(在保質(zhì)期相同不需要買更貴的,那么它就是垃圾完全沒(méi)必要買它)
考慮以價(jià)格排序,在保質(zhì)期相同時(shí)買保質(zhì)期長(zhǎng)的
用保質(zhì)期排序那么先買保質(zhì)期長(zhǎng)的,還是保質(zhì)期短的難以確定,所以嘗試以價(jià)格為基礎(chǔ)排序
我的貪心先貪每一次送外賣都買的,再貪不能全買的,兩個(gè)相加
ll check(ll x){ll left=m-x*f;//計(jì)算還剩多少錢ll w=left/x;//計(jì)算每一輪吃了多少ll left2=left-w*x;//計(jì)算當(dāng)無(wú)法再每一倫都吃情況下剩多少錢ll now=0,ans=0,j;//now每一輪活的天數(shù),ans計(jì)算剩余不能每一輪都吃能活多少天if(left<0) return 0;//若所有錢全用來(lái)買外賣了return 0 for(ll i=1;i<=n;i++){ll fen;if(a[i].t>=now&&(w-a[i].val>=0)){fen=min(a[i].t-now+1,w/a[i].val);//能買多少,注意和(a[i].t-now+1)w-=fen*a[i].val;//剩下錢數(shù)減少now+=fen;//每一輪活了now天}j=i;if(w-a[i].val<0) break;}left2+=w*x;//剩下錢累加在left2上ll p;//和上文類似for(ll i=j;i<=n;i++) {if((a[i].t>=now)&&(left2-a[i].val>=0)) {p=min(left2/a[i].val,x);ans+=p;left2-=p*a[i].t;}if(ans>0)break;}return ans+now*x; }
?總代碼我就不放了,我的AC代碼有些問(wèn)題,等改了再放
?
扯淡
一開(kāi)始以為是dp,然后愉快的推式子,一看范圍
好像$dp$不行,我推的dp以M為基礎(chǔ),總覺(jué)得$dp$很玄學(xué)
最裸的$dp$? :$f[i][j]$表示運(yùn)了$i$趟食物,剩余錢$j$
$f[i][j]=f[i-1][j-?]+?$總算寫出來(lái),然而樣例過(guò)不了.假設(shè)你每買一個(gè)你就多活一天
$f[i][j]$表示不了過(guò)期然后
$f[i][j][k]$表示$i趟j容積k保質(zhì)期$這樣可以推了
$f[i][j][k]=f[i][j-w][k-1]$?? $f[i+1][j][0]=f[i][j-w][last]$
本來(lái)就時(shí)空雙爆
考慮二分答案?,不是單調(diào)的,模擬退火?
于是我開(kāi)始愉快的退火了,
然而$check$又非常難寫,總算過(guò)了樣例然而交上去
?
?我以為我調(diào)參不行然而我改了也還是$10$分發(fā)現(xiàn)$check$寫錯(cuò)了,交一發(fā)$10$
改成三分$30$分
奇妙的是改了改三分變成了$50$,我認(rèn)為我三分板子錯(cuò)了,去看三分板子,然而并不是三分錯(cuò)了
覺(jué)得$check$太惡心了換了種寫法在洛谷上交突然$70$分,然后我忘了我改了哪里突然就又變成了$90$分,那時(shí)是$19:27$我覺(jué)得勝利在望
然后改了很多地方仍然$90$,覺(jué)得很玄學(xué),開(kāi)始覺(jué)得自己爆$long long$事實(shí)上它確實(shí)爆了$long long$,我$check$寫法太$丑$三個(gè)*連在一起爆炸了
然后又改回原來(lái)$check$一直$50$? $50$? $50$? $50$,最后還是寫法丑掛掉了
我的比較函數(shù)掛掉了
我不知道應(yīng)該買先過(guò)期,還是保質(zhì)期長(zhǎng)的,然而我又以時(shí)間排序,然后他就掛了
改成買便宜的,$AC$了
事實(shí)上以時(shí)間排序可以$AC$
去掉垃圾食品就完了,我又圖省事沒(méi)去掉垃圾,
你先以時(shí)間排序,再以價(jià)值排序也可以然而我沒(méi)采取任何一種方案
然后我就一直掛一直掛
轉(zhuǎn)載于:https://www.cnblogs.com/znsbc-13/p/11379938.html
總結(jié)
- 上一篇: linux下跟服务相关的路径是?
- 下一篇: 虚函数探秘