zoukankan      html  css  js  c++  java
  • BNUOJ-26579 Bread Sorting YY

      题目链接:http://www.bnuoj.com/bnuoj/problem_show.php?pid=26579

      考虑两个性质:蚂蚁的相对位置不变,蚂蚁碰撞时相当于对穿而过,然后排两次序就可以了。。

     1 //STATUS:C++_AC_204MS_3048KB
     2 #include <functional>
     3 #include <algorithm>
     4 #include <iostream>
     5 //#include <ext/rope>
     6 #include <fstream>
     7 #include <sstream>
     8 #include <iomanip>
     9 #include <numeric>
    10 #include <cstring>
    11 #include <cassert>
    12 #include <cstdio>
    13 #include <string>
    14 #include <vector>
    15 #include <bitset>
    16 #include <queue>
    17 #include <stack>
    18 #include <cmath>
    19 #include <ctime>
    20 #include <list>
    21 #include <set>
    22 //#include <map>
    23 using namespace std;
    24 //#pragma comment(linker,"/STACK:102400000,102400000")
    25 //using namespace __gnu_cxx;
    26 //define
    27 #define pii pair<int,int>
    28 #define mem(a,b) memset(a,b,sizeof(a))
    29 #define lson l,mid,rt<<1
    30 #define rson mid+1,r,rt<<1|1
    31 #define PI acos(-1.0)
    32 //typedef
    33 typedef long long LL;
    34 typedef unsigned long long ULL;
    35 //const
    36 const int N=100010;
    37 const int INF=0x3f3f3f3f;
    38 const int MOD=1e9+7,STA=8000010;
    39 //const LL LNF=1LL<<60;
    40 const double EPS=1e-8;
    41 const double OO=1e15;
    42 const int dx[4]={-1,0,1,0};
    43 const int dy[4]={0,1,0,-1};
    44 const int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    45 //Daily Use ...
    46 inline int sign(double x){return (x>EPS)-(x<-EPS);}
    47 template<class T> T gcd(T a,T b){return b?gcd(b,a%b):a;}
    48 template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
    49 template<class T> inline T lcm(T a,T b,T d){return a/d*b;}
    50 template<class T> inline T Min(T a,T b){return a<b?a:b;}
    51 template<class T> inline T Max(T a,T b){return a>b?a:b;}
    52 template<class T> inline T Min(T a,T b,T c){return min(min(a, b),c);}
    53 template<class T> inline T Max(T a,T b,T c){return max(max(a, b),c);}
    54 template<class T> inline T Min(T a,T b,T c,T d){return min(min(a, b),min(c,d));}
    55 template<class T> inline T Max(T a,T b,T c,T d){return max(max(a, b),max(c,d));}
    56 //End
    57 
    58 struct Node{
    59     int p,d;
    60     bool operator < (const Node& a)const{
    61         return p<a.p;
    62     }
    63 }be[N],af[N];
    64 int L,n;
    65 
    66 int main()
    67 {
    68  //   freopen("in.txt","r",stdin);
    69     int i,j,w,T;
    70     char c;
    71     while(~scanf("%d%d",&L,&n))
    72     {
    73         T=-INF;
    74         for(i=0;i<n;i++){
    75             scanf("%d %c",&w,&c);
    76             be[i]=Node{w,c=='L'?-1:1};
    77             if(c=='L')T=Max(T,w);
    78             else T=Max(T,L-w);
    79         }
    80         for(i=0;i<n;i++)
    81             af[i]=Node{be[i].p+be[i].d*T,0};
    82 
    83         sort(be,be+n);
    84         sort(af,af+n);
    85         for(i=0;i<n && af[i].p<0;i++);
    86         if(af[i+1].p!=L)
    87             printf("The last ant will fall down in %d seconds - started at %d.
    ",T,be[i].p);
    88         else printf("The last ant will fall down in %d seconds - started at %d and %d.
    ",T,be[i].p,be[i+1].p);
    89     }
    90     return 0;
    91 }
  • 相关阅读:
    oracle 导入数据时提示只有 DBA 才能导入由其他 DBA 导出的文件
    oracle 常用语句
    android udp 无法收到数据 (模拟器中)
    android DatagramSocket send 发送数据出错
    AtCoder ABC 128E Roadwork
    AtCoder ABC 128D equeue
    AtCoder ABC 127F Absolute Minima
    AtCoder ABC 127E Cell Distance
    CodeForces 1166E The LCMs Must be Large
    CodeForces 1166D Cute Sequences
  • 原文地址:https://www.cnblogs.com/zhsl/p/3284077.html
Copyright © 2011-2022 走看看