码迷,mamicode.com
首页 > 其他好文 > 详细

团体程序设计天梯赛-L3-009 长城

时间:2018-08-30 16:54:24      阅读:501      评论:0      收藏:0      [点我收藏+]

标签:can   height   out   设计   bubuko   scanf   ret   ems   tor   

https://pintia.cn/problem-sets/994805046380707840/problems/994805050277216256

 

题目限制:烽火台只能向左看。

当新加入的点导致下凸,则栈顶的点一定要选择。

 技术分享图片

 

 

技术分享图片

 

 1 #include <cstdio>
 2 #include <cstdlib>
 3 #include <cmath>
 4 #include <cstring>
 5 #include <time.h>
 6 #include <string>
 7 #include <set>
 8 #include <map>
 9 #include <list>
10 #include <stack>
11 #include <queue>
12 #include <vector>
13 #include <bitset>
14 #include <ext/rope>
15 #include <algorithm>
16 #include <iostream>
17 using namespace std;
18 #define ll long long
19 #define minv 1e-6
20 #define inf 1e9
21 #define pi 3.1415926536
22 #define nl 2.7182818284
23 const ll mod=1e9+7;//998244353
24 const int maxn=1e5+10;
25 
26 ll x[maxn],y[maxn],z[maxn];
27 bool vis[maxn]={0};
28 
29 ll cross(ll x1,ll y1,ll x2,ll y2)
30 {
31     return x1*y2-x2*y1;
32 }
33 
34 int main()
35 {
36     int n,d,i,sum=0;
37     ll xx,yy;
38     scanf("%d",&n);
39     d=0;
40     for (i=1;i<=n;i++)
41     {
42         scanf("%lld%lld",&xx,&yy);
43         while (d>1 && cross(x[d-1]-x[d],y[d-1]-y[d],x[d]-xx,y[d]-yy)<=0)
44             d--;
45         if (i>=3)
46             vis[z[d]]=1;
47         d++;
48         x[d]=xx,y[d]=yy,z[d]=i;
49     }
50     for (i=2;i<=n;i++)
51         sum+=vis[i];
52     cout<<sum;
53     return 0;
54 }
55 /*
56 3
57 2 1
58 1 0
59 0 1
60 
61 5
62 5 0
63 4 0
64 3 0
65 2 0
66 1 0
67 */

 

团体程序设计天梯赛-L3-009 长城

标签:can   height   out   设计   bubuko   scanf   ret   ems   tor   

原文地址:https://www.cnblogs.com/cmyg/p/9560764.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!