zoukankan      html  css  js  c++  java
  • SSL 1577——泽泽在中国

    Description

      众所周知,在中国有个地方叫“万里长城”。
      泽泽一天后山玩,在捉蟋蟀的时候,忽然看见一个奇怪的洞。泽泽好奇,就钻了进去,结果……
      泽泽来到中国万里长城上。长城的城墙很高,泽泽FQ翻不出去。后面的路又被堵住了,于是泽泽只有一个选择:向前走。
    泽泽向前一看,看见一块牌子,牌子上写道:
      若要离开此地,就爬出长城吧。
      泽泽无语。平时泽泽最不擅长的就是长跑,现在天不遂人愿,他遇上了麻烦。但是没有别的去路,于是他硬着头皮爬起来。
    泽泽爬一个单位距离需要一个单位时间。但是这座长城年久失修,地上出现了很多的坑和杂草堆。泽泽在这些地方爬行需要更长的时间。
      现在泽泽知道这座长城的长度,以及哪些地方有坑和杂草堆,请算出泽泽需要多少时间才能爬出长城。

    Input

    第1行2个整数s,n。s表示长城的长度,n表示有多少坑和杂草堆。
    之后的n行,每行3个整数ai,bi,ti。表示从ai到bi的一段每个单位距离泽泽需要ti的时间。泽泽在没有坑和杂草堆的地方每个单位距离需要时间1。(保证长度没有重合的)

    Output

    一个整数,即泽泽爬出的时间。

    Sample Input

    20 5
    2 4 2
    6 7 4
    8 10 2
    11 11 5
    17 20 5
    Sample Output

    52

    题目提示
    这座长城泽泽需要走的时间的模拟图:
    1 2 2 2 1 4 4 2 2 2 5 1 1 1 1 1 5 5 5 5
    Hint

    数据范围
    对于30%的数据,s<=50000,n<=100
    对于100%的数据,s<=2000000000,n<=500000
    (保证最后结果不超过maxlongint)


    简单的模拟,秒过。


    代码如下:

    var
     s,n,i,k:longint;
     a,b,t:array[1..500000]of longint;
    begin
      readln(s,n);
      for i:=1 to n do readln(a[i],b[i],t[i]);
      for i:=1 to n do
       begin
         if (i=1)and(a[i]<>1) then k:=k+a[i]-1
          else
           if (a[i]<>b[i-1])and(i<>1) then k:=k+a[i]-b[i-1]-1;
         k:=k+(b[i]-a[i]+1)*t[i];
       end;
      if b[n]<>s then k:=k+s-b[n];
      writeln(k);
    end.
  • 相关阅读:
    46. 全排列
    90. 子集 II
    289. 生命游戏
    844. 比较含退格的字符串
    1266. 访问所有点的最小时间
    707. 设计链表
    DOM 关于dom的
    插件库
    浏览器判断
    FTP 客户端安装
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412381.html
Copyright © 2011-2022 走看看