【邻接表+匈牙利算法模板】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 ...
随机推荐
- 面向 AWS 专家的 Azure 云服务介绍
本文是面向 AWS 专家的 Azure 云服务介绍,参考本文可以帮助大家“按图索骥”在 Azure 的平台上找到能满足自己需求的服务. 公有云市场经过多年发展,已经涌现出几家大规模的提供商,如 Azu ...
- codevs 1553 互斥的数
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 有这样的一个集合,集合中的元素个数由给定的N决定,集合的元素为N个不同的正整数, ...
- ubuntu 14.04 安装redis
root@hett-PowerEdge-T30:~# sudo apt-get install redis-server Reading package lists... DoneBuilding d ...
- ArcGis server连接oracle
ArcGIG server连接Oracle 目录--gis服务器--添加arcgis server 下一步: 身份验证为在arcgis server manager 中的管理员登录密码和账户 对于服务 ...
- WebStorm 编辑器 关闭自动保存功能及添加*星星标记
WebStorm 关闭自动保存功能添加*星星标记为什么要关闭自动保存? 在前端项目工作当中,往往会采用自动化环境(Gulp.webpack等)当文本发生变化的时候就会自动编译代码.在we ...
- Java中的线程--多线程面试题
到这里,基本上线程的并发中的知识点都是学到了,到了最后,还有三道面试题,从面试题中学习更加的加深一下,多线程中的知识点,如何在实际的问题中来解决多线程的问题,可以更好的从实际出发 一.面试题1 面试题 ...
- linux centeros 通过 innoback 工具备份mysql 5.7 全库并自动压缩zip上传到备份服务器的脚本,附自动清理过期备份
innoback 安装见连接:https://blog.csdn.net/fanren224/article/details/79693863 脚本解析后续将更新 181024:更新添加定期清理备份的 ...
- css兼容处理-hack
浏览器兼容之旅的第二站:各浏览器的Hack写法 Browser CSS Hacks Moving IE specific CSS into @media blocks Detecting browse ...
- Google实践中总结的Python规范,get了吗?
好的代码风格,给人舒服的感觉,今天介绍一下谷歌的Python风格规范 1 分号 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 2 行长度 每行不超过80个字符:不要使用反斜杠连接行.Pyth ...
- python--MySQL 库,表的详细操作
一 库操作 数据库命名规则 可以由数字,字母,下划线,@, #, $ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 # 这些是对上次的补充. 二 ...