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

  • 相关阅读:
    React元素渲染
    初识JSX
    微信小程序复制文本到剪切板
    微信小程序报错request:fail url not in domain list
    小程序,通过自定义编译条件,模拟推荐人功能
    积分抵扣逻辑
    微信小程序 switch 样式
    tomcat 配置开启 APR 模式
    tomcat8 传输json 报错 Invalid character found in the request target. The valid characters are defined in RFC 3986
    c++数组初始化误区
  • 原文地址:https://www.cnblogs.com/saionjisekai/p/9884072.html
Copyright © 2011-2022 走看看