zoukankan      html  css  js  c++  java
  • Special Fish HDU

    Special Fish

     HDU - 3395

    题意:n条鱼,被攻击后会产卵,如果i攻击j,那么后代会有g[i]^g[j]的值,求所有后代和的最大值。

    KM

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int inf=0x3f3f3f3f;
     4 const int maxn=110;
     5 int c[maxn][maxn];
     6 int vb[maxn],vg[maxn],eb[maxn],eg[maxn];
     7 int mc[maxn],d;
     8 int g[maxn];
     9 int n;
    10 int dfs(int x){
    11     vg[x]=1;
    12     for(int i=0;i<n;i++){
    13         if(vb[i]) continue;
    14         int gap=eg[x]+eb[i]-c[x][i];
    15         if(gap==0){
    16             vb[i]=1;
    17             if(mc[i]==-1||dfs(mc[i])){
    18                 mc[i]=x;
    19                 return 1;
    20             }
    21         }else d=min(d,gap);
    22     }
    23     return 0;
    24 }
    25 int KM(){
    26     memset(mc,-1,sizeof(mc));
    27     memset(eb,0,sizeof(eb));
    28     for(int i=0;i<n;i++){
    29         eg[i]=c[i][0];
    30         for(int j=1;j<n;j++)
    31             eg[i]=max(c[i][j],eg[i]);
    32     }
    33 
    34     for(int i=0;i<n;i++){
    35         while(1){
    36             memset(vb,0,sizeof(vb));
    37             memset(vg,0,sizeof(vg));
    38             d=inf;
    39             if(dfs(i)) break;
    40             for(int j=0;j<n;j++) {
    41                 if(vg[j]) eg[j]-=d;
    42                 if(vb[j]) eb[j]+=d;
    43             }
    44         }
    45     }
    46     int ans=0;
    47     for(int i=0;i<n;i++)
    48         ans+=c[mc[i]][i];
    49     return  ans;
    50 }
    51 
    52 int main(){
    53     char cc[110];
    54     while(scanf("%d",&n)&&n){
    55         memset(c,0,sizeof(c));
    56         for(int i=0;i<n;i++)scanf("%d",&g[i]);
    57         for(int i=0;i<n;i++){
    58            scanf("%s",cc);
    59             for(int j=0;j<n;j++){
    60                 if(cc[j]=='1') c[i][j]=g[i]^g[j];
    61             }
    62         }
    63         printf("%d
    ",KM());
    64     }
    65 
    66 }
    View Code
  • 相关阅读:
    js学习
    console用法
    Oracle 数据库加密
    Oracle 内存结构
    Oracle 锁
    Oracle 索引
    怎么理解“平均负载”
    Oracle分区表
    Oracle 数据库表(常见的表)
    PostgreSQL 监控磁盘使用
  • 原文地址:https://www.cnblogs.com/yijiull/p/7389685.html
Copyright © 2011-2022 走看看