http://poj.org/problem?id=3348

题目大意:用已给出的点围出面积最大的凸包,输出面积/50(向下取整)

——————————————————————————

第一道凸包?以及不知道第几次的奶牛题……

显然裸题,切了。

(那博文的意义何在?)

(呃……方便以后抄板子?)

  1. #include<cmath>
  2. #include<queue>
  3. #include<cstdio>
  4. #include<cstring>
  5. #include<iostream>
  6. #include<algorithm>
  7. using namespace std;
  8. typedef double dl;
  9. const int N=1e5+;
  10. inline int read(){
  11. int X=,w=;char ch=;
  12. while(!isdigit(ch)){w|=ch=='-';ch=getchar();}
  13. while(isdigit(ch))X=(X<<)+(X<<)+(ch^),ch=getchar();
  14. return w?-X:X;
  15. }
  16. struct Point{
  17. dl x,y;
  18. Point(dl x0=,dl y0=){x=x0,y=y0;}
  19. };
  20.  
  21. dl dis(Point a,Point b){//求两点距离
  22. return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
  23. }
  24.  
  25. typedef Point Vector;
  26. Vector operator +(Point a,Point b){return Vector(a.x+b.x,a.y+b.y);}
  27. Vector operator -(Point a,Point b){return Vector(a.x-b.x,a.y-b.y);}
  28. Vector operator *(Point a,dl k){return Vector(a.x*k,a.y*k);}
  29. Vector operator /(Point a,dl k){return Vector(a.x/k,a.y/k);}
  30.  
  31. dl Dot(Vector a,Vector b){//求点积
  32. return a.x*b.x+a.y*b.y;
  33. }
  34. dl Cross(Vector a,Vector b){//求叉积
  35. return a.x*b.y-b.x*a.y;
  36. }
  37. dl Cross(Point sp,Point ep,Point op){//得到sp-op和ep-op的叉积
  38. return (sp.x-op.x)*(ep.y-op.y)-(ep.x-op.x)*(sp.y-op.y);
  39. }
  40.  
  41. Point p[N],q[N];
  42. int n,k,m;
  43. inline bool cmp(int u,int v){
  44. int det=Cross(p[u],p[v],p[]);
  45. if(det!=)return det>;
  46. return dis(p[],p[u])<dis(p[],p[v]);
  47. }
  48. void graham(){
  49. int id=;
  50. for(int i=;i<=n;i++)
  51. if(p[i].x<p[id].x||(p[i].x==p[id].x&&p[i].y<p[id].y))
  52. id=i;
  53. if(id!=)swap(p[],p[id]);
  54.  
  55. static int per[N];
  56. for(int i=;i<=n;i++)per[i]=i;
  57. sort(per+,per+n+,cmp);
  58.  
  59. q[++m]=p[];
  60. for(int i=;i<=n;i++){
  61. int j=per[i];
  62. while(m>=&&Cross(p[j],q[m],q[m-])>=)m--;
  63. q[++m]=p[j];
  64. }
  65. return;
  66. }
  67. inline int area(){
  68. int ans=;
  69. q[].x=;q[].y=;
  70. for(int i=;i<=m;i++)ans+=Cross(q[i],q[i%m+],q[]);
  71. return abs(ans)/;
  72. }
  73. int main(){
  74. n=read();
  75. for(int i=;i<=n;i++)p[i].x=read(),p[i].y=read();
  76. graham();
  77. int ans=area()/;
  78. printf("%d\n",ans);
  79. return ;
  80. }

