题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1027

分析:

首先因为一个合金的和为1,所以考虑2个材料合金能否合成一个需求合金的时候,只要考虑前两个值就可以了。

我们如果把这两个值放到平面直角坐标系中,设两个材料合金坐标分别为(x,y)和(m,n),那么易得这两个材料合金可以合成的需求合金对应的点在(x,y)(m,n)两点之间的线段上。(高中数学向量的性质可以证)

那么问题就转化为了:平面上有m个材料合金点,n个需求合金点,要求选出最少的材料合金点,使得这些点能把所有n个需求合金点全部围起来。

处理方法是:

枚举每两个材料合金点p,q,判断是否所有n个需求合金点都在有向线段pq的左侧,如果是,则g[p][q]=1,否则g[p][q]=0。这样做的好处是如果图g中存在一个环,那么就表示n个点都在这个环里面,这个环上的点(即材料合金点)就是满足的一个材料合金点的组合。既然要材料合金点最少,那么就等价于在g图中找最小环。然后问题就解决了。

最新文章

  1. CRL快速开发框架系列教程八(使用CRL.Package)
  2. 【转载】VC维的来龙去脉
  3. DataTable 分页
  4. ubuntu下eclipse突然崩溃,解决办法
  5. hdu 1690 The Balance_母函数
  6. 利用sql里的xpath生成表格
  7. 获取Storyboard中的视图控制器
  8. Docker - 导出导入容器
  9. 移动端JS判断手势方向
  10. HDU6166-Senior Pan-Dijkstra迪杰斯特拉算法(添加超源点,超汇点)+二进制划分集合-2017多校Team09
  11. 修改Java程序的进程名
  12. mysql 1194 – Table ‘tbl_video_info’ is marked as crashed and should be repaired 解决方法
  13. Centos7 Lnmp的环境搭建
  14. Let me introduce myself
  15. Dockerfile指令学习 (转)
  16. svn:重命名文件之后,不允许提交
  17. 2、图文讲解.NET CLR是什么
  18. eclipse中java项目转成Web项目
  19. blender, merge顶点
  20. Java多线程编程实战指南(核心篇)读书笔记(三)

热门文章

  1. 重载 && 重载递增递和减运算符
  2. Half Wavelength Dipole Antenna
  3. 读《深入理解Java虚拟机》有感——第二部分:虚拟机类加载机制
  4. ZOJ 3967 Colorful Rainbows --栈的应用
  5. n个整数中,找出尽可能多的数使他们组成一个等差数列,求最长等差数列的长度
  6. Spring 一二事(1)
  7. java 21-11 数据输入、输出流和内存操作流
  8. java9-9 匿名内部类
  9. Android优化——UI优化(四) 使用stytle
  10. ORACLE中创建和删除临时表