zoukankan      html  css  js  c++  java
  • 1583: [Usaco2009 Mar]Moon Mooing 哞哞叫

    1583: [Usaco2009 Mar]Moon Mooing 哞哞叫

    Time Limit: 10 Sec  Memory Limit: 64 MB
    Submit: 244  Solved: 126
    [Submit][Status][Discuss]

    Description

    Input

    第一行两个数,C和N

    第二行3个数,a1,b1,c1 第三行3个数,a2,b2,c2

    Output

    一个整数代表最长的那一次嚎叫

    Sample Input

    3 10
    4 3 3
    17 8 2

    Sample Output

    65

    HINT

     

    Source

    Gold

    题解:难以想象USACO竟然有此般水题,更何况还是GOLD DIVISION。。。(PS:但是我会告诉你我不仅仅第一反应是用堆做,而且还逗比了一次——忘开int64了TT)

    其实,由于题目中说了( d_1 leq a_1 )和( d_2 leq a_2 ),所以满足( frac{a_1}{d_1} geq 1 )和( frac{a_2}{d_2} geq 1 ),所以整个迭代式处于一个上升的阶段,也就是说问题就完全成了一个类似归并排序的东西了——直接两条线线性合并下搞定,时间复杂度( Oleft( N ight) )

     1 /**************************************************************
     2     Problem: 1583
     3     User: HansBug
     4     Language: Pascal
     5     Result: Accepted
     6     Time:1304 ms
     7     Memory:39288 kb
     8 ****************************************************************/
     9  
    10 var
    11    i,j,k,l,m,n,a1,b1,c1,a2,b2,c2,i1,i2:longint;
    12    x1,x2:int64;
    13    a:array[0..5000000] of int64;
    14 begin
    15      readln(m,n);
    16      readln(a1,b1,c1);
    17      readln(a2,b2,c2);
    18      a[1]:=m;i:=2;
    19      i1:=1;i2:=1;
    20      x1:=(a1*m) div c1+b1;
    21      x2:=(a2*m) div c2+b2;
    22      while i<=n do
    23            begin
    24                 if x1<x2 then
    25                    begin
    26                         if x1<>a[i-1] then
    27                            begin
    28                                 a[i]:=x1;
    29                                 inc(i);
    30                            end;
    31                         inc(i1);
    32                         x1:=(a[i1]*a1) div c1+b1;
    33                    end
    34                 else
    35                     begin
    36                          if x2<>a[i-1] then
    37                             begin
    38                                  a[i]:=x2;
    39                                  inc(i);
    40                             end;
    41                          inc(i2);
    42                          x2:=(a[i2]*a2) div c2+b2;
    43                     end;
    44            end;
    45      writeln(a[n]);
    46      readln;
    47 end.         
  • 相关阅读:
    批量重命令文件名称的几种方式
    SecureCRT常用快捷键
    ipv4地址从最后一位按步长递增
    win32
    GDI根据位图和透明度创建蒙版
    git bash的一些使用
    win32
    win32
    win32
    QT
  • 原文地址:https://www.cnblogs.com/HansBug/p/4412925.html
Copyright © 2011-2022 走看看