2018.07.03 POJ 3348 Cows(凸包)
Cows 
Time Limit: 2000MS        Memory Limit: 65536K 
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 forced to save money on buying fence posts by using trees as fence posts wherever possible. Given the locations of some trees, you are to help farmers try to create the largest pasture that is possible. Not all the trees will need to be used.
However, because you will oversee the construction of the pasture yourself, all the farmers want to know is how many cows they can put in the pasture. It is well known that a cow needs at least 50 square metres of pasture to survive. 
Input 
The first line of input contains a single integer, n (1 ≤ n ≤ 10000), containing the number of trees that grow on the available land. The next n lines contain the integer coordinates of each tree given as two integers x and y separated by one space (where -1000 ≤ x, y ≤ 1000). The integer coordinates correlate exactly to distance in metres (e.g., the distance between coordinate (10; 11) and (11; 11) is one metre). 
Output 
You are to output a single integer value, the number of cows that can survive on the largest field you can construct using the available trees.
Sample Input 
4 
0 0 
0 101 
75 0 
75 101 
Sample Output 
151 
Source 
CCC 2007
很显然,这道题是要让我们算出给出点的凸包的面积。综上所述:这是一道凸包的裸板题,我本蒟蒻用的是Graham" role="presentation" style="position: relative;">GrahamGraham扫描法。
代码如下:
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define N 10005
using namespace std;
struct pot{
    double x,y;
}p[N],vec[N];
inline double cross(pot a,pot b){return a.x*b.y-a.y*b.x;}
inline pot Vector(pot a,pot b){pot c;c.x=a.x-b.x,c.y=a.y-b.y;return c;}
inline double calc(pot *p,int n){
    double ans=0;
    for(int i=1;i<n-1;++i)
        ans+=cross(Vector(p[i],p[0]),Vector(p[i+1],p[0]));
    return ans/2;
}
inline bool cmp(const pot&x,const pot&y){return x.x==y.x?x.y<=y.y:x.x<y.x;}
inline int solve(pot *p,int n,pot *vec){
    sort(p,p+n,cmp);
    int m=0;
    for(int i=0;i<n;++i){
        while(m>1&&cross(Vector(vec[m-1],vec[m-2]),Vector(p[i],vec[m-2]))<=0)--m;
        vec[m++]=p[i];
    }
    int k=m;
    for(int i=n-2;i>=0;--i){
        while(m>k&&cross(Vector(vec[m-1],vec[m-2]),Vector(p[i],vec[m-2]))<=0)--m;
        vec[m++]=p[i];
    }
    if(n>1)m--;
    return m;
}
int main(){
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;++i)scanf("%lf%lf",&p[i].x,&p[i].y);
    int m=solve(p,n,vec),ans=0;
    double area=calc(vec,m);
    while(area>=50)area-=50,++ans;
    printf("%d",ans);
}												
											2018.07.03 POJ 3348 Cows(凸包)的更多相关文章
- POJ 3348 Cows 凸包 求面积
		
LINK 题意:给出点集,求凸包的面积 思路:主要是求面积的考察,固定一个点顺序枚举两个点叉积求三角形面积和除2即可 /** @Date : 2017-07-19 16:07:11 * @FileNa ...
 - POJ 3348 - Cows 凸包面积
		
求凸包面积.求结果后不用加绝对值,这是BBS()排序决定的. //Ps 熟练了template <class T>之后用起来真心方便= = //POJ 3348 //凸包面积 //1A 2 ...
 - 2018.07.03 POJ 1279Art Gallery(半平面交)
		
Art Gallery Time Limit: 1000MS Memory Limit: 10000K Description The art galleries of the new and ver ...
 - 2018.07.08 POJ 2481 Cows(线段树)
		
Cows Time Limit: 3000MS Memory Limit: 65536K Description Farmer John's cows have discovered that the ...
 - poj 3348 Cows 凸包 求多边形面积 计算几何 难度:0 Source:CCC207
		
Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 7038 Accepted: 3242 Description ...
 - POJ 3348 Cows (凸包模板+凸包面积)
		
Description Your friend to the south is interested in building fences and turning plowshares into sw ...
 - POJ 3348 Cows [凸包 面积]
		
Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 9022 Accepted: 3992 Description ...
 - POJ 3348 Cows | 凸包——童年的回忆(误)
		
想当年--还是邱神给我讲的凸包来着-- #include <cstdio> #include <cstring> #include <cmath> #include ...
 - POJ 3348 Cows | 凸包模板题
		
题目: 给几个点,用绳子圈出最大的面积养牛,输出最大面积/50 题解: Graham凸包算法的模板题 下面给出做法 1.选出x坐标最小(相同情况y最小)的点作为极点(显然他一定在凸包上) 2.其他点进 ...
 
随机推荐
- springboot - mybatis - 下划线与驼峰自动转换 mapUnderscoreToCamelCase
			
以前都是在mybatis.xml中来配置,但是spring boot不想再用xml配置文件.网上搜寻了好久,才找到设置办法:sessionFactoryBean.getObject().getConf ...
 - Java架构技术知识点梳理
			
Java程序员应该加以重视: 吃透基础技术 养成良好的阅读源码的习惯 有长期的技术学习规划 下面,我们来一起逐条看看,特别是第 3 个方法. 想要做到年薪50万,首先你自己必须是高水平的程序员! 能年 ...
 - 切换当前目录 pushd 和 popd
			
切换当前目录@echo offc: & cd\ & md mp3 #在 C:\ 建立 mp3 文件夹md d:\mp4 #在 D:\ 建立 mp ...
 - Maven 项目中 添加自己的jar包
			
mvn install:install-file -Dfile=java-bloomfilter-1.0.jar -DgroupId=com.sina -DartifactId=java-bl ...
 - windows下的java项目打jar分别编写在windows与linux下运行的脚本( 本人亲测可用!)
			
前言: 最近公司做了一个工具,要将这个工具打包成一个可运行的程序,编写start.bat和start.sh在windows和linux下都可以运行. 在网上找了很多资料,最后终于找到一个可靠的资料,记 ...
 - 吴裕雄 python 数据处理(2)
			
import pandas as pd data = pd.read_csv("F:\\python3_pachongAndDatareduce\\data\\pandas data\\hz ...
 - 导出 java.io.IOException: 权限不够
			
项目原先都是开发使用root账号登陆服务器,人肉部署. 今天改成了自动部署,部署之后发现导出用不了了,查看服务器日志提示: 查看项目启动用户是app,推断是app用户的权限不够,导致导出无法在服务器创 ...
 - 常用数据库ID格式
			
转自:http://www.biotrainee.com/thread-411-1-1.html 常用数据库 ID ID 示例 ID 来源 ENSG00000116717 Ensemble ID GA ...
 - date.getTime()
			
Date date = new Date(); System.out.println(date.getTime()); 输出结果是1210745780625 编译时间当时时间大概是2008年5.14好 ...
 - azkaban编译安装配置文档
			
azkaban编译安装配置文档 参考官方文档: http://azkaban.github.io/azkaban/docs/latest/ azkaban的配置文件说明:http://azkaban. ...