zoukankan      html  css  js  c++  java
  • 【XSY2558】圆上的蚂蚁 Ants on circle

    Description

    L个点围成一个圆. 我们选定任意一个点作为原点, 则每个点的坐标为从原点顺时针走到这个点的距离. 圆上有N只蚂蚁, 分别被编号为1到N. 开始时, 第ii只蚂蚁在坐标为Xi的点上. 这N只蚂蚁同时开始移动. 对于每一只蚂蚁i, 给定其初始方向Wi: 假如i开始时是顺时针走的, 则Wi的值为1; 否则为2. 每只蚂蚁的速度均为1. 当某个时刻两只蚂蚁相遇时, 它们都分别都掉头往反方向走.

    对于每一只蚂蚁, 请你求出其开始移动T秒后的位置.

    Input
    输入格式如下:

    N L T
    X1 W1
    X2 W2
    :
    XN WN

    Output
    输出N行, 第i为T秒后第i只蚂蚁所在的坐标.

    每个坐标都在[0,L−1]之间.

    Sample Input

    sample input 1:
    3 8 3
    0 1
    3 2
    6 1

    sample input 2:
    4 20 9
    7 2
    9 1
    12 1
    18 1
    Sample Output

    sample output 1:
    1
    3
    0

    sample output 2:
    7
    18
    18
    1

    其实,这题有一个弱化版,那题并不要求按蚂蚁顺序输出,只用从小到大输出有蚂蚁的位置即可。

    那题解题的关键在于相遇时的掉头相当于直接穿过去了(因为不要求编号),那这题中的相遇就相当于交换了编号罢了。

    所以蚂蚁们T秒后的位置我们可以非常简单地算出来,只是不知道哪一个位置对应哪一只蚂蚁。

    所以我们就算出一号蚂蚁在T秒后的Rank,照着Rank输出即可

    我们以一只蚂蚁为标准,每有一只蚂蚁倒着穿过它,Rank--,正着穿过它,Rank++。
    接下来,按顺序输出即可。

    注意:这里的负数如果不被(l)整除,实际上他是多转了一圈的,要再次(--)
    #include<bits/stdc++.h>
    #define N 1000010
    using namespace std;
    struct data
    {
    	int x,w;
    }a[N];
    bool cmp(data a,data b)
    {
    	return a.x<b.x;
    }
    int n,l,t,sum;
    int main()
    {
    	scanf("%d%d%d",&n,&l,&t);
    	for(int i=1;i<=n;i++)
    	{
    		scanf("%d%d",&a[i].x,&a[i].w);
    		a[i].w--;
    	}
    	for(int i=1;i<=n;i++)
    	{
    		if(!a[i].w)
    		{
    			a[i].x+=t;
    		}else{
    			a[i].x-=t;
    		}
    		sum+=a[i].x/l;//计算第1只蚂蚁的Rank
    		if(a[i].x%l<0)//这里减少了(是负数,但不整除),要再减一次
    		{
    			sum--;
    		}
    		a[i].x=(a[i].x%l+l)%l;
    	}
    	sort(a+1,a+n+1,cmp);
    	sum=(sum%n+n)%n;
    	for(int i=sum+1;i<=n;i++)
    	{
    		printf("%d
    ",a[i].x);
    	}
    	for(int i=1;i<=sum;i++)
    	{
    		printf("%d
    ",a[i].x);
    	}
    	return 0;
    }
    
  • 相关阅读:
    How to install VXDIAG Honda, Toyota and JLR SDD software
    16% off MPPS V16 ECU tuning tool for EDC15 EDC16 EDC17
    Cummins INSITE locked and ask for verification code
    How to use BMW Multi Tool 7.3 to replace lost key for BMW X1
    Bleed Brake Master Cylinder with Intelligent Tester IT2
    Porsche Piwis Tester II “No VCI has been detected”,how to do?
    Creader VIII VS. Creader VII+
    How to solve GM MDI cannot complete the installation
    汽车OBD2诊断程序开发 (原文转载,思路很清晰!)
    汽车节温器单片机开发思路
  • 原文地址:https://www.cnblogs.com/2017gdgzoi44/p/11486474.html
Copyright © 2011-2022 走看看