Advertisement

《信息学奥赛一本通》例9.13 是庆功会

阅读量:

问题描述

复制代码
    #include<cstdio>
    #include<cstring>
    int max(int x,int y)
    {
    return x>y?x:y;
    }
    int dp[510][6010],que[6010],v[510],w[510],c[510];
    int main()
    {
    freopen("party.in","r",stdin);
    freopen("party.out","w",stdout); 
    int i,j,k,l,m,n,p,q,x,y,z,hd,tl;
    scanf("%d%d",&n,&m);
    for (i=1;i<=n;i++)
      scanf("%d%d%d",&v[i],&w[i],&c[i]);
    for (i=1;i<=n;i++)
      for (j=0;j<v[i];j++)
      {
        hd=1;
        tl=0;
        for (k=0;k*v[i]+j<=m;k++)
        {
            while (hd<=tl&&k-que[hd]>c[i]) hd++;
            while (hd<=tl&&dp[i-1][k*

全部评论 (0)

还没有任何评论哟~