POJ3348:Cows——题解
http://poj.org/problem?id=3348
题目大意:用已给出的点围出面积最大的凸包,输出面积/50(向下取整)
——————————————————————————
第一道凸包?以及不知道第几次的奶牛题……
显然裸题,切了。
(那博文的意义何在?)
(呃……方便以后抄板子?)
- #include<cmath>
- #include<queue>
- #include<cstdio>
- #include<cstring>
- #include<iostream>
- #include<algorithm>
- using namespace std;
- typedef double dl;
- const int N=1e5+;
- inline int read(){
- int X=,w=;char ch=;
- while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
- while(isdigit(ch))X=(X<<)+(X<<)+(ch^),ch=getchar();
- return w?-X:X;
- }
- struct Point{
- dl x,y;
- Point(dl x0=,dl y0=){x=x0,y=y0;}
- };
- dl dis(Point a,Point b){//求两点距离
- return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
- }
- typedef Point Vector;
- Vector operator +(Point a,Point b){return Vector(a.x+b.x,a.y+b.y);}
- Vector operator -(Point a,Point b){return Vector(a.x-b.x,a.y-b.y);}
- Vector operator *(Point a,dl k){return Vector(a.x*k,a.y*k);}
- Vector operator /(Point a,dl k){return Vector(a.x/k,a.y/k);}
- dl Dot(Vector a,Vector b){//求点积
- return a.x*b.x+a.y*b.y;
- }
- dl Cross(Vector a,Vector b){//求叉积
- return a.x*b.y-b.x*a.y;
- }
- dl Cross(Point sp,Point ep,Point op){//得到sp-op和ep-op的叉积
- return (sp.x-op.x)*(ep.y-op.y)-(ep.x-op.x)*(sp.y-op.y);
- }
- Point p[N],q[N];
- int n,k,m;
- inline bool cmp(int u,int v){
- int det=Cross(p[u],p[v],p[]);
- if(det!=)return det>;
- return dis(p[],p[u])<dis(p[],p[v]);
- }
- void graham(){
- int id=;
- for(int i=;i<=n;i++)
- if(p[i].x<p[id].x||(p[i].x==p[id].x&&p[i].y<p[id].y))
- id=i;
- if(id!=)swap(p[],p[id]);
- static int per[N];
- for(int i=;i<=n;i++)per[i]=i;
- sort(per+,per+n+,cmp);
- q[++m]=p[];
- for(int i=;i<=n;i++){
- int j=per[i];
- while(m>=&&Cross(p[j],q[m],q[m-])>=)m--;
- q[++m]=p[j];
- }
- return;
- }
- inline int area(){
- int ans=;
- q[].x=;q[].y=;
- for(int i=;i<=m;i++)ans+=Cross(q[i],q[i%m+],q[]);
- return abs(ans)/;
- }
- int main(){
- n=read();
- for(int i=;i<=n;i++)p[i].x=read(),p[i].y=read();
- graham();
- int ans=area()/;
- printf("%d\n",ans);
- return ;
- }
POJ3348:Cows——题解的更多相关文章
- poj3348 Cows 凸包+多边形面积 水题
/* poj3348 Cows 凸包+多边形面积 水题 floor向下取整,返回的是double */ #include<stdio.h> #include<math.h> # ...
- POJ2182 Lost Cows 题解
POJ2182 Lost Cows 题解 描述 有\(N\)(\(2 <= N <= 8,000\))头母牛,每头母牛有自己的独一无二编号(\(1..N\)). 现在\(N\)头母牛站成一 ...
- POJ3348 Cows 计算几何 凸包
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ3348 题意概括 求凸包面积(答案÷50) 题解 凸包裸题. 代码 #include <cstr ...
- [BZOJ 1652][USACO 06FEB]Treats for the Cows 题解(区间DP)
[BZOJ 1652][USACO 06FEB]Treats for the Cows Description FJ has purchased N (1 <= N <= 2000) yu ...
- poj2186 Popular Cows 题解——S.B.S.
Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 29642 Accepted: 11996 De ...
- POJ-3348 Cows 计算几何 求凸包 求多边形面积
题目链接:https://cn.vjudge.net/problem/POJ-3348 题意 啊模版题啊 求凸包的面积,除50即可 思路 求凸包的面积,除50即可 提交过程 AC 代码 #includ ...
- 洛谷 SP740 TRT - Treats for the Cows 题解
SP740 TRT - Treats for the Cows 题目描述 FJ has purchased N (1 <= N <= 2000) yummy treats for the ...
- 洛谷 P2858 [USACO06FEB]奶牛零食Treats for the Cows 题解
P2858 [USACO06FEB]奶牛零食Treats for the Cows 题目描述 FJ has purchased N (1 <= N <= 2000) yummy treat ...
- 洛谷 P3088 [USACO13NOV]挤奶牛Crowded Cows 题解
P3088 [USACO13NOV]挤奶牛Crowded Cows 题目描述 Farmer John's N cows (1 <= N <= 50,000) are grazing alo ...
随机推荐
- docker in docker
docker run --rm可以从一个镜像启动容器,并在容器执行完成后自动删除,这在计算任务中非常有用. 例如,我们通过以下步骤完成计算任务容器的启动: 1 将输入数据通过卷挂载方式连接到计算任务容 ...
- ThinkPHP开启设置子域名笔记
一.ThinkPHP框架里 common下的config文件 'APP_SUB_DOMAIN_DEPLOY' => 1, // 开启子域名配置 'APP_SUB_DOMAIN_RULES' =& ...
- Consul初体验
Preface Today I'm gonna implement a consul in my environment to discover service of MySQL da ...
- JVM常见配置
堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值.如:为3,表示年轻代与年老代比值为1:3,年轻代 ...
- go通过第三方库 mahonia gbk 转utf8
go get github.com/axgle/mahonia dec := mahonia.NewDecoder("GBK")ret:=dec.ConvertString(res ...
- 【rich-text】 富文本组件说明
[rich-text] 富文本组件可以显示HTML代码样式. 1)支持事件:tap.touchstart.touchmove.touchcancel.touchend和longtap 2)信任的HTM ...
- 打包一个Docker镜像,让你的好友加载开启一个容器,并且每隔一秒输出hello,world到指定的文件中
一.两个脚本代码 Dockerfile FROM bash COPY . /usr/herui/ WORKDIR /usr/herui/ CMD [ "sh", "hel ...
- synchronized 详细解说
转自 http://blog.csdn.net/javazejian/article/details/72828483 出自[zejian的博客] 写的很详细很好,做下记录 本篇主要是对Java并发 ...
- Leetcode - 557. Reverse Words in a String III (C++) stringstream
1. 题目:https://leetcode.com/problems/reverse-words-in-a-string-iii/discuss/ 反转字符串中的所有单词. 2. 思路: 这题主要是 ...
- 共识算法 pos,Dpos
在之前讲解了比特币中的共识算法pow(proot of work),我们先来简单的回顾一下. 新的交易将会广播给所有节点. 每个节点将都会讲新的交易收集到一个区块中. 每个节点都在为其区块收集困难的工 ...