zoukankan      html  css  js  c++  java
  • hdu 3720 Arranging Your Team 夜

    http://acm.hdu.edu.cn/showproblem.php?pid=3720

    水题

    代码:

    #include<iostream>
    #include<stdio.h>
    #include<string.h>
    #include<math.h>
    #include<algorithm>
    #include<vector>
    #include<set>
    #include<queue>
    #include<map>
    #include<string>
    #include <iomanip>
    using namespace std;
    const int INF=0x3f3f3f3f;
    const int N=30;
    struct node
    {
        int k,id;
        char name[50];
    }mem[N];
    int value[N][N];
    bool had[N];
    int ans;
    int which(char stmp[])
    {
        for(int i=1;i<=23;++i)
        if(strcmp(stmp,mem[i].name)==0)
        return i;
    }
    void dfs(int x,int keep,int def,int mid,int st)
    {
        if(x==24)
        {
            if(!(keep==1&&def==4&&mid==4&&st==2))
            return ;
            int num=0;
            for(int i=1;i<=23;++i)
            {
                if(had[i])
                {
                    num+=mem[i].k;
                    for(int j=i+1;j<=23;++j)
                    {
                        if(had[j])
                        {
                            num+=value[i][j];
                        }
                    }
                }
            }
            if(num>ans)
            ans=num;
            return ;
        }
        dfs(x+1,keep,def,mid,st);
        bool in=false;
        if(mem[x].id==1&&keep<1)
        {++keep;in=true;}
        if(mem[x].id==2&&def<4)
        {++def;in=true;}
        if(mem[x].id==3&&mid<4)
        {++mid;in=true;}
        if(mem[x].id==4&&st<2)
        {++st;in=true;}
        if(in)
        {
            had[x]=true;
            dfs(x+1,keep,def,mid,st);
            had[x]=false;
        }
    }
    int F(char stmp[])
    {
        if(strcmp(stmp,"goalkeeper")==0)
        return 1;
        if(strcmp(stmp,"defender")==0)
        return 2;
        if(strcmp(stmp,"midfielder")==0)
        return 3;
        return 4;
    }
    int main()
    {
        freopen("data.txt","r",stdin);
        char stmp[50];
        while(scanf("%s %d %s",mem[1].name,&mem[1].k,stmp)!=EOF)
        {
           mem[1].id=F(stmp);
           for(int i=2;i<=23;++i)
           {
               scanf("%s %d %s",mem[i].name,&mem[i].k,stmp);
               mem[i].id=F(stmp);
           }
           memset(value,0,sizeof(value));
           int m;
           cin>>m;
           while(m--)
           {
               char stmp1[50],stmp2[50];
               int v;
               scanf("%s %s %d",stmp1,stmp2,&v);
               int i=which(stmp1);
               int j=which(stmp2);
               value[i][j]=value[j][i]=v;
           }
           memset(had,false,sizeof(had));
           ans=-INF;
           dfs(1,0,0,0,0);
           if(ans==-INF)
           printf("impossible\n");
           else
           printf("%d\n",ans);
        }
        return 0;
    }
    
    
    
  • 相关阅读:
    浏览器渲染流程
    MVC模式
    传统的DOM是如何进行渲染的
    报文的概念及理解
    单页面开发与多页面开发的优缺点
    第4次作业
    售票系统
    第三次作业
    第二次作业
    第一次作业
  • 原文地址:https://www.cnblogs.com/liulangye/p/2746748.html
Copyright © 2011-2022 走看看