首页 > 其他分享 >圈奶牛

圈奶牛

时间:2023-08-15 20:34:55浏览次数:24  
标签:ch return int double ans sgn 奶牛

Smiling & Weeping

                ----秋天把旧叶子揉掉了,你要听新故事吗。

                      静静的河水睁着眼睛,

                  笑着说:总要有回家的人,总有离岸的船。

题目链接:P2742 [USACO5.1] 圈奶牛Fencing the Cows /【模板】二维凸包 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

思路:(• •)阿巴阿巴~

Talk is cheap , show me the code

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 const int N = 1e5+1;
 4 const double eps = 1e-6;
 5 int sgn(double x){
 6     if(fabs(x) < eps) return 0;
 7     else return x<0 ? -1 : 1;
 8 }
 9 struct Point{
10     double x,y;
11     Point(){}
12     Point(double x , double y): x(x),y(y){}
13     Point operator + (Point b) { return Point(x+b.x , y+b.y); }
14     Point operator - (Point b) { return Point(x-b.x , y-b.y); }
15     bool operator == (Point b) { return sgn(x-b.x)==0 && sgn(y-b.y)==0; }
16     bool operator < (Point b){
17         return sgn(x-b.x)<0 || (sgn(x-b.x)==0 && sgn(y-b.y)<0);
18     }
19 };
20 typedef Point Vector;
21 double Cross(Vector a , Vector b){
22     return a.x*b.y - a.y*b.x;
23 }
24 double Distance(Point a, Point b){return hypot(a.x-b.x , a.y-b.y); }
25 int Convex_hull(Point *p,int n , Point *ch){
26     n = unique(p,p+n)-p;
27     sort(p , p+n);
28     int v = 0;
29     for(int i = 0; i < n; i++){
30         while(v > 1 && sgn(Cross(ch[v-1]-ch[v-2] , p[i]-ch[v-1]))<=0)
31             v--;
32         ch[v++] = p[i];
33     }
34     int j = v;
35     for(int i = n-2; i >= 0; i--){
36         while(v > j && sgn(Cross(ch[v-1]-ch[v-2] , p[i]-ch[v-1]))<=0)
37             v--;
38         ch[v++] = p[i];
39     }
40     if(n>1) v--; // 因为最后一个一定要首尾相接,但是第一个一定保存了,所以个数减一
41     return v;
42 }
43 Point p[N] , ch[N];
44 int main()
45 {
46     int n;
47     scanf("%d",&n);
48     for(int i = 0; i < n; i++)
49         scanf("%lf %lf",&p[i].x,&p[i].y);
50     int v = Convex_hull(p , n , ch);
51     double ans = 0;
52     for(int i = 0; i < v; i++)
53         ans += Distance(ch[i],ch[(i+1)%v]);
54     printf("%.2f\n",ans);
55     return 0;
56 }

你所在之处,是我不得不思念的海角天涯

文章到此结束,我们下次再见ヾ( ̄▽ ̄)Bye~Bye~

标签:ch,return,int,double,ans,sgn,奶牛
From: https://www.cnblogs.com/smiling-weeping-zhr/p/17632358.html

相关文章

  • nflsoj 1351 抓住奶牛
    这题类似走迷宫,走迷宫是向四个方向进行拓展,而这道题好比是向三个方向拓展,分别是:\(x+1,x-1,x×2\)在这里拓展的时候我写了一个函数operation来计算拓展后的坐标这里判断坐标是否合法的时候我取了最大值的两倍加5,因为坐标不一定在\(k\)的左边,有可能超出去了再往回走,不过超出一......
  • P8271 [USACO22OPEN] COW Operations S 奶牛操作
    P8271[USACO22OPEN]COWOperationsS奶牛操作目录P8271[USACO22OPEN]COWOperationsS奶牛操作[USACO22OPEN]COWOperationsS题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示分析code[P8271USACO22OPEN]COWOperationsS-洛谷|计算机科学教育新生态(......
  • Closest Cow Wins S 最近的奶牛获胜
    ClosestCowWinsS最近的奶牛获胜题目传送门目录ClosestCowWinsS最近的奶牛获胜题目描述输入格式输出格式样例#1样例输入#1样例输出#1提示思路code题目描述FarmerJohn沿着一条高速公路拥有一个很长的农场,可以被看作类似于一维数轴。沿着农场有\(K\)块草地(\(1\le......
  • BZOJ 1915: [Usaco2010 Open]奶牛的跳格子游戏 单调队列优化dp
    1915:[Usaco2010Open]奶牛的跳格子游戏TimeLimit: 4Sec  MemoryLimit: 64MBSubmit: 281  Solved: 110[Submit][Status][Discuss]Description奶牛们正在回味童年,玩一个类似跳格子的游戏,在这个游戏里,奶牛们在草地上画了一行N个格子,(3<=N<=250,000),编号为1..N......
  • P1578 奶牛浴场
    显然极大子矩形的任意边界要么上面有障碍点,要么贴着整个矩形的边界。枚举上边界,这样我们就只需要考虑上边界下面的那些点了,正反预处理出\(x\)轴严格单调递增的单调栈。再枚举下边界上的障碍点,根据向左向右能到的最远位置计算面积。具体实现时可以添加\((0,0)\)这个点,解决上......
  • 【寒假每日一题】AcWing 4818. 奶牛大学(补)
    一、题目1、原题链接4818.奶牛大学2、题目描述FarmerJohn计划为奶牛们新开办一所大学!有N头奶牛可能会入学。每头奶牛最多愿意支付ci的学费。FarmerJohn可以设定所有奶牛入学需要支付的学费。如果这笔学费大于一头奶牛愿意支付的最高金额,那么这头奶牛就不会入学。Farm......
  • 牛客题解-mixup2混乱的奶牛(状压dp)
    题解-mixup2混乱的奶牛[原题连接](1026-mixup2混乱的奶牛_2021秋季算法入门班第八章习题:动态规划2(nowcoder.com))题目描述混乱的奶牛[DonPiele,2007]FarmerJohn的N(4<=N<=16)头奶牛中的每一头都有一个唯一的编号S_i(1<=S_i<=25,000).奶牛为她们的编号感到骄傲......
  • 洛谷P1578 奶牛浴场
    题目大意又是农夫约翰有一个$L\timesW$的矩阵,中间有$n$个障碍,你要框出面积最大的一块长方形,其中不能包含障碍。数据范围对于所有数据,\(0\len\le5\times10^3,1\leL,W\le3\times10^4\)题解首先,可以根据极大化思想设计一个基本算法:枚举上下左右四个边界......
  • papamelon 344. 奶牛展览 Cow Exhibition(挑战程序设计竞赛) dp
    地址https://www.papamelon.com/problem/344贝西有权选择让哪些奶牛参加展览。由于负的智商或情商会造成负面效果,所以贝西不希望出展奶牛的智商之和小于零,或情商之和小于零。满足这两个条件下,她希望出展奶牛的智商与情商之和越大越好,请帮助贝西求出这个最大值。输入第一行:......
  • 【每日一题】AcWing 1904. 奶牛慢跑
    题目奶牛们又出去锻炼蹄子去了!有N头奶牛在无限长的单行道上慢跑。每头奶牛在跑道上开始奔跑的位置互不相同,一些奶牛的奔跑速度可能相同,也可能不同。由于跑道是单行道,十分狭窄,奶牛们无法相互超越。当一头速度很快的牛追上另一头牛时,她必须减速至与另一头牛速度相同以免发生碰撞,并成......