HDU 6127 Hard challenge (极角扫描)】的更多相关文章

题意:给定 n 个点,和权值,他们两两相连,每条边的权值就是他们两个点权值的乘积,任意两点之间的直线不经过原点,让你从原点划一条直线,使得经过的直线的权值和最大. 析:直接进行极角扫描,从水平,然后旋转180度,就可以计算出一个最大值,因为题目说了任意直线不是经过原点的,所以就简单了很多,每次碰到的肯定是一个点,而不是多个点. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdi…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6127 题意:平面直角坐标系上有n个整点,第i个点有一个点权val​,坐标为(xi,yi),其中不存在任意两点连成的直线经过原点.这些整点两两之间连有一条线段,线段的权值为其两端点的权值之积.你需要作一条过原点而不过任意一个给定整点的直线,使得和这条直线相交的线段的权值和最大. 解法:对于一条直线,线段权值和实际上就等于其两边点权和的乘积,所以把所有点按极角排个序,然后扫一圈就好了. #include…
Hard challenge Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 524288/524288 K (Java/Others)Total Submission(s): 1083    Accepted Submission(s): 444 Problem Description There are n points on the plane, and the ith points has a value vali, and…
acm.hdu.edu.cn/showproblem.php?pid=6127 [题意] 给定平面直角坐标系中的n个点,这n个点每个点都有一个点权 这n个点两两可以连乘一条线段,定义每条线段的权值为线段两端点点权的乘积 现在要过原点作一条直线,要求这条直线不经过任意一个给定的点 在所有n个点两两连成的线段中,计算与这条直线有交点的线段的权值和 最大化这个权值和并输出 题目保证,给定的n个点不重合且任意两个点的连线不经过原点 [思路] 一条经过原点的直线把n个点分成两个半平面A,B 假设A中的点权…
题目链接 Problem Description There are n points on the plane, and the ith points has a value vali, and its coordinate is (xi,yi). It is guaranteed that no two points have the same coordinate, and no two points makes the line which passes them also passes…
http://acm.hdu.edu.cn/showproblem.php?pid=6127 题意: 有n个点,每个点有一个$(x,y)$坐标和一个权值,任意两点之间都有连线,并且连线的权值为两个顶点的.现在画一条直线,求穿过的直线的权值和最大为多少. 思路: 直线将这些点分成了两个部分,然后你可以发现这两个部分之间所有直线的权值和为他们各部分的权值和的乘积.然后我们将所有点按极角排序,预处理一个前缀和,然后用扫描线扫描一圈即可. 我的做法是每次扫描一下点的个数,然后利用前缀和去计算. #inc…
pro:给定N个二维平面的关键点,保证两点连线不经过原点.现在让你安排一条经过原点,但是不经过关键点的直线,使得两边的和的乘积最大. sol:由于连线不经过原点,所以我们极角排序即可. 具体:因为我们的直线只需要180°,所以我们用atan(y/x)来排序,atan的范围是(-pi/2,pi/2): 而不是atan2. 这样的话,我们需要特殊处理y轴上的点. 由于没有两个同时在y轴上,所以我们可以把他看成y轴旁边的,这样不影响结果.   然后就是旋转这个直线,分成点在头部或者尾部来讨论加入还是移…
题目链接 题意:二维平面上有n个点(没有重叠,都不在原点,任意两点连线不过原点),每个点有一个权值,用一条过原点的直线把他们划分成两部分,使两部分的权值和的乘积最大.输出最大的乘积. 极角排序后,将原来(-pi,pi]区间的元素copy到(pi,3pi],用双指针维护一个角度差不超过pi的区间,记区间的权值和为sum1,用sum1*(sum-sum)更新ans #include<bits/stdc++.h> using namespace std; typedef long long LL;…
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5738 [题目大意] 给出平面中一些点,在同一直线的点可以划分为一个集合,问可以组成多少包含元素不少于2的集合. [题解] 最重要的还是处理点重合,和线重复计算的问题,对于每个点,进行极角排序,作为端点,然后统计包含它的每个集合即可.思路非常简单,然而比赛的时候……一脸懵逼地用map,pair,然后转战hash.看起来对于计算几何的敏感度还有待加强. [代码] #include <cstdio>…
Problem Description Matt has a company, Always Cook Mushroom (ACM), which produces high-quality mushrooms.  ACM has a large field to grow their mushrooms. The field can be considered as a 1000 * 1000 grid where mushrooms are grown in grid points numb…