傻鸡抓大闸蟹

吉首大学第八届“新星杯”B题(网赛) http://120.78.162.102/problem.php?cid=1433&pid=1

题目描述

背景
又到了吃大闸蟹的季节,黄老师想吃大闸蟹,于是叫傻鸡去抓大闸蟹~

描述
现有n只大闸蟹,每个在一个二维坐标上,保证没有任何两个大闸蟹重合。傻鸡伸手抓大闸蟹了,他怕大闸蟹的攻击,当他捉一只大闸蟹时,其他大闸蟹都朝这只运动(左边的向右,右边的向左,x坐标相同的不动)。
当然,大闸蟹只会在x方向上横行,每秒一单位长度。傻鸡捉一只大闸蟹一秒钟,当本秒末若某一只大闸蟹与傻鸡的手同x坐标,傻鸡的行动失败。问:怎样做才能抓完n只大闸蟹?
 

输入

第一行:n。n<=5000.
第二行有2*n正整数,相邻两个用一空格分开,第2*i-1和第2*i个数表示编号为i的大闸蟹的x,y坐标。0<=所有坐标<=2^31-1

输入保证按先x后y的递增序排列。
 

输出

一共n行,每行一个大闸蟹编号,表示傻鸡取大闸蟹的先后序列。如有多解,输出第一个编号最小的,如果第一个编号相同,输出第二个编号最大的,再相同,输出第三个编号最小的...... 
输入数据保证有解

 

样例输入 Copy

2
1 3 4 2

样例输出 Copy

1
2

这个题目呢....

题目说明了数据一定有解 而且x y是按从小到大的递增顺序输入的 那么这个题就很水了(重点是要理解题意)(想我之前搜索,搜了半天,太菜o(╥﹏╥)o

因为说了数据有解 所以不可能有俩个大闸蟹是相邻的(重点)

抓大闸蟹 因为刚开始没有俩只大闸蟹在一起 那么如果先抓最左边的这个 再抓最右边的这个 那么就相当于所有的大闸蟹没有动

抓了俩次之后大闸蟹还是在原地,那么直接从俩头向中间输出就好了(排序都不用....

上代码:

#include<bits/stdc++.h>
using namespace std;
int a,b,n,t,x,y;
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	cin>>a>>b;
	t=0;
	x=1;
	y=n;
	while(t<n)
	{
		if(t%2==0)
		{
			cout<<x<<endl;
			x++;
		}
		else
		{
			cout<<y<<endl;
			y--;
		}
		t++;
	}//从俩边向中间输出 
	return 0;
}

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值