ACM Computer Factory
ACM Computer Factory
Time Limit: 1000MS Memory Limit: 65536K
Total Submissions: 6104 Accepted: 2113 Special Judge
Description
As you know, all the computers used for ACM contests must be identical, so the participants compete on equal terms. That is why all these computers are historically produced at the same factory.
Every ACM computer consists of P parts. When all these parts are present, the computer is ready and can be shipped to one of the numerous ACM contests.
Computer manufacturing is fully automated by using N various machines. Each machine removes some parts from a half-finished computer and adds some new parts (removing of parts is sometimes necessary as the parts cannot be added to a computer in arbitrary order). Each machine is described by its performance (measured in computers per hour), input and output specification.
Input specification describes which parts must be present in a half-finished computer for the machine to be able to operate on it. The specification is a set of P numbers 0, 1 or 2 (one number for each part), where 0 means that corresponding part must not be present, 1 — the part is required, 2 — presence of the part doesn’t matter.
Output specification describes the result of the operation, and is a set of P numbers 0 or 1, where 0 means that the part is absent, 1 — the part is present.
The machines are connected by very fast production lines so that delivery time is negligibly small compared to production time.
After many years of operation the overall performance of the ACM Computer Factory became insufficient for satisfying the growing contest needs. That is why ACM directorate decided to upgrade the factory.
As different machines were installed in different time periods, they were often not optimally connected to the existing factory machines. It was noted that the easiest way to upgrade the factory is to rearrange production lines. ACM directorate decided to entrust you with solving this problem.
Input
Input file contains integers P N, then N descriptions of the machines. The description of ith machine is represented as by 2 P + 1 integers Qi Si,1 Si,2…Si,P Di,1 Di,2…Di,P, where Qi specifies performance, Si,j — input specification for part j, Di,k — output specification for part k.
Constraints
1 ≤ P ≤ 10, 1 ≤ N ≤ 50, 1 ≤ Qi ≤ 10000
Output
Output the maximum possible overall performance, then M — number of connections that must be made, then M descriptions of the connections. Each connection between machines A and B must be described by three positive numbers A B W, where W is the number of computers delivered from A to B per hour.
If several solutions exist, output any of them.
Sample Input
Sample input 1
3 4
15 0 0 0 0 1 0
10 0 0 0 0 1 1
30 0 1 2 1 1 1
3 0 2 1 1 1 1
Sample input 2
3 5
5 0 0 0 0 1 0
100 0 1 0 1 0 1
3 0 1 0 1 1 0
1 1 0 1 1 1 0
300 1 1 2 1 1 1
Sample input 3
2 2
100 0 0 1 0
200 0 1 1 1
Sample Output
Sample output 1
25 2
1 3 15
2 3 10
Sample output 2
4 5
1 3 3
3 5 3
1 2 1
2 4 1
4 5 1
Sample output 3
0 0
Hint
Bold texts appearing in the sample sections are informative and do not form part of the actual data.
Source
Northeastern Europe 2005, Far-Eastern Subregion
题意不好懂啊,看了许多的博客,才渐渐的理解题意了,但大多数的博客都需要拆点,但总感觉不需要,就写了一个简单的Dinic,就AC,是不是数据水啊.
#include <map>
#include <list>
#include <cmath>
#include <queue>
#include <stack>
#include <string>
#include <cstdio>
#include <climits>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
using namespace std;
#define LL long long
#define PI acos(-1.0)
#define MMM 0x3f3f3f3f
#define RR freopen("input.txt","r",stdin)
#define WW freopen("output.txt","w",stdout)
const int INF = 0x3f3f3f3f;
struct node
{
int peed;
int in[15];
int out[15];
} Point[55];
int n,m;
int s,t;
int Map[55][55];
int Flow[55][55];
bool vis[55];
bool sign[55][55];
bool BFS()
{
memset(vis,false,sizeof(vis));
memset(sign,false,sizeof(sign));
queue<int>Q;
Q.push(s);
vis[s]=true;
while(!Q.empty())
{
int u=Q.front();
Q.pop();
for(int i=0;i<=t;i++)
{
if(!vis[i]&&Map[u][i])
{
sign[u][i]=true;
vis[i]=true;
Q.push(i);
}
}
}
return vis[t];
}
int DFS(int star,int num)
{
if(star==t||num==0)
{
return num;
}
int s=0;
int ant;
for(int i=0;i<=t;i++)
{
if(sign[star][i]&&(ant=DFS(i,min(Map[star][i],num)))>0)
{
Map[star][i]-=ant;
Map[i][star]+=ant;
Flow[star][i]+=ant;
Flow[i][star]-=ant;
num-=ant;
s+=ant;
if(num==0)
{
break;
}
}
}
return s;
}
int Dinic()
{
memset(Flow,0,sizeof(Flow));
int sum=0;
while(BFS())
{
sum+=DFS(0,INF);
}
return sum;
}
int main()
{
while(~scanf("%d %d",&m,&n))
{
s=0;
t=n+1;
memset(Map,0,sizeof(Map));
for(int i=1; i<=n; i++)
{
scanf("%d",&Point[i].peed);
for(int j=1; j<=m; j++)
{
scanf("%d",&Point[i].in[j]);
}
for(int j=1; j<=m; j++)
{
scanf("%d",&Point[i].out[j]);
}
}
bool flag;
for(int i=1;i<=n;i++)
{
flag=false;
for(int j=1;j<=m;j++)
{
if(Point[i].in[j]==1)
{
flag=true;
break;
}
}
if(!flag)
{
Map[s][i]=Point[i].peed;
}
flag=false;
for(int j=1;j<=m;j++)
{
if(Point[i].out[j]!=1)
{
flag=true;
break;
}
}
if(!flag)
{
Map[i][t]=Point[i].peed;
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(i!=j)
{
flag=false;
for(int k=1;k<=m;k++)
{
if(Point[i].out[k]!=Point[j].in[k]&&Point[j].in[k]!=2)
{
flag=true;
break;
}
}
if(!flag)
{
Map[i][j]=min(Point[i].peed,Point[j].peed);
}
}
}
}
int sum=Dinic();
int num=0;
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(Flow[i][j]>0)
{
num++;
}
}
}
cout<<sum<<" "<<num<<endl;
for(int i =1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
if(Flow[i][j]>0)
{
cout<<i<<" "<<j<<" "<<Flow[i][j]<<endl;
}
}
}
}
return 0;
}
ACM Computer Factory的更多相关文章
- POJ 3464 ACM Computer Factory
ACM Computer Factory Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4829 Accepted: 1641 ...
- ACM Computer Factory(dinic)
ACM Computer Factory Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5596 Accepted: 1 ...
- POJ3436 ACM Computer Factory 【最大流】
ACM Computer Factory Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5412 Accepted: 1 ...
- POJ-3436 ACM Computer Factory(网络流EK)
As you know, all the computers used for ACM contests must be identical, so the participants compete ...
- POJ 3436 ACM Computer Factory (网络流,最大流)
POJ 3436 ACM Computer Factory (网络流,最大流) Description As you know, all the computers used for ACM cont ...
- poj3436 ACM Computer Factory, 最大流,输出路径
POJ 3436 ACM Computer Factory 电脑公司生产电脑有N个机器.每一个机器单位时间产量为Qi. 电脑由P个部件组成,每一个机器工作时仅仅能把有某些部件的半成品电脑(或什么都没有 ...
- POJ3436 ACM Computer Factory(最大流/Dinic)题解
ACM Computer Factory Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8944 Accepted: 3 ...
- POJ3436:ACM Computer Factory(最大流)
ACM Computer Factory Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 9963 Accepted: 3 ...
- ACM Computer Factory - poj 3436 (最大流)
Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5949 Accepted: 2053 Special Judge ...
随机推荐
- PAT 解题报告 1007. Maximum Subsequence Sum (25)
Given a sequence of K integers { N1, N2, ..., NK }. A continuous subsequence is defined to be { Ni, ...
- M面经Prepare: Find integer Average of 2 integers.
The definition of integer average is the highest smaller integer if average is floating point number ...
- C#面向对象的方法写数组的功能
上一篇文章用Java方法写出了可以对数组执行的功能,然后在用实例化后的对象调用这些方法来实现这些功能: 这篇随笔改用C#语言实现同样的功能 方法类:Array using System; using ...
- Eclipse开发C++遇到的Binary not found等问题
但是一些人可能在编写实际程序的时候,主要是执行程序的时候,会遇到如下两条错误信息,而无法进行开发. Launch failed.Bianry not found A program file was ...
- javaIO整理
写在前面:本文章基本覆盖了java IO的全部内容,java新IO没有涉及,因为我想和这个分开,以突出那个的重要性,新IO哪一篇文章还没有开始写,估计很快就能和大家见面.照旧,文章依旧以例子为主,因为 ...
- ZOJ 3545 Rescue the Rabbit(AC自动机+状压DP)(The 2011 ACM-ICPC Asia Dalian Regional Contest)
Dr. X is a biologist, who likes rabbits very much and can do everything for them. 2012 is coming, an ...
- 同时启动多个Tomcat
一,修改配置文件server.xml的端口 C:\apache-tomcat-5.5.23-1\conf\server.xml用记事本什么的打开修改3个地方 第一: <Server port ...
- jquery中的json操作
$(function() { var json = [ { "id" : "1", "tagName" : "apple" ...
- session_start()一些问题
session问题集锦 对于PHP的session功能,始终找不到合适的答案,尤其是一些错误,还有一些没有错误的结果,最可怕的就是后者,一直为许多的初学者为难.就连有些老手,有时都被搞得莫名其妙.本文 ...
- Android_adb详解
adb定义:adb(android debug bridge)是android系统中的一种命令行工具,通过它可以和android设备或模拟器通信. adb工具位置: <path-to-sdk&g ...