POJ 3189 Steady Cow Assignment

POJ_3189

    一开始题意各种理解错,首先输入的那个矩阵第i行第j列的值表示的是奶牛i会第j个中意的牛棚,最后求的range就相当于j的range,至于range是变化的范围,比如j在1、2变化,那么range就应该是2,也就是MAX-MIN+1。

    因此我们可以枚举range的下界和上届,然后用二分图多重匹配判断是否有解,当然用网络流判断也可以,不过好像比较慢。在枚举range的时候可以做到O(N),比如现在range是[x,y],如果当前无解那么就扩大上届令y=y+1,如果有解就缩小下届令x=x+1。

#include<stdio.h>
#include<string.h>
#include<algorithm>
#define MAXN 1010
#define MAXB 30
#define INF 0x3f3f3f3f
int N, B, yM[MAXB][MAXN], visy[MAXB], num[MAXB], limit[MAXB];
int g[MAXN][MAXB], LOW, HIGH;
void init()
{int i, j, k;for(i = 0; i < N; i ++)for(j = 0; j < B; j ++)scanf("%d", &g[i][j]), -- g[i][j];for(i = 0; i < B; i ++) scanf("%d", &limit[i]);
}
int searchpath(int cur)
{int i, y, j;for(i = LOW; i <= HIGH; i ++)if(!visy[g[cur][i]]){y = g[cur][i], visy[y] = 1;if(num[y] < limit[y]){yM[y][num[y] ++] = cur;    return 1;}for(j = 0; j < num[y]; j ++)if(searchpath(yM[y][j])){yM[y][j] = cur;return 1;    }}return 0;
}
int match()
{int i;memset(num, 0, sizeof(num[0]) * B);for(i = 0; i < N; i ++){memset(visy, 0, sizeof(visy[0]) * B);if(!searchpath(i)) return 0;}return 1;
}
void solve()
{int ans = INF;LOW = HIGH = 0;while(HIGH < B){if(!match())++ HIGH;elseans = std::min(ans, HIGH - LOW + 1), ++ LOW;}printf("%d\n", ans);
}
int main()
{while(scanf("%d%d", &N, &B) == 2){init();solve();    }return 0;    
}

转载于:https://www.cnblogs.com/staginner/archive/2012/08/18/2645235.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/379388.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

汇编语言-008(条件跳转应用 、loopnz 条件循环指令使用 、loopz 条件循环指令使用 、 if语句编写汇编时 、while语句编写汇编时 、循环内的if语句嵌套)

1&#xff1a; 条件跳转应用&#xff0c;三个数中最小数 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data V1 WORD 1 V2 WORD 2 V3 WORD 3.code main PROCmov ax,V1 ;假设V1是最小值cmp ax,V2 ;如果AX小于等于V2jbe L1mov ax,v2 L1:cmp ax,V…

java jar包示例_Java包isCompatibleWith()方法与示例

java jar包示例包类的isCompatibleWith()方法 (Package Class isCompatibleWith() method) isCompatibleWith() method is available in java.lang package. isCompatibleWith()方法在java.lang包中可用。 isCompatibleWith() method is used to check the specification versi…

面向对象的JavaScript编程

Javascript对于做过Web程序的人不应该是陌生&#xff0c;初期是用来做一些简单的FORM验证&#xff0c;基本上是在玩弄一些技巧性的东西。IE 4.0引入了DHTML&#xff0c;同时为了对抗Netscape的Javascript,提出了自己的脚本语言JScript&#xff0c;除了遵循EMAC的标准之外&#…

实验3 SQL Server 表中记录更新操作

实验3 SQL Server 表中记录更新操作一、实验目的 1.掌握INSERT INTO语句的方法。 2.了解INSERT FROM语句的方法。 3.掌握UPDATE语句的方法。 4.掌握DELETE语句的方法。 二、实验要求 1.在已经创建好的eshop数据库中的各表中添加样例数据。 三、实验步骤 1.在eshop数据库的memb…

HTML 5 标签

HTML 5 <nav> 标签 定义和用法 <nav> 标签定义导航链接的部分。 实例 <nav> <a href"index.asp">Home</a> <a href"html5_meter.asp">Previous</a> <a href"html5_noscript.asp">Next</a>…

Assert和异常处理

Assert用于检查不应该发生情况&#xff0c;用来帮助开发人员对问题的快速定位。异常处理用于对程序发生异常情况的处理&#xff0c;增强程序的健壮性、容错性&#xff0c;减少程序使用中对用户不有好的行为&#xff0c;不让(通常也不必)用户知道发生了什么错误。实际开发中&…

tooctalstring_Java Long类toOctalString()方法的示例

tooctalstring长类toOctalString()方法 (Long class toOctalString() method) toOctalString() method is available in java.lang package. toOctalString()方法在java.lang包中可用。 toOctalString() method is used to represent an octal string of the given parameter […

汇编语言-009(表驱动选择 、条件控制流伪指令 、逻辑移位SHL,SHR 算术移位SAL,SAR)

1&#xff1a; 表驱动选择&#xff0c;用查表来代替多路选择结构的一种方法 .386 .model flat,stdcallinclude Irvine32.inc.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data CaseTable BYTE A ;查询值DWORD Process_A ;过程地址 EntrySize ($ - CaseT…

如何解决EDM邮件营销中的图片难题

随着互联网的高速发展&#xff0c;已然进入到了读图时代&#xff0c;EDM邮件营销尤为注重图片的运用。纯文本的邮件太枯燥&#xff0c;巧借图片&#xff0c;可以提高内容的可读性&#xff0c;吸引用户注意力。然而&#xff0c;我们却常常不得不面对这样的尴尬&#xff1a;打开邮…

实验2 SQL Server 表操作

实验2 SQL Server 表操作一、实验目的 1.了解表设计和表结构相关知识。 2.掌握管理工具创建、修改、查看和删除表的方法。 3.掌握T-SQL语句创建、修改、查看和删除表的方法。 4.了解表和数据库的关系。 二、实验要求 1.创建好的“网上购物系统”数据库eshop中的members表、pro…

深入理解.net的事件与委托机制

首先介绍一个为什么要在事件中引入委托这个概念&#xff1a;  事件是对象发送的消息&#xff0c;以发信号通知操作的发生。操作可能是由用户交互&#xff08;例如鼠标单击&#xff09;引起的&#xff0c;也可能是由某些其他的程序逻辑触发的。引发事件的对象称为事件发送方。…

Java ObjectOutputStream flush()方法与示例

ObjectOutputStream类flush()方法 (ObjectOutputStream Class flush() method) flush() method is available in java.io package. flush()方法在java.io包中可用。 flush() method is used to flush this stream and write bytes immediately of any buffered output to the u…

ffmpeg 命令裁剪合并

1 mp4格式&#xff1a; 裁剪从一个视频中的1分钟、2分钟、3分钟开始截取10秒 ffmpeg -i test_1280x720.mp4 -ss 00:01:00 -t 10 -codec copy copy1.mp4 ffmpeg -i test_1280x720.mp4 -ss 00:02:00 -t 10 -codec copy copy2.mp4 ffmpeg -i test_1280x720.mp4 -ss 00:03:00 -t 10…

Struts2初始化流程及源码分析

1.1 Struts2初始化 在讲Struts2的初始化之前&#xff0c;应该为大家描述下Web应用中的过滤器Filter&#xff0c;这关系到我们对核心过滤器FilterDispatcher的正确理解。 Filter&#xff1a;一个filter是一个对象&#xff0c;为每个请求资源(一个servlet或静态内容) &#xff0c…

实验1 数据库操作

实验1 数据库操作一、实验目的 1.掌握管理工具、T-SQL创建数据库的方法。 2.掌握管理工具、T-SQL修改和查看数据库的方法。 3.掌握管理工具、T-SQL删除数据库的方法。 4.掌握数据库的附加与分离 二、实验要求 1.创建实验所用到的“网上购物系统”数据库eshop。 三、实验内容 1…

Java FileInputStream finalize()方法与示例

FileInputStream类的finalize()方法 (FileInputStream Class finalize() method) finalize() method is available in java.io package. finalize()方法在java.io包中可用。 finalize() method is used to assure that close() method of this FileInputStream invokes when th…

逆风飞扬,吴仁宏

摘自逆风飞扬,吴仁宏自传 它是一个从"生而自卑"到"个性飞扬"的故事&#xff0c;当然具有传奇色彩 中国人几千年都不是天生的赢家&#xff0c;让我们努力&#xff0c;为国为家为自己&#xff0c;做赢家&#xff01; 生存哲学 尼采 痛苦,挫折使生命迁长,使人…

ffmpeg 命令图片和视频相互转换

1当前文件环境&#xff1a; ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 640x360 test.jpg ffmpeg -i test.mp4 -y -f image2 -ss 00:00:02 -vframes 1 -s 640x360 test.bmp 使用ffplay test.jpb ffplay test.bmp 都是可以打开的 参数介绍&#xff1a; -y 如…

如何点击链接直接跳转到app store指定应用下载页面

转载自&#xff1a;http://blog.csdn.net/zengconggen/article/details/6789420 NSString *str [NSString stringWithFormat:"http://itunes.apple.com/us/app/id%d", 436957167]; [[UIApplication sharedApplication] openURL:[NSURL urlWithString:str]];其中&…

COLLEGE.sql(复制的时候注意路径!!!)

USE [master] GO /****** Object: Database [COLLEGE] Script Date: 2019/11/25 星期一 上午 08:57:11 / CREATE DATABASE [COLLEGE] ON PRIMARY ( NAME N’COLLEGE_m’, FILENAME N’F:\COLLEGE\COLLEGE.mdf’ , SIZE 51200KB , MAXSIZE UNLIMITED, FILEGROWTH 10240KB )…