bzoj4429: [Nwerc2015] Elementary Math小学数学
先把所有可能的答案算出来,每个算式一个点,每个结果一个点,然后如果一个算式能算出一个结果,那么就连一条边
然后跑匈牙利,没有完美匹配就是impossible
每个算式最多有3个结果,所以边数是O(n)的,所以匈牙利的复杂度就是O(n^2)的
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <algorithm>
#include <map>
#define ll long long
#define N 77777
#define M 77777 using namespace std;
inline int read(){
int ret=0;char ch=getchar();
bool flag=0;
while (ch<'0'||ch>'9'){
flag=ch=='-';
ch=getchar();
}
while ('0'<=ch&&ch<='9'){
ret=ret*10-48+ch;
ch=getchar();
}
return flag?-ret:ret;
} struct edge{
int adj,next,op;
edge(){}
edge(int _adj,int _next,int _op):adj(_adj),next(_next),op(_op){}
} e[M];
int n,g[N],m;
void AddEdge(int u,int v,int op){
e[++m]=edge(v,g[u],op);g[u]=m;
} int fx[N],fy[N],fop[N];
bool vis[N/3];
int dfs(int u){
if (vis[u]) return 0;
vis[u]=1;
for (int i=g[u];i;i=e[i].next){
int v=e[i].adj;
if (!fy[v]||dfs(fy[v])){
fy[v]=u;fx[u]=v;fop[u]=e[i].op;
return 1;
}
}
return 0;
} char ch[3]={'+','-','*'};
inline ll calc(ll x,ll y,int op){
if (op==0) return x+y;
else if (op==1) return x-y;
else return x*y;
} ll a[N],b[N];
map<ll,int> s;int cnt; int main(){
n=read();
s.clear();
map<ll,int>::iterator it;
ll tmp;
for (int i=1;i<=n;++i){
a[i]=read();b[i]=read();
for (int op=0;op<3;++op){
it=s.find(calc(a[i],b[i],op));
if (it==s.end()) s.insert(make_pair(calc(a[i],b[i],op),++cnt));
AddEdge(i,s.find(calc(a[i],b[i],op))->second,op);
}
} int tot=0;
memset(fx,0,sizeof(fx));
memset(fy,0,sizeof(fy));
for (int i=1;i<=n;++i)if (!fx[i]){
memset(vis,0,sizeof(vis));
tot+=dfs(i);
}
if (tot<n){puts("impossible");return 0;}
for (int i=1;i<=n;++i)
printf("%lld %c %lld = %lld\n",a[i],ch[fop[i]],b[i],calc(a[i],b[i],fop[i]));
return 0;
}
bzoj4429: [Nwerc2015] Elementary Math小学数学的更多相关文章
- 【BZOJ4429】[Nwerc2015] Elementary Math小学数学 最大流
[BZOJ4429][Nwerc2015] Elementary Math小学数学 Description Ellen给她的学生教小学数学.期末考试已经来临了.考试有n个题目,每一个题目学生们都要对一 ...
- sdut 2445 小学数学
小学数学 Time Limit: 1000ms Memory limit: 65536K 有疑问?点这里^_^ 题目描述 题目链接:http://acm.sdut.edu.cn/sdutoj/p ...
- JavaScript Math(数学对象)
Math(数学对象) Math 算术函数和常量 Math.abs( ) 计算绝对值 Math.acos( ) 计算反余弦值 Math.asin( ) 计算反正弦值 Math.atan( ) 计算反正切 ...
- JAVA之旅(二十三)——System,RunTime,Date,Calendar,Math的数学运算
JAVA之旅(二十三)--System,RunTime,Date,Calendar,Math的数学运算 map实在是太难写了,整理得我都晕都转向了,以后看来需要开一个专题来讲这个了,现在我们来时来学习 ...
- C#【结对编程作业】小学数学习题助手
一.软件成品展示 软件本体下载(包括程序及其更新日志,源码工程包,UML图,API接口文档,算法介绍文档,算式计算excel实例,浅查重程序) 链接: http://pan.baidu.com/s/1 ...
- PHP 基础篇 - PHP 的 BC MATH 系列数学函数
一.常见问题 用 PHP 做计算时经常会遇到精度带来的问题,下面来看两个常见的例子: 1. 运算比较 下面表达式输出的结果不是相等: <?php echo 2.01 - 0.01 == 2 ? ...
- Java.util.Math类--数学相关的工具类
Math类--数学相关的工具类 java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作. public static double abs(double ...
- 123457123456#2#----com.MCgame.ShuXueKoSuan98--前拼后广--儿童小学数学口算Game-mc22222
com.MCgame.ShuXueKoSuan98--前拼后广--儿童小学数学口算Game-mc
- Math concepts / 数学概念
链接网址:Math concepts / 数学概念 – https://www.codelast.com/math-concepts-%e6%95%b0%e5%ad%a6%e6%a6%82%e5%bf ...
随机推荐
- javascript里面this机制的几个例子
javascript里面的this值会随着使用场景的不同二发生变化,但是总有一个原则,那就是this总指向当前调用函数的那个对象.以下我会举几个例子来说明这个问题.1.this本身总是指向当前的类的实 ...
- Basic: Fisher's transform
来源:http://bbs.chinahrd.net/thread-709742-1-1.html,Kenneth的回答. z = 0.5 * ln [ (1+r)/(1-r) ]" C0 ...
- nginx认证配置
rpm -qa|grep httpd-tools yum install httpd-tools ###这样不仅可以使用ab工具,还可以使用htpasswd工具了 虚拟主机 ->&g ...
- codevs 1531 山峰
codevs 1531 山峰 题目描述 Description Rocky山脉有n个山峰,一字排开,从西向东依次编号为1, 2, 3, --, n.每个山峰的高度都是不一样的.编号为i的山峰高度为hi ...
- Session一次错误记录
/// <summary> /// 验证登录状态是否已失效 /// </summary> /// <returns>< ...
- C#并发编程经典实例--笔记
一.简介 --并发 同时做多件事情 --多线程 并发的一种形式,它采用多个线程来执行程序. **如非必要,代码里不要出现 "new ...
- scala 学习笔记(07) 一等公民的函数
在scala中一切皆对象,一切皆函数,函数跟Int,String.Class等其它类型是处于同等的地位,换句话说,使用函数跟使用普通的类型一样,没什么区别,因此: 1.函数可以赋值给变量,可以当参数传 ...
- [转]注释驱动的 Spring cache 缓存介绍
原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-spring-cache/ 概述 Spring 3.1 引入了激动人心的基于注释(an ...
- ios蓝牙开发(四)app作为外设被连接的实现-转发
代码下载: 原博客中大部分示例代码都上传到了github,地址是:https://github.com/coolnameismy/demo. 再上一节说了app作为central连接periphera ...
- 将某个Qt4项目升级到Qt5遇到的问题[转]
该Qt4项目以前是使用Qt4.7.4 MSVC2008开发的,因为使用到了OWC10(Office Web Components),使用MSVC编译器的话无法正常升级到Qt4.8.x和Qt5,于是将编 ...