程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 10130 - SuperSale

10130 - SuperSale

編輯:C++入門知識

[cpp]
描述:水題不解釋 
#include <cstdio>  
#include <cstring>  
int t,n,m,sum,p,q; 
int arr[1010][2],w[110],v[50010][2]; 
int main() 

   // freopen("a.txt","r",stdin);  
    scanf("%d",&t); 
    while(t--) 
    { 
        scanf("%d",&n); 
        for(int i=0; i<n; i++) scanf("%d %d",&arr[i][0],&arr[i][1]); 
        scanf("%d",&m); 
        sum=0; 
        for(int i=0; i<m; i++) 
        { 
            scanf("%d",&w[i]); 
            if(w[i]>sum) sum=w[i]; 
        } 
        memset(v,0,sizeof(v)); 
        v[0][0]=1; 
        for(int i=0; i<n; i++) 
            for(int j=sum-1; j>=0; j--) if(v[j][0]) 
                { 
                    p=j+arr[i][1]; 
                    q=v[j][1]+arr[i][0]; 
                    if(p<=sum&&q>v[p][1]) 
                    { 
                        v[p][0]=1; 
                        v[p][1]=q; 
                    } 
                } 
        p=0; 
        for(int i=0; i<m; i++) 
        { 
            q=0; 
            for(int j=w[i]; j>=0; j--) 
                if(v[j][0]&&v[j][1]>q) q=v[j][1]; 
            p+=q; 
        } 
        printf("%d\n",p); 
    } 
    return 0; 

描述:水題不解釋
#include <cstdio>
#include <cstring>
int t,n,m,sum,p,q;
int arr[1010][2],w[110],v[50010][2];
int main()
{
   // freopen("a.txt","r",stdin);
    scanf("%d",&t);
    while(t--)
    {
        scanf("%d",&n);
        for(int i=0; i<n; i++) scanf("%d %d",&arr[i][0],&arr[i][1]);
        scanf("%d",&m);
        sum=0;
        for(int i=0; i<m; i++)
        {
            scanf("%d",&w[i]);
            if(w[i]>sum) sum=w[i];
        }
        memset(v,0,sizeof(v));
        v[0][0]=1;
        for(int i=0; i<n; i++)
            for(int j=sum-1; j>=0; j--) if(v[j][0])
                {
                    p=j+arr[i][1];
                    q=v[j][1]+arr[i][0];
                    if(p<=sum&&q>v[p][1])
                    {
                        v[p][0]=1;
                        v[p][1]=q;
                    }
                }
        p=0;
        for(int i=0; i<m; i++)
        {
            q=0;
            for(int j=w[i]; j>=0; j--)
                if(v[j][0]&&v[j][1]>q) q=v[j][1];
            p+=q;
        }
        printf("%d\n",p);
    }
    return 0;
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved