zoukankan      html  css  js  c++  java
  • CF #319 div 2 E

    在一个边长为10^6正方形中,可以把它x轴分段,分成1000段。奇数的时候由底往上扫描,偶数的时候由上往下扫描。估计一下这个最长的长度,首先,我们知道有10^6个点,则y邮方向最多移动10^3*10^6。对于x轴方向,如果都在一个段内,则最多移动 10^3*10^6,如果均不在一个段内,最多就2000*10^3。比限制长度肯定要小。

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    
    using namespace std;
    
    struct Point{
    	int x,y,i;
    	Point(){};
    	Point (int xx,int yy,int ii){
    		x=xx;y=yy;i=ii;
    	}
    }p[1000005];
    
    bool cmp(Point a,Point b){
    	if(a.x/1000==b.x/1000){
    		if(a.x/1000%2==0){
    			if(a.y<b.y) return true;
    			return false;
    		}
    		else{
    			if(a.y>b.y) return true;
    			return false;
    		}
    	}
    	else{
    		if(a.x<b.x) return true;
    		return false;
    	}
    }
    
    int main(){
    	int n;
    	while(scanf("%d",&n)!=EOF){
    		for(int i=0;i<n;i++){
    			scanf("%d%d",&p[i].x,&p[i].y);
    			p[i].i=i+1;
    		}
    		sort(p,p+n,cmp);
    		printf("%d",p[0].i);
    		for(int i=1;i<n;i++)
    			printf(" %d",p[i].i);
    		puts("");
    	}
    	return 0;
    }
    
  • 相关阅读:
    Java面试知识点总结
    Log4j常用配置及使用
    Eclipse+tomcat+axis2进行web service部署
    iframe内点击a标签禁止滚动到顶部
    VScode首选项
    Bookmarks
    VScode常用插件
    slideout
    bs-loading
    iPhone X 上删除白条
  • 原文地址:https://www.cnblogs.com/jie-dcai/p/4816637.html
Copyright © 2011-2022 走看看