先把所有可能的答案算出来,每个算式一个点,每个结果一个点,然后如果一个算式能算出一个结果,那么就连一条边

然后跑匈牙利,没有完美匹配就是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 77777using 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;
}

  

转载于:https://www.cnblogs.com/wangyurzee7/p/5314642.html

bzoj4429: [Nwerc2015] Elementary Math小学数学相关推荐

  1. BERT可以上几年级了?Seq2Seq“硬刚”小学数学应用题

    ©PaperWeekly 原创 · 作者| 苏剑林 单位|追一科技 研究方向|NLP.神经网络 ▲"鸡兔同笼"的那些年 "盈亏问题"."年龄问题&qu ...

  2. 软件工程作业之小学数学题目

    软件描述:该软件实现小学数学题目生成以及对运算结果进行判断,最后统计出正确题目以及错误的题目,便于学生及时改正自己的错误,另外,该软件存在比较明显的缺陷,不能进行四则混合运算.希望在以后的学习实践中可 ...

  3. bert关键词提取_BERT可以上几年级了?Seq2Seq“硬刚”小学数学应用题

    作者 | 苏剑林 单位 | 追一科技 研究方向 | NLP.神经网络 "鸡兔同笼"的那些年 "盈亏问题"."年龄问题"."植树问题 ...

  4. python植树问题代码_BERT可以上几年级了?Seq2Seq“硬刚”小学数学应用题

    "鸡兔同笼"的那些年 "盈亏问题"."年龄问题"."植树问题"."牛吃草问题"."利润问题 ...

  5. Java语言实现小学数学练习

    Java语言实现小学数学练习 题目: [问题描述] 编写一个帮助小学生练习数学的程序,帮助小学生练习100以内的四种数学运算:加.减.乘.除. [基本要求] a)程序应先询问用户的ID号(ID号包括两 ...

  6. java语言数学_Java语言实现小学数学练习

    Java语言实现小学数学练习 题目[问题描述] 编写一个帮助小学生练习数学的程序 帮助小学生练习100以内的四种数学运算 加.减.乘.除. [基本要求] a)程序应先询问用户的ID号(ID号包括两个大 ...

  7. 【C语言】小学数学练习

    小学数学练习 1.1[问题描述] 编写一个帮助小学生练习数学的程序,帮助小学生练习100 以内的四种数学运算:加.减.乘.除. 1.2[基本要求] a) 程序应先询问用户的ID 号(ID 号包括两个大 ...

  8. JAVA课程设计——小学数学练习

    设计题目 1.小学数学练习 1.1[问题描述] 编写一个帮助小学生练习数学的程序,帮助小学生练习 100 以内的四种数学运算:加.减.乘.除. 1.2[基本要求] a) 程序应先询问用户的 ID 号( ...

  9. 实验报告:小学数学练习、石头剪刀布游戏

    课设格式要求 1.目录两字间空一格 自动生成目录 2.字体正文宋体小四 小标题宋体小三  3.添加的流程图必须为传统流程图格式  4.各图表下必须有序号以及图片名称 字号要求为宋体5号 eg:图1.1 ...

最新文章

  1. Android 设置透明的方法
  2. 项目10天投产,测试仅剩2天,如何处理?
  3. malloc()参数为0的情况
  4. char和byte的区别
  5. OpenCV使用inRange的阈值操作Thresholding Operations
  6. 电力电子、电机控制系统的建模和仿真_清华团队研发,首款国产电力电子仿真软件来啦~已捐赠哈工大、海工大、清华使用!...
  7. 笔记本安装centos7.6网络的配置_可以放入口袋里面的笔记本电脑:国产黑科技,户外工程师必备利器...
  8. Hadoop四大组件介绍
  9. linux udp 套接字编程获取源地址和目的地址(一)
  10. android源码定制之初探--定制android关机界面
  11. 吴军 阅读与写作50讲 02 如何读懂作者的内心 读后感
  12. canvas教程11-渐变
  13. 【C语言编程4】输入年份输出全年日历
  14. 列出叶节点 python
  15. 使用studio 3T按日期查询mongodb
  16. echarts不显示纵轴竖线?
  17. itunes替代_这是iTunes 10的五个替代品,可轻松管理iPod
  18. 思科网络安全 第七章答案
  19. python套用word模板_Python3操作Office之Word模板技术
  20. C语言-有关数字翻转的函数

热门文章

  1. 集合 Arrays.asList | java.lang.UnsupportedOperationException: null
  2. 企业网络推广“卡壳”了?如何更有效提升SEO排名?
  3. 网站托管运营需要注意哪些内容?
  4. 华为 会议室分配时间最长_智慧办公就是现在!华为企业智慧屏系列全新亮相...
  5. (转载)Linux信息资源
  6. DDos攻击的一些领域知识——(流量模型针对稳定业务比较有效)不稳定业务采用流量成本的检测算法,攻击发生的时候网络中各个协议的占比发生了明显的变化...
  7. 随机生成50个字段的elasticsearch的测试程序输入
  8. Nginx 配置https 自动续期
  9. Linux系统管理技术
  10. 一键安装MySQL5.6.43脚本