zoukankan      html  css  js  c++  java
  • ADV-拍卖

    #include<stdio.h>
    int shangpin[20];
    int p[10][4];
    int vlue;
    int data[10];
    int n,m;
    void dfs(int step,int money){
        if(step==n){
            if(money>vlue) vlue=money;
        return;
        }
                for(int j=0;j<5;j++){            //每个人五种情况  不买、买两个(3)、买三个 
                    if(j==0){                 //买两个商品 0与1
                        if(shangpin[p[step][0]]==1||shangpin[p[step][1]]==1)
                            continue;
                        else {
                            shangpin[p[step][0]]=1;
                            shangpin[p[step][1]]=1;
                            money+=2*p[step][3];
                            dfs(step+1,money);
                            shangpin[p[step][0]]=0;
                            shangpin[p[step][1]]=0;
                            money-=2*p[step][3];
                        }
                    }
                    if(j==1){                 //买两个商品 1与2
                        if(shangpin[p[step][2]]==1||shangpin[p[step][1]]==1)
                            continue;
                        else {
                            shangpin[p[step][2]]=1;
                            shangpin[p[step][1]]=1;
                            money+=2*p[step][3];
                            dfs(step+1,money);
                            shangpin[p[step][2]]=0;
                            shangpin[p[step][1]]=0;
                            money-=2*p[step][3];
                        }
                    }
                    if(j==2){                  //买两个商品 0和2
                        if(shangpin[p[step][0]]==1||shangpin[p[step][2]]==1)
                            continue;
                        else {
                            shangpin[p[step][0]]=1;
                            shangpin[p[step][2]]=1;
                            money+=2*p[step][3];
                            dfs(step+1,money);
                            shangpin[p[step][0]]=0;
                            shangpin[p[step][2]]=0;
                            money-=2*p[step][3];
                        }
                    }
                    if(j==3){                  //买三个商品商品 0 1和2
                        if(shangpin[p[step][0]]==1||shangpin[p[step][1]]==1||shangpin[p[step][2]]==1)
                            continue;
                        else {
                            shangpin[p[step][0]]=1;
                            shangpin[p[step][1]]=1;
                            shangpin[p[step][2]]=1;
                            money+=3*p[step][3];
                            dfs(step+1,money);
                            shangpin[p[step][0]]=0;
                            shangpin[p[step][1]]=0;
                            shangpin[p[step][2]]=0;
                            money-=3*p[step][3];
                        }
                    }
                    if(j==4){
                        dfs(step+1,money);
                    }
                }
    
    }
    int main(){
        scanf("%d%d",&n,&m);
        for(int i=0;i<m;i++)
            scanf("%d%d%d%d",&p[i][0],&p[i][1],&p[i][2],&p[i][3]);
        dfs(0,0);
        printf("%d",vlue);
    }
  • 相关阅读:
    iOS 将对象的属性和属性值拆分成key、value,通过字符串key来获取该属性的值
    [IOI2005] Riv 河流
    [洛谷P4549] [模板] 裴蜀定理
    [NOIp2013] 货车运输
    [NOIp2015] 运输计划
    18.10.01模拟赛总结
    [洛谷P3369] 普通平衡树 Treap & Splay
    [NOIp2016] 组合数问题
    [洛谷P4777] [模板] 扩展中国剩余定理
    [洛谷P3384] [模板] 树链剖分
  • 原文地址:https://www.cnblogs.com/lvcoding/p/6595552.html
Copyright © 2011-2022 走看看