POJ3348:Cows——题解的更多相关文章

  1. poj3348 Cows 凸包+多边形面积 水题

    /* poj3348 Cows 凸包+多边形面积 水题 floor向下取整,返回的是double */ #include<stdio.h> #include<math.h> # ...

  2. POJ2182 Lost Cows 题解

    POJ2182 Lost Cows 题解 描述 有\(N\)(\(2 <= N <= 8,000\))头母牛,每头母牛有自己的独一无二编号(\(1..N\)). 现在\(N\)头母牛站成一 ...

  3. POJ3348 Cows 计算几何 凸包

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ3348 题意概括 求凸包面积(答案÷50) 题解 凸包裸题. 代码 #include <cstr ...

  4. [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 ...

  5. poj2186 Popular Cows 题解——S.B.S.

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 29642   Accepted: 11996 De ...

  6. POJ-3348 Cows 计算几何 求凸包 求多边形面积

    题目链接:https://cn.vjudge.net/problem/POJ-3348 题意 啊模版题啊 求凸包的面积,除50即可 思路 求凸包的面积,除50即可 提交过程 AC 代码 #includ ...

  7. 洛谷 SP740 TRT - Treats for the Cows 题解

    SP740 TRT - Treats for the Cows 题目描述 FJ has purchased N (1 <= N <= 2000) yummy treats for the ...

  8. 洛谷 P2858 [USACO06FEB]奶牛零食Treats for the Cows 题解

    P2858 [USACO06FEB]奶牛零食Treats for the Cows 题目描述 FJ has purchased N (1 <= N <= 2000) yummy treat ...

  9. 洛谷 P3088 [USACO13NOV]挤奶牛Crowded Cows 题解

    P3088 [USACO13NOV]挤奶牛Crowded Cows 题目描述 Farmer John's N cows (1 <= N <= 50,000) are grazing alo ...

随机推荐

  1. docker in docker

    docker run --rm可以从一个镜像启动容器,并在容器执行完成后自动删除,这在计算任务中非常有用. 例如,我们通过以下步骤完成计算任务容器的启动: 1 将输入数据通过卷挂载方式连接到计算任务容 ...

  2. ThinkPHP开启设置子域名笔记

    一.ThinkPHP框架里 common下的config文件 'APP_SUB_DOMAIN_DEPLOY' => 1, // 开启子域名配置 'APP_SUB_DOMAIN_RULES' =& ...

  3. Consul初体验

      Preface       Today I'm gonna implement a consul in my environment to discover service of MySQL da ...

  4. JVM常见配置

    堆设置 -Xms:初始堆大小 -Xmx:最大堆大小 -XX:NewSize=n:设置年轻代大小 -XX:NewRatio=n:设置年轻代和年老代的比值.如:为3,表示年轻代与年老代比值为1:3,年轻代 ...

  5. go通过第三方库 mahonia gbk 转utf8

    go get github.com/axgle/mahonia dec := mahonia.NewDecoder("GBK")ret:=dec.ConvertString(res ...

  6. 【rich-text】 富文本组件说明

    [rich-text] 富文本组件可以显示HTML代码样式. 1)支持事件:tap.touchstart.touchmove.touchcancel.touchend和longtap 2)信任的HTM ...

  7. 打包一个Docker镜像,让你的好友加载开启一个容器,并且每隔一秒输出hello,world到指定的文件中

    一.两个脚本代码 Dockerfile FROM bash COPY . /usr/herui/ WORKDIR /usr/herui/ CMD [ "sh", "hel ...

  8. synchronized 详细解说

    转自  http://blog.csdn.net/javazejian/article/details/72828483 出自[zejian的博客] 写的很详细很好,做下记录 本篇主要是对Java并发 ...

  9. Leetcode - 557. Reverse Words in a String III (C++) stringstream

    1. 题目:https://leetcode.com/problems/reverse-words-in-a-string-iii/discuss/ 反转字符串中的所有单词. 2. 思路: 这题主要是 ...

  10. 共识算法 pos,Dpos

    在之前讲解了比特币中的共识算法pow(proot of work),我们先来简单的回顾一下. 新的交易将会广播给所有节点. 每个节点将都会讲新的交易收集到一个区块中. 每个节点都在为其区块收集困难的工 ...