省選專練ZJOI2005午餐

2021-08-15 17:10:06 字數 736 閱讀 8170

這是個好題

考察dp優化,dp,貪心,01揹包變種。

好首先對吃飯時間從大到小排序,因為一隊人打飯時長總和一樣。

dp(i,j)表示前i個人,第一組用j的時間。

放第乙個揹包:dp[i][j]=min( max(dp[i-1][j-a[i].w],j+a[i].v) )

放第二個揹包:dp[i][j]=min( max(dp[i-1][j],sum[i]-j+a[i].v) )

最會遍歷一遍。

然後就是滾動陣列優化。

#include#include#include#include#define n 50001

using namespace std;

int dp[2][n]=;

struct goodsa[n];

int n;

int sum[n]=;

bool cmp(goods a,goods b)

int main()

sort(a+1,a+1+n,cmp);

for(int i=1;i<=n;i++)

int cur=0;

int pre;

for(int i=1;i<=n;i++)

if(sum[i]-j>=a[i].w)

} }int ans=(int)0x7fffffff;

for(int i=0;i<=sum[n];i++)

cout<}

省選專練ZJOI2012旅遊

stl在開o2後自然是大水題。考點 樹的直徑。第一二次構圖。把每乙個三角塊相鄰的建邊。怎麼建?stl 你都做到這個題了map hash兩個值鐵定會吧。但是zjoi沒有那麼好心,不過你也有70分了。於是這樣 把兩點建邊。排個序。相同的時候連起來。樹的直徑。很多人求複雜了。樹的直徑一遍dfs就可以,不需...

ZJOI2005 午餐 貪心,動態規劃

上午的訓練結束了,thu acm小組集體去吃午餐,他們一行n人來到了著名的十食堂。這裡有兩個打飯的視窗,每個視窗同一時刻只能給乙個人打飯。由於每個人的口味 以及胃口 不同,所以他們要吃的菜各有不同,打飯所要花費的時間是因人而異的。另外每個人吃飯的速度也不盡相同,所以吃飯花費的時間也是可能有所不同的。...

省選專練SCOI2005掃雷

這是乙個智商檢測題 狀壓dp。如果你玩過掃雷,並且內心有一棵平衡樹 bb數 你就會發現答案只有0,1,2共計三種。於是法一 模擬。答案對不對只會取決於第乙個是什麼。模擬兩邊就好了。includeusing namespace std int i,j,k,m,n,ans 2,a 10001 b 100...