• hdu3270Arranging Your Team(dfs)


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

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 #include<vector>
     7 #include<map>
     8 #include<string>
     9 using namespace std;
    10 #define INF 0x3f3f3f
    11 map<string,int>f;
    12 struct node
    13 {
    14     char s[101],po[35];
    15     int v,k;
    16 }p[30];
    17 int pa[30],flag,w[30][30],maxz;
    18 void dfs(int x,int a,int b,int c,int d,int sum)
    19 {
    20     int i,j;
    21     if(x==24&&a==4&&b==4&&c==2&&d==1)
    22     {
    23         for(i =1; i <= 11 ; i++)
    24             for(j = i+1 ; j <= 11 ; j++)
    25             sum+=w[pa[i]][pa[j]];
    26         maxz = max(maxz,sum);
    27         flag = 1;
    28         return ;
    29     }
    30     if(x>23) return ;
    31     pa[a+b+c+d+1] = x;
    32     if(p[x].k == 4)
    33     {
    34         if(d<1)
    35         dfs(x+1,a,b,c,d+1,sum+p[x].v);
    36     }
    37     else if(p[x].k==2)
    38     {
    39         if(b<4)
    40         dfs(x+1,a,b+1,c,d,sum+p[x].v);
    41     }
    42     else if(p[x].k==3)
    43     {
    44         if(c<2)
    45         dfs(x+1,a,b,c+1,d,sum+p[x].v);
    46     }
    47     else if(a<4)
    48     {
    49         dfs(x+1,a+1,b,c,d,sum+p[x].v);
    50     }
    51     dfs(x+1,a,b,c,d,sum);
    52 }
    53 int main()
    54 {
    55     int i,n,v;
    56     char s1[35],s2[35];
    57     while(cin>>p[1].s>>p[1].v>>p[1].po)
    58     {
    59         f.clear();
    60         f[p[1].s] = 1;
    61         maxz=-INF;flag=0;
    62         memset(w,0,sizeof(w));
    63         for(i = 2; i <=23 ;i++)
    64         {
    65             cin>>p[i].s>>p[i].v>>p[i].po;
    66         }
    67         for(i = 1; i <= 23 ; i++)
    68         {
    69             if(strcmp(p[i].po,"defender")==0)
    70             p[i].k = 1;
    71             else if(strcmp(p[i].po,"midfielder")==0)
    72             p[i].k = 2;
    73             else if(strcmp(p[i].po,"striker")==0)
    74             p[i].k = 3;
    75             else p[i].k = 4;
    76             f[p[i].s] = i;
    77         }
    78         cin>>n;
    79         for(i = 1; i <= n ; i++)
    80         {
    81             getchar();
    82             cin>>s1>>s2>>v;
    83             w[f[s1]][f[s2]] = v;
    84             w[f[s2]][f[s1]] = v;
    85         }
    86         dfs(1,0,0,0,0,0);
    87         if(!flag) puts("impossible");
    88         else printf("%d
    ",maxz);
    89     }
    90     return 0;
    91 }
    View Code
  • 相关阅读:
    js操作cookie
    非常好的前端报表控件,值得收藏一下
    html5 跳到拨打电话功能
    C# 判断客户端是PC还是手机登录
    Oracle RAW类型使用
    多条Json数据转换为泛型数据
    将指定的对象序列化成 JSON 数据。
    ASP.NET MVC4(Razor)从客户端中检测到有潜在危险的 Request.Form 值
    http://v3.bootcss.com/getting-started/
    SQL日期比较 .
  • 原文地址:https://www.cnblogs.com/shangyu/p/3405595.html
Copyright © 2020-2023  润新知