YbtOJ#832-鸽子饲养【凸包,Floyd】】的更多相关文章

正题 题目链接:https://www.ybtoj.com.cn/contest/116/problem/3 题目大意 给出两个大小分别为\(n,m\)的点集\(A,B\). 求出\(B\)的一个最小子集使得该子集的凸包包含了所有点集\(A\)中的点. 无解输出\(-1\) \(2\leq n\leq 10^5,3\leq m\leq 500\) 解题思路 选出的子集肯定是一个凸包,凸包就是相邻点连边之间的半平面交. 所以可以理解为我们要找到一些点对使得它们的半平面包含点集\(A\). 如果\(…
计算几何之所以难学 就是因为太抽象了 不够直观 而且情况很多 很繁琐 甚至有一些东西不清不楚.. 这道题注意到题目中的描述 一个鸽子在两个点所连直线上也算. 通过看题解 发现这个地方并非直线而是线段 这不是明摆着坑人.. 先考虑m<=10的做法 可以想到爆搜 然后 就利用直线 点 三角形来判断复杂度\(2^m\cdot m^3\cdot n\) 期望得分30. 其中直线判断的时候 严谨一点是 如果在直线上再判断len的大小 可是当时考试的时候发现题目中的这句话了所以就没管. 三角形 的话容易转圈…
http://www.lydsy.com/JudgeOnline/problem.php?id=1027 题意:$n$种材料,$m$种需求.每种材料有三个属性,给出三个属性的含量(和为1),问能否通过这$n$种材料合成$m$种需求的材料.($n, m \le 500$) #include <cstdio> #include <cstring> #include <cmath> #include <string> #include <iostream&g…
[题意] 某公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的原材料中铁铝锡的比重不同.然后,将每种原材料取出一定量,经过融解.混合,得到新的合金.新的合金的铁铝锡比重为用户所需要的比重. 现在,用户给出了n种他们需要的合金,以及每种合金中铁铝锡的比重.公司希望能够订购最少种类的原材料,并且使用这些原材料可以加工出用户需要的所有种类的合金. [分析] 只要考虑前两个物质的比例,因为加起来等于1. 如果你看过zoj3154,就会知道这题的模型,用二元组表…
参考:https://www.cnblogs.com/zhuohan123/p/3237246.html 因为一c可以由1-a-b得出,所以删掉c,把a,b抽象成二维平面上的点.首先考虑一个客户需求能被哪些原料配出来:两个原料点连线上的点都可以,要是多个原料点,那么这些线的向量构成的凸包中的点都可以 所以得到了一个n三方算法:枚举每两个原料点,看是否所有需求点都在这条向量的半平面里,是则连1,然后Floyd求最小环即可 但是有非常多恶心的特判-- 1.需求点重合为一点 2.需求点出现在两种原料点…
计算几何/凸包/Floyd Orz rausen大爷太强辣 计算几何题目果然不会做>_> 这个题……虽然他给了3个坐标,但实际上是个二维的计算几何题= =因为第三维坐标可以直接用前两维坐标表示出来. 考虑一下这些二维平面上的点的意义…… 假如我们现在手里有一种原材料$(x_1,y_1)$,那么我们就只能搞出这一种合金= = 那么如果有两种原材料,我们配一配,就可以配出$(x_1,y_1)$到$(x_2,y_2)$这条线段上的所有合金= = 如果有三种,我们能配出的就是那个三角形区域的所有种类的…
题面 养鸽人要监视他的鸽子,有n只鸽子站在平面上,他可以在m个给定的点上设置监视器,如果一只鸽子在某个监视器上或者在两个监视器所连直线上或者在三个监视器所连直线的三角形内则其就咕咕咕了,现在养鸽人要让所有鸽子咕咕咕,请问他最少需要设置多少监视器. 对于100%的数据n≤100000,m≤500,坐标绝对值不超过10的9次方. 100 首先转化一下题意,就是选取尽量少的点,然后生成一个凸包,包住给定的一个凸包. 显然在给定凸包内的点是没有用处的. 对于不在给定凸包内的点,我们枚举它们: 对于一个点…
传送门 为了方便描述把固定点叫做白色点,Tree叫做黑色点 一种基于特殊性质的做法: 如果不算入选白色的权值,那么一定会选中所有白色点构成的凸包上的点,因为能够尽可能围更多的黑色点.然后我们在这个基础上删凸包上无用的白色点,就可以使得在围住尽可能多的黑色点的情况下白色点最少. 但是是否这就是最优解?我们考虑舍弃围住一个黑色点的情况.因为如果某个黑点在凸包中,那么一定存在三个凸包上的白色点,它们构成的三角形围住这个黑色点,使用三角剖分不难证明.所以舍弃一个黑色点最多只会舍弃三个白色点,而\(111…
pro:二维平面上,给定N个村庄.M个士兵驻守,把村庄围住,现在我们想留下更多的士兵休息,使得剩下的士兵任然满足围住村庄.N,M<500: sol:即是要找一个最小的环,环把村庄围住. 由于是环, 最小的点数等价于最小的边数. 所以我们求最小的边数,而士兵之间能有有向边,当且仅当所有的村庄在有向边的左边(逆时针连边). 然后就是floyd最小环. #include<bits/stdc++.h> #define ll long long #define rep(i,a,b) for(int…
1027: [JSOI2007]合金 Time Limit: 4 Sec  Memory Limit: 162 MBSubmit: 2970  Solved: 787[Submit][Status][Discuss] Description 某 公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的原材料中铁铝锡的比重不同.然后,将每种原材料取出一 定量,经过融解.混合,得到新的合金.新的合金的铁铝锡比重为用户所需要的比重. 现在,用户给出了n种他们需要的…