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
  • 相关阅读:
    SLS评测报告
    Flash对不同的浏览器的兼容性
    NodeJS的Cluster模块使用
    Varnish+Xcache构建高性能WEB构架初探
    Memcached Client的释疑
    Firebug及YSlow简介与使用图文详解
    PHP Memcached 实现简单数据库缓存
    PHP + Memcache 实现Session共享
    Linux 开机关机在线求助与指令输入
    Linux 基础学习篇笔记 Linux基础知识
  • 原文地址:https://www.cnblogs.com/InitRain/p/12417143.html
Copyright © 2011-2022 走看看