当前位置: 首页 > news >正文

HDU 3395 Special Fish

HDU_3395

    我们可以把一条鱼拆成两个点分别代表攻击和被攻击,然后按题意对G[i][j]==1的边的权值设为value[i] ^ value[j],之后用KM算法求二分图的最优匹配即可。

#include<stdio.h>
#include<string.h>
#define MAXD 110
#define INF 1000000000
int yM[MAXD], G[MAXD][MAXD], N, value[MAXD];
int A[MAXD], B[MAXD];
int visx[MAXD], visy[MAXD], slack;
char b[MAXD];
int init()
{
int i, j;
scanf("%d", &N);
if(!N)
return 0;
for(i = 0; i < N; i ++)
scanf("%d", &value[i]);
for(i = 0; i < N; i ++)
{
scanf("%s", b);
for(j = 0; j < N; j ++)
{
G[i][j] = b[j] - '0';
if(G[i][j])
G[i][j] = (value[i] ^ value[j]);
}
}
return 1;
}
int searchpath(int u)
{
int v, temp;
visx[u] = 1;
for(v = 0; v < N; v ++)
if(!visy[v])
{
temp = A[u] + B[v] - G[u][v];
if(temp == 0)
{
visy[v] = 1;
if(yM[v] == -1 || searchpath(yM[v]))
{
yM[v] = u;
return 1;
}
}
else if(temp < slack)
slack = temp;
}
return 0;
}
void KM()
{
int i, j, u;
for(i = 0; i < N; i ++)
{
A[i] = 0;
for(j = 0; j < N; j ++)
if(G[i][j] > A[i])
A[i] = G[i][j];
}
memset(B, 0, sizeof(B));
memset(yM, -1, sizeof(yM));
for(u = 0; u < N; u ++)
for(;;)
{
memset(visx, 0, sizeof(visx));
memset(visy, 0, sizeof(visy));
slack = INF;
if(searchpath(u))
break;
for(i = 0; i < N; i ++)
{
if(visx[i])
A[i] -= slack;
if(visy[i])
B[i] += slack;
}
}
}
void printresult()
{
int i, res = 0;
for(i = 0; i < N; i ++)
res += G[yM[i]][i];
printf("%d\n", res);
}
int main()
{
while(init())
{
KM();
printresult();
}
return 0;
}


相关文章:

  • dedecms5.7技术:“更新数据库archives表时出错,请检查
  • 如何在Ubuntu 11.10下安装Java
  • ccnp 1. arp_router
  • MySQL Federated引擎实现多主一备
  • corejavaday03
  • 临时表空间   默认临时表空间
  • 幻灯片效果在网页设计中应用的55个优秀案例(下篇)
  • 把用户名连成字符串的sql语句.
  • 谈学习方法
  • 注册虚拟主机,架设个人网站
  • 大话IT职场之你适合创业吗?
  • [转载] 百科全说——何裕民:终身吃药大反驳(10-12-14)
  • GCC基本概念及实践(2)
  • jbpm5.1介绍(1)
  • 【转】osworkflow教程
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • HTML中设置input等文本框为不可操作
  • Javascript 原型链
  • JavaScript类型识别
  • Magento 1.x 中文订单打印乱码
  • Python socket服务器端、客户端传送信息
  • React Transition Group -- Transition 组件
  • 程序员最讨厌的9句话,你可有补充?
  • 从零到一:用Phaser.js写意地开发小游戏(Chapter 3 - 加载游戏资源)
  • 更好理解的面向对象的Javascript 1 —— 动态类型和多态
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 开源SQL-on-Hadoop系统一览
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 写给高年级小学生看的《Bash 指南》
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 应用生命周期终极 DevOps 工具包
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • ###项目技术发展史
  • #、%和$符号在OGNL表达式中经常出现
  • #define 用法
  • #Java第九次作业--输入输出流和文件操作
  • #QT项目实战(天气预报)
  • $ git push -u origin master 推送到远程库出错
  • $.each()与$(selector).each()
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (二十三)Flask之高频面试点
  • (附源码)ssm学生管理系统 毕业设计 141543
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (十六)一篇文章学会Java的常用API
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (转)Linq学习笔记
  • .CSS-hover 的解释
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .NET 读取 JSON格式的数据
  • .NET 设计模式—简单工厂(Simple Factory Pattern)
  • .NET/C# 使窗口永不获得焦点
  • @param注解什么意思_9000字,通俗易懂的讲解下Java注解
  • @vue/cli 3.x+引入jQuery
  • [ 云计算 | AWS ] AI 编程助手新势力 Amazon CodeWhisperer:优势功能及实用技巧