【邻接表+匈牙利算法模板】Elementary Math
http://acm.bnu.edu.cn/v3/external/gym/101485.pdf
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=;
struct node
{
ll x;
ll y;
int id;
}a[maxn];
int n;
ll b[maxn*];
int cnt;
struct Edge
{
int to;
int nxt;
int w;
}e[maxn*];
int tot;
int head[maxn];
map<ll,int> mp;
bool vis[maxn*];
int used[maxn*];
char op[maxn];
void init()
{
tot=;
memset(head,-,sizeof(head));
memset(vis,false,sizeof(vis));
memset(used,-,sizeof(used));
}
void add(int u,int v)
{
e[tot].to=v;
e[tot].w=;
e[tot].nxt=head[u];
head[u]=tot++;
}
int dfs(int u)
{
for(int i=head[u];i!=-;i=e[i].nxt)
{
int v=e[i].to;
if(!vis[v]&&e[i].w)
{
vis[v]=true;
if(used[v]==-||dfs(used[v]))
{
used[v]=u;
return ;
}
}
}
return ;
} void output()
{
for(int i=;i<cnt;i++)
{
if(used[mp[b[i]]]==-) continue;
int id=used[mp[b[i]]];
if(a[id].x+a[id].y==b[i]) op[id]='+';
else if(a[id].x-a[id].y==b[i]) op[id]='-';
else op[id]='*';
}
for(int i=;i<=n;i++)
{
printf("%lld %c %lld",a[i].x,op[i],a[i].y);
ll res;
if(op[i]=='+') res=a[i].x+a[i].y;
else if(op[i]=='-') res=a[i].x-a[i].y;
else if(op[i]=='*') res=a[i].x*a[i].y;
printf(" = %lld\n",res);
}
}
int main()
{
while(~scanf("%d",&n))
{
init();
mp.clear();
cnt=;
for(int i=;i<=n;i++)
{
scanf("%lld%lld",&a[i].x,&a[i].y);
a[i].id=i;
b[cnt++]=a[i].x+a[i].y;
b[cnt++]=a[i].x-a[i].y;
b[cnt++]=a[i].x*a[i].y;
}
sort(b,b+cnt);
cnt=unique(b,b+cnt)-b;
// for(int i=0;i<cnt;i++)
// {
// cout<<b[i]<<" ";
// }
// cout<<endl;
for(int i=;i<cnt;i++)
{
mp[b[i]]=i+;
}
for(int i=;i<=n;i++)
{
ll x=a[i].x+a[i].y;
ll y=a[i].x-a[i].y;
ll z=a[i].x*a[i].y;
int posx=mp[x];
int posy=mp[y];
int posz=mp[z];
// cout<<posx<<" "<<posy<<" "<<posz<<endl;
add(i,posx);
if(posy!=posx) add(i,posy);
if(posz!=posy && posz!=posx) add(i,posz);
}
int ans=;
for(int i=;i<=n;i++)
{
memset(vis,false,sizeof(vis));
ans+=dfs(i);
}
if(ans<n)
{
puts("impossible");
}
else
{
output();
}
}
return ;
}
【邻接表+匈牙利算法模板】Elementary Math的更多相关文章
- poj 1274 The Perfect Stall【匈牙利算法模板题】
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 20874 Accepted: 942 ...
- 匈牙利算法模板 hdu 1150 Machine Schedule(二分匹配)
二分图:https://blog.csdn.net/c20180630/article/details/70175814 https://blog.csdn.net/flynn_curry/artic ...
- hdu 2063 过山车 (最大匹配 匈牙利算法模板)
匈牙利算法是由匈牙利数学家Edmonds于1965年提出,因而得名.匈牙利算法是基于Hall定理中充分性证明的思想,它是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最 ...
- 匈牙利 算法&模板
匈牙利 算法 一. 算法简介 匈牙利算法是由匈牙利数学家Edmonds于1965年提出.该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法. 二分图的定义: 设G=(V,E)是一个 ...
- 三种邻接表存图模板:vector邻接表、数组邻接表、链式前向星
vector邻接表: ; struct Edge{ int u,v,w; Edge(int _u=0,int _v=0,int _w=0){u=_u,v=_v,w=_w;} }; vector< ...
- HDU 2444 - The Accomodation of Students - [二分图判断][匈牙利算法模板]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=2444 Time Limit: 5000/1000 MS (Java/Others) Mem ...
- HDU 1045 - Fire Net - [DFS][二分图最大匹配][匈牙利算法模板][最大流求二分图最大匹配]
题目链接:http://acm.split.hdu.edu.cn/showproblem.php?pid=1045 Time Limit: 2000/1000 MS (Java/Others) Mem ...
- POJ:3041-Asteroids(匈牙利算法模板)
传送门:http://poj.org/problem?id=3041 Asteroids Time Limit: 1000MS Memory Limit: 65536K Description Bes ...
- POJ 1325 && 1274:Machine Schedule 匈牙利算法模板题
Machine Schedule Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 12976 Accepted: 5529 ...
随机推荐
- ios UnitTest 学习笔记1
一.运行第一个单元测试: 1.在Xcode 5中新建一个工程默认自带一个单元测试的文件夹,IDE自动生成了一个实现XCTestCase的.m文件,里面有一个失败测试(早期版本中实现的是SenTestC ...
- vba 两个表 信息合体一个表格
1 把Excel某一区域的内容读入到数组中: Dim strArray() As Variant Dim wk_data As Variant Set wk_data = Sheets("S ...
- POJ 3140 Contestants Division (树形DP,简单)
题意: 有n个城市,构成一棵树,每个城市有v个人,要求断开树上的一条边,使得两个连通分量中的人数之差最小.问差的绝对值.(注意本题的M是没有用的,因为所给的必定是一棵树,边数M必定是n-1) 思路: ...
- (十二)maven之nexus仓库的基本用法
nexus仓库的基本用法 ① 启动nexus. 上一章有提到:https://www.cnblogs.com/NYfor2018/p/9079068.html ② 访问http://localhost ...
- PHP 哈希表碰撞攻击
理想情况下哈希表插入和查找操作的时间复杂度均为O(1),任何一个数据项可以在一个与哈希表长度无关的时间内计算出一个哈希值(key),然后在常量时间内定位到一个桶(术语bucket,表示哈希表中的一个位 ...
- php接受axios数据
var params = { username: 'admin', password: '123456' } axios.post('test.php', params).then(res => ...
- TCP的三次握手与四次挥手详解
TCP的三次握手与四次挥手是TCP创建连接和关闭连接的核心流程,我们就从一个TCP结构图开始探究中的奥秘 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序 ...
- 概述「并查集补集转化」模型&&luoguP1330 封锁阳光大学
奇妙的模型转化以及并查集思想 模型概述 有图$G=(V,E)$,初始所有点为白色,现在要将其中一些点染为黑色,要求染色后满足:$∀(u,v)∈E$,$∃col_u!=col_v$.求最小染色点数. 题 ...
- heartbeat+drdb+nfs实现高可用
一.环境 nfsserver01:192.168.127.101 心跳:192.168.42.101 centos7.3 nfsserver02:192.168.127.102 心跳:192.168. ...
- Springboot(二)-application.yml默认的配置项以及读取自定义配置
写在前面 ===== spring-boot 版本:2.0.0.RELEASE ===== 读取自定义配置 1.配置文件:sys.properties supply.place=云南 supply.c ...