zoukankan      html  css  js  c++  java
  • 10.31T3 其他算法思想

    T1 蚂蚁移动

    (move.cpp/c)

    【问题描述】

       有一根尺子,长度L<=200000,在上面有N(N <= 70000,N < L)只蚂蚁,且没有两只蚂蚁初始位置相同。每只蚂蚁有一个初始方向(左或者右),且它们会爬行,速度都是每秒一个长度单位。当它们碰到另外一个蚂蚁或者尺子的边缘时,它们会立即改变移动的方向(即反向)。 
      给定尺子的长度,蚂蚁的只数,以及所有蚂蚁初始的位置和方向。要你求第T秒时每只蚂蚁的位置(1<=T<=1000000)。

    【输入格式】

        第一行两个整数L和T。 
     第二行一个整数N,表示蚂蚁的只数。 
     接下来的每行由两部分组成。第一部分是一个整数,表示该蚂蚁的初始位置。第二部分是一个字母,表示初始方向:D表示向右,L表示向左。两部分中间空格。

    【输出格式】

        N个整数,表示每只蚂蚁的最终位置。无需按照蚂蚁的原先编号输出,只要按照最终位置坐标递增(非降)的顺序输出坐标即可。

    【样例输入】

     5 5 
     2 
     2 D 
     4 L
    【样例输出】

    1 3

    两只蚂蚁相碰等于穿过,就完了

    code:

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<algorithm>
     5 using namespace std;
     6 int a[80000],tot;
     7 int main() {
     8     int L,T;
     9     cin>>L>>T;
    10     int n;
    11     cin>>n; 
    12     T%=2*L;
    13     for(int i=1; i<=n; i++) {
    14         int pos;
    15         char d;
    16         cin>>pos>>d;
    17         if(d=='L') {
    18             a[++tot]=abs(pos-T);
    19             if(a[tot]>L)a[tot]-=2*(a[tot]-L);
    20         } else {
    21             a[++tot]=pos+T;
    22             if(a[tot]>L)a[tot]-=2*(a[tot]-L);
    23             if(a[tot]<0)a[tot]=-a[tot];
    24         }
    25     }
    26     sort(a+1,a+tot+1);
    27     for(int i=1;i<=tot;i++)cout<<a[i]<<" ";
    28     return 0;
    29 }

    over

  • 相关阅读:
    Cocos2d JS 之消灭星星(二) 工具类开发
    Cocos2d JS 之消灭星星(三) 进入游戏过渡场景
    Cocos2d JS 之本地存储(localStorage)
    Cocos2d JS 之消灭星星(—) 游戏初始化场景的建立
    小程序的1024KB
    小程序来了(下篇)
    小程序来了(上篇)
    那些年,让我们一起着迷的Spring
    小程序之信息触手可及
    史诗手册!微信小程序新手自学入门宝典!
  • 原文地址:https://www.cnblogs.com/saionjisekai/p/9884072.html
Copyright © 2011-2022 走看看