博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1027 [JSOI2007]合金 ——计算几何
阅读量:6657 次
发布时间:2019-06-25

本文共 1665 字,大约阅读时间需要 5 分钟。

我们可以把每一种金属拆成一个二维向量,显然第三维可以计算出来,是无关的。

我们只需要考虑前两维的情况,显然可以构成点集所形成的凸包内。

然后我们枚举两两的情况,然后可以发现如果所有的点都在一侧是可以选的。

然后我们在点集中,找到一个有向最小环就可以了。

#include #include 
#include
#include
#include
#include
#include
using namespace std;#define F(i,j,k) for (int i=j;i<=k;++i)#define D(i,j,k) for (int i=j;i>=k;--i)#define inf 0x3f3f3f3f#define eps 1e-8#define ll long long#define mp make_pair struct Vector{ double x,y; void print() { printf("Vector - > (%.3f,%.3f)\n",x,y); }}; struct Point{ double x,y; void print() { printf("Point (%.3f,%.3f)\n",x,y); }}; double operator * (Vector a,Vector b){ return a.x*b.y-a.y*b.x;} Vector operator - (Point a,Point b){Vector ret;ret.x=a.x-b.x;ret.y=a.y-b.y;return ret;} double dot(Vector a,Vector b){ return a.x*b.x+a.y*b.y;} Point a[505],b[505]; int n,m,c[505][505]; bool judge(Point x,Point y){ F(i,1,m) { double cro=(x-b[i])*(y-b[i]); if (cro>eps) return 0; if (fabs(cro)
eps) return 0; } return 1;} bool SPJ(){ F(i,1,n) if (fabs(a[i].x-a[1].x)>eps||fabs(a[i].y-a[1].y)>eps) return 0; F(i,1,m) if (fabs(b[i].x-a[1].x)>eps||fabs(b[i].y-a[1].y)>eps) return 0; return 1;} int main(){ scanf("%d%d",&n,&m); F(i,1,n) scanf("%lf%lf%*lf",&a[i].x,&a[i].y); F(i,1,m) scanf("%lf%lf%*lf",&b[i].x,&b[i].y); if (!m) return printf("0\n"),0; if (SPJ()) return printf("1\n"),0; memset(c,0x3f,sizeof c); F(i,1,n) F(j,1,n) if (i!=j) if (judge(a[i],a[j])) c[i][j]=1; F(k,1,n) F(i,1,n) F(j,1,n) c[i][j]=min(c[i][k]+c[k][j],c[i][j]); int ans=inf; F(i,1,n) ans=min(ans,c[i][i]); printf("%d\n",ans==inf?-1:ans);}

  

转载于:https://www.cnblogs.com/SfailSth/p/6686147.html

你可能感兴趣的文章
java -cp 用法介绍
查看>>
mycat(4)
查看>>
winform窗体间传值
查看>>
[资料收集]Java-Java文件操作大全
查看>>
ORACLE - 管理控制文件
查看>>
metro 下载xml文件
查看>>
Spring REST实践之客户端和测试
查看>>
java注解(转)
查看>>
使用activeMQ实现jms
查看>>
linuxC动态内存泄漏追踪方法
查看>>
[转]PHP Session原理分析及使用
查看>>
(二)selenium元素定位
查看>>
数据库部分
查看>>
python字典的定义和操作
查看>>
excel批量加前后缀
查看>>
2D空间中求线段与圆的交点
查看>>
常见标签的默认属性值及相互作用——关于CSS reset的思考
查看>>
jQuety遍历数组
查看>>
jvm的内存模型
查看>>
启动后再显示状态栏Status Bar
查看>>