| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
我说不清楚了,贴一下关键的部分吧,现在对DP一点感觉都没有了,状态都不会设计了In Reply To:做法就是做multiple什么的那样 Posted by:frkstyc at 2005-04-17 19:19:57 qsort(b + 1, N, sizeof(BLOCK), comp); // 按a_i排序
for(i = 1; i <= N; i++)
{
int m = 0;
memset(p2, 0, sizeof(p2)); // hash当前的和
for(j = 0; j < n; j++)
{
int h = p1[j]; // 上一个的第j个和
int c = min((b[i].a - h) / b[i].h, b[i].c);
if(c < 0)
{
break; // j个放不下j+1个更不可能
}
for(k = 0; k <= c; k++)
{
p2[h] = 1; // hash记录
h += b[i].h;
}
c = h - b[i].h;
if(c > m)
{
m = c; // 更新当前的最大
}
}
n = 0;
for(j = 0; j <= m; j++)
{
if(p2[j] != 0)
{
p1[n] = j; // 把hash做成一般的表
n++;
}
}
if(p1[n - 1] > M)
{
M = p1[n - 1]; // 更新全局最大
}
}
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator