zoukankan      html  css  js  c++  java
  • cf 1237 C2. Balanced Removals (Harder)

    题意:

    三维空间上有n个点(无重点),n为偶数,要求进行n/2次操作,每次操作消除两个点,记为 (xa,ya,za)和(xb,yb,zb),需满足不存在点(xc,yc,zc),使得

    min(xa,xb)xcmax(xa,xb&& min(ya,yb)≤yc≤max(ya,yb) && min(za,zb)zcmax(za,zb)

    思路:

    对于x与y都相等点,排序,然后z相邻的那些一对一对的点就一定可以消除。

    然后就只剩下x相同的那些点,同理,再消除。

    最后,就没有x相同的点了,再消除。

    结束。

    代码:

    #include <stdio.h>
    #include <string.h>
    #include <cmath>
    #include <iostream>
    #include <vector>
    #include <algorithm>
    using namespace std;
    typedef long long int ll;
    const double pi = acos(-1);
    const int maxn = 1e5 + 10;
    struct node{
        int x,y,z,id;
        friend bool operator <(node a,node b){
            if(a.x != b.x)
                return a.x < b.x;
            else if(a.y != b.y)
                return a.y < b.y;
            else
                return a.z < b.z;
        }
    }p[maxn];
    int main()
    {
        int n;
        while(scanf("%d",&n) != EOF){
            for(int i = 1;i <= n;i++){
                p[i].id = i;
                scanf("%d%d%d",&p[i].x,&p[i].y,&p[i].z);
            }
            sort(p + 1,p + n + 1);
            for(int i = 1;i <= n - 1;i++){
                if(p[i].x == p[i + 1].x && p[i].y == p[i + 1].y){
                    printf("%d %d
    ",p[i].id,p[i + 1].id);
                    p[i].x = 1e9;
                    p[i + 1].x = 1e9;
                    i++;
                }
            }
            sort(p + 1,p + n + 1);
            for(int i = 1;i <= n - 1;i++){
                if(p[i].x == 1e9)
                    break;
                if(p[i].x == p[i + 1].x){
                    printf("%d %d
    ",p[i].id,p[i + 1].id);
                    p[i].x = 1e9;
                    p[i + 1].x = 1e9;
                    i++;
                }
            }
            sort(p + 1,p + n + 1);
            for(int i = 1;i <= n - 1;i+=2){
                if(p[i].x == 1e9)
                    break;
                printf("%d %d
    ",p[i].id,p[i + 1].id);
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    jenkins
    k8s 驱逐限制
    jenkins+k8s 实现持续集成
    镜像更新备份
    【工具分享】2020年4月 phpstorm2020.1 for mac
    【排坑】mac安装homebrew会遇到的各种问题解决方案
    记一次C盘扩容
    2018夏季工作台之再设计
    left join后面加上where条件浅析
    编程随想篇(2018夏)
  • 原文地址:https://www.cnblogs.com/InitRain/p/12417143.html
Copyright © 2011-2022 走看看