這是個好題
考察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...