题意 题目链接 Sol 这个东西的学名应该叫"闵可夫斯基和".就是合并两个凸包 首先我们先分别求出给出的两个多边形的凸包.合并的时候直接拿个双指针扫一下,每次选最凸的点就行了. 复杂度\(O(nlogn + n)\) #include<bits/stdc++.h> #define LL long long //#define int long long using namespace std; const int MAXN = 1e6 + 10; inline int re…
题面 传送门 题解 花了一个下午的时间调出了一个稍微能看的板子--没办法网上的板子和咱的不太兼容-- 首先有一个叫做闵可夫斯基和的东西,就是给你两个点集\(A,B\),要你求一个点集\(C=\{x+y\mid x\in A,y\in B\}\),\(C\)就是\(A,B\)的闵可夫斯基和 我们考虑一下如果\(B\)只有一个点,那么\(C\)就可以看做\(A\)向某个方向平移一段距离,所以\(C\)就可以看做\(A\)向\(|B|\)个方向平移的点集的并集 然后我们现在想要求出\(C\)的凸包 首…
题目描述 对于一个平面上点的集合P={(xi,yi )},定义集合P的面积F(P)为点集P的凸包的面积. 对于两个点集A和B,定义集合的和为: A+B={(xiA+xjB,yiA+yjB ):(xiA,yiA )∈A,(xjB,yjB )∈B} 现在给定一个N个点的集合A和一个M个点的集合B,求2F(A+B). 输入格式 第一行包含用空格隔开的两个整数,分别为N和M: 第二行包含N个不同的数对,表示A集合中的N个点的坐标: 第三行包含M个不同的数对,表示B集合中的M个点的坐标. 输出格式 一共输…
Description 对于一个平面上点的集合P={(xi,yi )},定义集合P的面积F(P)为点集P的凸包的面积. 对于两个点集A和B,定义集合的和为: A+B={(xiA+xjB,yiA+yjB ):(xiA,yiA )∈A,(xjB,yjB )∈B} 现在给定一个N个点的集合A和一个M个点的集合B,求2F(A+B). Input 第一行包含用空格隔开的两个整数,分别为N和M: 第二行包含N个不同的数对,表示A集合中的N个点的坐标: 第三行包含M个不同的数对,表示B集合中的M个点的坐标.…
Description 对于一个平面上点的集合P={(xi,yi )},定义集合P的面积F(P)为点集P的凸包的面积. 对于两个点集A和B,定义集合的和为: A+B={(xiA+xjB,yiA+yjB ):(xiA,yiA )∈A,(xjB,yjB )∈B} 现在给定一个N个点的集合A和一个M个点的集合B,求2F(A+B). Input 第一行包含用空格隔开的两个整数,分别为N和M: 第二行包含N个不同的数对,表示A集合中的N个点的坐标: 第三行包含M个不同的数对,表示B集合中的M个点的坐标.…
题面 传送门 题解 看出这是个闵可夫斯基和了然而我当初因为见到这词汇是在\(shadowice\)巨巨的\(Ynoi\)题解里所以压根没敢学-- 首先您需要知道这个 首先如果有一个向量\(w\)使得\(w+b=a\),也就是使\(A,B\)的凸包有交,有\(w=a-b\),那么我们把\(B\)的横坐标和纵坐标全部取反之后,\(w\)就必定在\(A\)和\(-B\)的闵可夫斯基和里 那么只要对\(A,-B\)求一个闵可夫斯基和的凸包就行了,然后判一下输入的向量是否在这个凸包里就行了 //minam…
题目链接   题意:给出n个矩形,求能覆盖所有矩形的最小的矩形的面积. 题解:对所有点求凸包,然后旋转卡壳,对没一条边求该边的最左最右和最上的三个点. 利用叉积面积求高,利用点积的性质求最左右点和长度,更新面积最小值即可. #include<iostream> #include<cstdio> #include<cmath> #include<algorithm> #define MAX 50010 using namespace std; struct P…
Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 6199   Accepted: 2822 Description Your friend to the south is interested in building fences and turning plowshares into swords. In order to help with his overseas adventure, they are f…
要点 凸包显然 长方形旋转较好的处理方式就是用中点的Vector加上旋转的Vector,然后每个点都扔到凸包里 多边形面积板子求凸包面积即可 #include <cstdio> #include <cmath> #include <algorithm> using namespace std; typedef double db; const db eps = 1e-9; const db PI = acos(-1.0); const int maxn = 600 *…
一.概述 官方定义:两个图形A,B的闵可夫斯基和C={a+b|a∈A,b∈B}通俗一点:从原点向图形A内部的每一个点做向量,将图形B沿每个向量移动,所有的最终位置的并便是闵可夫斯基和(具有交换律) 例如,平面上有两个三角形,其坐标分别为A={(1,0),(0,1),(0,-1)}及B = {(0, 0), (1, 1), (1, −1)},则其闵可夫斯基和为A + B = {(1, 0), (2, 1), (2, −1), (0, 1), (1, 2), (1, 0), (0, −1), (1,…
题面 题意:给你一堆点,求一个最大面积的空凸包,里面没有点. 题解:红书板子,照抄完事,因为题目给的都是整点,所以最后答案一定是.5或者.0结尾,不用对答案多做处理 #include<bits/stdc++.h> #define N 55 using namespace std; struct rec { double x,y; }; rec operator -(rec a,rec b) { rec c; c.x=a.x-b.x; c.y=a.y-b.y; return c; } doubl…
大意: 给定$n$个凸多边形, $q$个询问, 求$[l,r]$内闵可夫斯基区间和的顶点数. 要用到一个结论, 闵可夫斯基和凸包上的点等于向量种类数. #include <iostream> #include <algorithm> #include <cstdio> #include <queue> #include <map> #define REP(i,a,n) for(int i=a;i<=n;++i) #define pb pus…
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem 10983 18765 Y 1036 [ZJOI2008]树的统计Count 5293 13132 Y 1588 [HNOI2002]营业额统计 5056 13607 1001 [BeiJing2006]狼抓兔子 4526 18386 Y 2002 [Hnoi2010]Bounce 弹飞绵羊 43…
题目大意:一个凸包,随机一个点使得其与前两个点组成的面积比与其他相邻两个点组成的面积小的概率 根据题意列方程,最后求n条直线的交的面积与原凸包面积的比值 #include<bits/stdc++.h> #define maxn 100010 #define eps 1e-10 using namespace std; double ans,S1,S2; struct P{ double x,y; P(,){x=a,y=b;} }; struct L{ P a,b; double ang; };…
题目大意:有N个数字a[N],每输出连续的一串,它的费用是 “这行数字的平方加上一个常数M”.问如何输出使得总费用最小.(n<=500000) 分析:动态规划方程为:dp[i]=dp[j]+M+(sum[i]-sum[j])^2: 右边有一项为:sum[i]*sum[j].考虑用单调队列. 令dp[i]=g,dp[j]+M+sum[i]^2+sum[j]^2=y,sum[j]=y,2*sum[i]=k 则上式变为g=y-kx,即y=kx+g.此为直线方程. 我们要使得g最小,即可以考虑有一条斜率…
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4613 题意: 判断一个集合中的点能不能由另一个集合中的点,通过平移,旋转,放缩得到~ 思路:先求出集合中的点的凸包,然后枚举每一条边作为起点 ,看原集合中的点能否与要比较的集合中的点一一对应~ #include <iostream> #include <cstdio> #include <algorithm> #include <functional> #inclu…
给一个1000个点的多边形(从某个点依次按照外形给出每个节点),这个多边形不一定是凸多边形 再给一个圆,问这个多边形与圆相交区域的周长 我们将这个问题分成两个部分,第一部分是求线段在圆内的长度,第二部分是求圆弧的长度. 对于第一个部分,求线段在圆内的长度, 注意线段两端都在圆外边但是线段与圆有交点的情况.相切的情况可以不去考虑 第二个部分,我们在求第一部分时顺带求出所有线段与圆的交点,依次枚举每段圆弧,我们需要判断这段圆弧是否在多边形内 其实我们只需求出圆弧的中点,对于中点,判断是否在多边形内,…
给两个凸包,求这两个凸包间最短距离 旋转卡壳的基础题 因为是初学旋转卡壳,所以找了别人的代码进行观摩..然而发现很有意思的现象 比如说这个代码(只截取了关键部分) double solve(Point* P, Point* Q, int n, int m) { , ymaxQ = ; ; i < n; ++i) if (P[i].y < P[yminP].y) yminP = i; // P上y坐标最小的顶点 ; i < m; ++i) if (Q[i].y > Q[ymaxQ].…
题解 一道想法很简单的计算几何(由于我半平面交总是写不对,我理所当然的怀疑半平面交错了,事实上是我直线建错了) 首先我们对于两个凸包上的点设为\((x_0,y_0)\)和\((x_1,y_1)\)(逆时针) 设这个点为(x,y)我们用叉积求一下面积 可以得到 \((x_0 - x)(y_1 - y) - (x_1 - x)(y_0 - y)\) \(x_0 y_1 - x_1 y_0 + (y_0 - y_1)x + (x_1 - x_0)y\) 然后我们可以对于每个小三角形都求一个这样的式子,…
http://poj.org/problem?id=3348 题目大意:用已给出的点围出面积最大的凸包,输出面积/50(向下取整) —————————————————————————— 第一道凸包?以及不知道第几次的奶牛题…… 显然裸题,切了. (那博文的意义何在?) (呃……方便以后抄板子?) #include<cstdio> #include<queue> #include<cctype> #include<cstring> #include<st…
越来越喜欢AtCoder了,遍地都是神仙题. 题意: 给定一个\(N\)行\(N\)列的迷宫,每一个格子要么是障碍,要么是空地.每一块空地写着一个数码.在迷宫中,每一步只允许向右.向下走,且只能经过空地. 对于每两个连通(从一个可到达另一个)的格子,求出它们数码的乘积.问所有这种乘积的和. \(1 \leq N \leq 500\) 思路: 容易把到达关系建成一张DAG,我们要做的就只是:对每一个点,求他所有后继的权值和.但是DAG后继数问题,众所周知只有\(O(|E||V|)\)做法,于是换思…
图论 图论解题报告索引 DFS poj1321 - 棋盘问题 poj1416 - Shredding Company poj2676 - Sudoku poj2488 - A Knight's Journey poj1724 - ROADS(邻接表+DFS) BFS poj3278 - Catch That Cow(空间BFS) poj2251 - Dungeon Master(空间BFS) poj3414 - Pots poj1915 - Knight Moves poj3126 - Prim…
Sharing Chocolate Chocolate in its many forms is enjoyed by millions of people around the world every day. It is a truly universal candy available in virtually every country around the world. You find that the only thing better than eating chocolate…
本题题目有点绕,结合图例大概可知,P(x,y)是以点给出的一个凸包,T是一个点集合,也构成一个凸包,构成的方法就是将原点(0,0)在P(x,y)的边上跑,移动坐标轴,其构成的最远点是个凸包,我们可以画出几个例子,可以看出,T一定是中心对称图形,而P与T相似,P也一定要是中心对称图形,且如果P是奇数条边就一定不满足条件,直接对x,y坐标判断是否是中心对称图形即可,相邻两个点坐标之差与对称的点的差相同 #include<bits/stdc++.h> using namespace std; #de…
A Round Peg in a Ground Hole Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5741   Accepted: 1842 Description The DIY Furniture company specializes in assemble-it-yourself furniture kits. Typically, the pieces of wood are attached to on…
项目复盘总结 开发需求: 在桌面机器人(向下俯视)摄像头拍摄到的图像中做条形码识别与二维码识别. 条形码在图像固定位置,二维码做成卡片的形式在固定区域内随意摆放. 开发环境及相关库:ubuntu 18.04 + Clion + opencv4.1.0 + zxing + zbar 开发思路及识别流程: 摄像头拍摄图像分辨率为640*480 1. 图像画面还原校正 由于摄像头(俯视)拍摄到的图像存在线性的透视偏差,类似于车辆行驶的车道线,两条相交的直线,因为透视效应直线向视距远处集中. 此处采用透…
题意: 求一条直线分凸包两边的面积. 解法: 因为题意会说一定穿过,那么不会有直线与某条边重合的情况.我们只要找到一个直线分成的凸包即可,另一个的面积等于总面积减去那个的面积. 怎么得到分成的一个凸包呢? 从0~n扫过去,如果扫到的边与直线不相交,那么把端点加进新凸包中,如果直线与扫到的边相交了,那么就将交点加入新凸包,然后以后不相交的话也不加入点到新凸包中,直到遇到下一个与直线相交的边,则把交点又加入新凸包,然后在扫到末尾加入点.这样就得到了. 即找到如图: 注意四舍五入. 代码: #incl…
求凸包面积.求结果后不用加绝对值,这是BBS()排序决定的. //Ps 熟练了template <class T>之后用起来真心方便= = //POJ 3348 //凸包面积 //1A 2016-10-15 #include <cstdio> #include <cstdlib> #include <cmath> #include <iostream> #include <cstring> #define MAXN (10000 +…
题目传送门 题意:告诉若干个矩形的信息,问他们在凸多边形中所占的面积比例 分析:训练指南P272,矩形面积长*宽,只要计算出所有的点,用凸包后再求多边形面积.已知矩形的中心,向量在原点参考点再旋转,角度要转换成弧度制. /************************************************ * Author :Running_Time * Created Time :2015/11/10 星期二 10:34:43 * File Name :UVA_10652.cpp…
题目传送门 题意:求凸包 + (int)求面积 / 50 /************************************************ * Author :Running_Time * Created Time :2015/11/4 星期三 11:13:29 * File Name :POJ_3348.cpp ************************************************/ #include <cstdio> #include <a…