美文网首页PAT
GPLT L3-009. 长城 凸包

GPLT L3-009. 长城 凸包

作者: 无令便逐风 | 来源:发表于2018-03-30 18:00 被阅读6次

题目链接戳这里
像是单纯求凸包,其实不然. 题目的数据,并非题目所画的例子,我画了出来:

数据的图

其实题目是求:求凸包的过程中,那些凸起来的点.
如这个例图中我标记的红色的点.
关于凸包,可以参考我的这篇文章

具体做法:
我们用栈来维护求凸包过程中遇到的点,对于求取过程中,从先到后,点为p[s[k-2]], p[s[k-1]], p[i],其中i是经过计算后使得满足凸性的点,那么中间的p[s[k-1]]点必然是求凸包过程中凸起来的点,我们对其进行一个vis的标记,最后统计vis了几个即可.
另外注意要用long long

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

#define mst(a,b) memset(a,b,sizeof(a))
#define rep(i,a,b) for(ll i=(a);i<(b);++i)
#define fi first
#define se second
typedef long long ll;
typedef pair<ll, ll> P;
const ll inf = 0x3f3f3f3f, maxN = 100005;
ll N, M, vis[maxN];
P p[maxN];
ll s[maxN];

bool nok(const P& a, const P& b, const P& c) {
    return (b.fi - a.fi) * (b.se - c.se)
        - (b.fi - c.fi) * (b.se - a.se) >= 0;
}

int main() {
    // freopen("data.in", "r", stdin);
    scanf("%lld", &N);
    rep(i, 0, N)
        scanf("%lld %lld", &p[i].fi, &p[i].se);
    ll k = 0;
    mst(vis, 0);
    rep(i, 0, N) {
        while (k >= 2 && nok(p[s[k - 2]], p[s[k - 1]], p[i]))
            --k;
        if (k >= 1)
            vis[s[k - 1]] = 1;
        s[k++] = i;
    }
    ll ans = 0;
    rep(i, 1, N)
        if (vis[i])
            ++ans;
    printf("%lld", ans);
    return 0;
}

相关文章

  • GPLT L3-009. 长城 凸包

    题目链接戳这里像是单纯求凸包,其实不然. 题目的数据,并非题目所画的例子,我画了出来: 其实题目是求:求凸包的过程...

  • 凸包

    向量的叉乘就是由该两个向量所组成的平行四边形的面积(x1y2-x2y1).这个凸包不是太懂.先留模板在此这个是水平...

  • 凸包

    凸包最常用的凸包算法是Graham扫描法和Jarvis步进法Graham's Scan法这个算法是由数学大师葛立恒...

  • 凸包

    convexHull 实例

  • 凸包

    逼近多边形是轮廓的高度近似,但是有时候我们希望使用一个多边形的凸包来简化它。凸包跟逼近多边形很像,只不过它是物体最...

  • Python3 趣味系列题8 ------ 凸包动态绘制

    本文介绍利用Graham Scan算法获得凸包(平面凸包),并动态展示凸包的形成过程。下面用比较通俗的语言,介绍下...

  • 算法复习-geometric algo

    convex hull 凸包-video25&video26 凸包算法剖析https://cyw3.github....

  • 图像轮廓(2)

    1. 凸包 凸缺陷可以用来处理手势识别问题 points:轮廓clockwise:True:凸包按顺时针方向排列;...

  • 3,4 仿射,凸,凸锥

    仿射组合凸组合凸锥组合组合后的所有点组成的称为仿射\凸\凸锥包

  • 提取平面点云的轮廓

    一. 基于凸包的凹点挖掘算法: 1. 提取点云的凸包 2. 计算凸包每条边的顶点的点密度(即该点 K 个临...

网友评论

    本文标题:GPLT L3-009. 长城 凸包

    本文链接:https://www.haomeiwen.com/subject/wsgicftx.html