• CF535E Tavas and Pashmaks(凸包)


    题面

    原题
    翻译

    Solution

    考虑对于每一个点,显然R和S是没有用的,对吧.
    于是考虑一下对于每一个点可以维护一个类似于斜率的东西,然后搞一个凸包维护一下就好了.

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<math.h>
    #include<iostream>
    #include<queue>
    #include<algorithm>
    #define ll long long
    #define file(a) freopen(a".in","r",stdin);freopen(a".out","w",stdout)
    using namespace std;
    inline int gi(){
    	int sum=0,f=1;char ch=getchar();
    	while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
    	while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
    	return f*sum;
    }
    inline ll gl(){
    	ll sum=0,f=1;char ch=getchar();
    	while(ch>'9' || ch<'0'){if(ch=='-')f=-1;ch=getchar();}
    	while(ch>='0' && ch<='9'){sum=(sum<<3)+(sum<<1)+ch-'0';ch=getchar();}
    	return f*sum;
    }
    struct P{
    	int x,y,id;
    	bool operator<(const P RENA)const{
    		return x>RENA.x || (x==RENA.x && y>RENA.y);
    	}
    }p[300010];
    long double k[300010];
    int q[300010],t,ne[300010],f[300010];
    long double Slope(P a,P b){
    	return (long double)a.x*b.x*(b.y-a.y)/((long double)a.y*b.y*(b.x-a.x));
    }
    int main(){
    #ifndef ONLINE_JUDGE
    	file("slay");
    #endif
        int i,j,n,m;
    	n=gi();int Y=0,X;
    	for(i=1;i<=n;i++){
    		p[i].x=gi();p[i].y=gi();p[i].id=i;
    		if(Y<p[i].y || (Y==p[i].y && X<p[i].x))
    			X=p[i].x,Y=p[i].y;
    	}
    	sort(p+1,p+n+1);q[t=1]=1;
    	for(int i=2;i<=n && X<=p[i].x;i++){
    		if(p[q[t]].x==p[i].x){
    			if(p[q[t]].y==p[i].y){
    				ne[p[i].id]=ne[p[q[t]].id];
    				ne[p[q[t]].id]=p[i].id;
    			}
    			continue;
    		}
    		while(t>1 && k[t]>Slope(p[q[t]],p[i]))t--;
    		q[++t]=i;k[t]=Slope(p[q[t-1]],p[i]);
    	}
    	for(;t;t--)
    		for(i=p[q[t]].id;i;i=ne[i]){
    			f[i]=1;
    		}
    	for(i=1;i<=n;i++)if(f[i])printf("%d ",i);
    	puts("");
    	return 0;
    }
    
  • 相关阅读:
    字典_序列解包用于列表元组字典
    字典_序列解包用于列表元组字典
    字典_元素的访问_键的访问_值的访问_键值对的访问
    字典_特点_4种创建方式_普通-dict
    元组_生成器推导式创建元组-总结
    MySql高级
    技术点
    全文检索ElasticSearch
    数仓管理
    SpringCache
  • 原文地址:https://www.cnblogs.com/cjgjh/p/9817534.html
Copyright © 2020-2023  润新知