• paimai


    #include<iostream>
    
    int data[8][4]={0};
    
    int b[3][3]={1,1,0,
    
                 1,0,1,
    
                 0,1,1};
    
    int sp[17]={0};
    
    int n,m;   //n是拍卖品 m是人数
    
    int max=0;
    
    void dfs(int step,int mon)
    
    {   
    
        if(step==m)
    
        {
    
            if(mon>max)
    
            {
    
               max=mon;
    
            }
    
            return;
    
        }
    
        for(int i=0;i<3;i++)   //0不拍 1拍两个 2 拍三个
    
        {
    
            if(i==0)
    
            {
    
                dfs(step+1,mon);
    
            }
    
            if(i==1)
    
            {
    
                for(int j=0;j<3;j++)
    
                {
    
                    if(j==0)
    
                    {
    
                        if(sp[data[step][0]]==0&&sp[data[step][1]]==0)
    
                        {
    
                            sp[data[step][0]]=1;
    
                            sp[data[step][1]]=1;
    
                            dfs(step+1,mon+data[step][3]*2);
    
                            sp[data[step][0]]=0;
    
                            sp[data[step][1]]=0;
    
     
    
                        }
    
                    }
    
                    if(j==1)
    
                    {
    
                        if(sp[data[step][1]]==0&&sp[data[step][2]]==0)
    
                        {
    
                            sp[data[step][1]]=1;
    
                            sp[data[step][2]]=1;
    
                            dfs(step+1,mon+data[step][3]*2);
    
                            sp[data[step][1]]=0;
    
                            sp[data[step][2]]=0;
    
     
    
                        }
    
                    }
    
                    if(j==2)
    
                    {
    
                        if(sp[data[step][0]]==0&&sp[data[step][2]]==0)
    
                        {
    
                            sp[data[step][0]]=1;
    
                            sp[data[step][2]]=1;
    
                            dfs(step+1,mon+data[step][3]*2);
    
                            sp[data[step][0]]=0;
    
                            sp[data[step][2]]=0;
    
     
    
                         }
    
     
    
                }
    
            }
    
            }
    
            if(i==2)
    
            {
    
                if(sp[data[step][0]]==0&&sp[data[step][1]]==0&&sp[data[step][2]]==0)
    
                {
    
                    sp[data[step][0]]=1;
    
                    sp[data[step][1]]=1;
    
                    sp[data[step][2]]=1;
    
                    dfs(step+1,mon+data[step][3]*3);
    
                    sp[data[step][0]]=0;
    
                    sp[data[step][1]]=0;
    
                    sp[data[step][2]]=0;
    
     
    
                }
    
     
    
            }
    
        }
    
     
    
    }
    
     
    
    int main()
    
    {  
    
        freopen("input.txt","r",stdin);
    
        scanf("%d%d",&n,&m); //m 人数
    
        for(int i=0;i<m;i++)
    
        { 
    
            for(int j=0;j<4;j++)
    
            {
    
            scanf("%d",&data[i][j]);
    
            }
    
     
    
        }
    
        for(int i=0;i<m;i++)
    
        { 
    
            for(int j=0;j<4;j++)
    
            {
    
            printf("%d ",data[i][j]);
    
            }
    
     
    
            printf("
    ");
    
        }
    
     
    
        dfs(0,0);
    
        printf("%d",max);
    
     
    
     
    
    }
    
  • 相关阅读:
    bzoj1059: [ZJOI2007]矩阵游戏
    NEW
    bzoj2438: [中山市选2011]杀人游戏
    bzoj4554: [Tjoi2016&Heoi2016]游戏 二分图匹配
    【高精度】模板 (C++)
    【BZOJ4025】二分图 LCT
    读入/输出模板
    一些 Markdown 语法
    题解 P3732 [HAOI2017]供给侧改革
    题解 CF1598A Computer Game
  • 原文地址:https://www.cnblogs.com/452035305qq/p/6474444.html
Copyright © 2020-2023  润新知