比賽時用的是列舉,思路基本對了,但少考慮了一種情況,就一直wa。
首先用sum[i,j]記錄第i中科技公升到j即所能獲得的利潤,s[j]記錄所有科技公升到j級時所獲得的利潤。
接下來從0 ~ m列舉所有科技最小的等級為i時,能夠獲得的利潤。詳見**。
#include#include#include#include#include#includeusing namespace std;
typedef long long ll;
const ll inf=1e18; //inf要設得大一點,有一次因為太小了而wa
const int maxn=1e3+5;
ll c[maxn][maxn],d[maxn];
ll sum[maxn][maxn],s[maxn];
int main()
}for(int i=1;i<=m;++i)
scanf("%lld",&d[i]);
s[0]=0;
for(int j=1;j<=m;++j)
ll ans=0;
for(int i=0;i<=m;++i)
}if(cnt==n) temp-=mi; //比賽就是少考慮了這種情況,當所有科技都有戲時,當前最小的等級就不是i了,與假設相悖,要減去mi
}ans=max(ans,temp);
}printf("case #%d: %lld\n",++kase,ans);
}return 0;
}
小結:3層迴圈暴力列舉也能ac,還是有點意想不到的,比賽時擔心超時,一直想著怎麼優化,還是想太多了,下次遇到列舉的題先暴力打一遍試水吧。 2019牛客暑期多校訓練營(第六場)
rank solvedab cdef ghij 332 820 3 10o o o o 當場通過 賽後通過 尚未通過 solved by viscaria viscaria s solution upsolved by feynman1999 feynman1999 s solution upsol...
2019牛客暑期多校訓練營(第六場)D Move
傳送門 題意 你有n件行李,有k個箱子體積相同的箱子,遵循下面的規則將行李放進箱子裡面 每次都取當前最大的可以放進箱子的行李放進箱子,如果該箱子放不進任何行李那麼就換乙個新的箱子再按照這一條規則進行放行李 請問箱子最小的體積是多少可以放進所有行李 思路 還是菜雞的我比賽的時候沒有思路,也木有想法,賽...
2019牛客暑期多校訓練營(第六場)D Move
題目大意 n個物品及其體積,用k個相同的箱子裝,求能裝下這n個物品的箱子的最小容積。對於乙個箱子,每次都先裝能裝下的最大的物品,不能滿足則開始裝下乙個箱子。思路 ans max vol i ceil sum vol i k while ans 直到能裝下所有物品。1 include2 using n...