zoukankan      html  css  js  c++  java
  • uva10273 常数优化失败……

    同样的算法http://www.cnblogs.com/staginner/archive/2011/10/26/2225649.html C++就能过,pascal死活过不了……

    怀疑Uva没有开-O2 = =

    求常数优化

    #   Problem Verdict Language Run Time Submission Date
    11661422 10273 Eat or Not to Eat? Time limit exceeded PASCAL 3.000 2013-04-24 11:41:13
    11661382 10273 Eat or Not to Eat? Time limit exceeded PASCAL 3.000 2013-04-24 11:35:06
    11661336 10273 Eat or Not to Eat? Time limit exceeded PASCAL 3.000 2013-04-24 11:29:44
    11661253 10273 Eat or Not to Eat? Time limit exceeded PASCAL 3.000 2013-04-24 11:14:13
    11661190 10273 Eat or Not to Eat? Time limit exceeded PASCAL 3.000 2013-04-24 10:59:35
    11661160 10273 Eat or Not to Eat? Time limit exceeded PASCAL 3.000 2013-04-24 10:51:02

    TAT

    program p10273;
    
    Const
     lcm:array[1..10] of longint=(1,2,6,12,60,60,420,840,2520,2520);
    
    Var
     a:array[0..1000,0..9] of longint;
     k,prev,next:array[0..1002] of longint;
     t,n,i,j,last,ate,o,u,day,daymax,circle,h:longint;
     only,kill:boolean;
    
    Procedure fopen;
      begin
      assign(input,'p10273.in');
      assign(output,'p10273.out');
      reset(input);
      rewrite(output);
    end;
    
    Procedure fclose;
      begin
      close(input);
      close(output);
    end;
    
    Procedure Delete(P:longint);inline;
      begin
      if prev[p]<>0 then next[prev[p]]:=next[p] else h:=next[p];
      if next[p]<>0 then prev[next[p]]:=prev[p];
    end;
    
    Function gcd(a,b:longint):longint;
      begin
      if b<>0 then exit(gcd(b,a mod b)) else exit(a);
    end;
     
      begin
    
      readln(t);
      while t>0 do begin dec(t);
      readln(n);
      daymax:=1;
      //fillchar(f,sizeof(f),0);
      for i:=1 to n do
        begin
        read(k[i]);
        o:=gcd(daymax,k[i]);
        daymax:=k[i]*daymax div o;
        for j:=0 to k[i]-1 do
          read(a[i,j]);
        readln;
      end;
      
      h:=1;
      for i:=1 to n do
        begin
        prev[i]:=i-1;
        next[i]:=i+1;
      end;
      next[n]:=0;
      
      ate:=0;last:=0;
      
      for circle:=0 to maxlongint do
        begin
        kill:=false;
        
        for day:=1 to daymax do
          begin
          u:=maxlongint;o:=0;only:=true;
          i:=h;
          while i>0 do
            begin
            if a[i,(day-1) mod k[i]]<u then
              begin
              u:=a[i,(day-1) mod k[i]];
              o:=i;
              only:=true;
          end else
          if a[i,(day-1) mod k[i]]=u then
            only:=false;
          i:=next[i];
        end;
    
          if o=0 then break;
          if only then begin Delete(o);kill:=true;last:=day+daymax*circle;inc(ate);end;
        end;
        if not kill then break;
      end;
      
      writeln(n-ate,' ',last);
      end;
    
    end.
    
  • 相关阅读:
    在linux下如何判断是否已经安装某个软件?
    $ cd `dirname $0` 和PWD用法
    linux下添加,删除,修改,查看用户和用户组
    客户端远程连接linux下mysql数据库授权
    MySQL各个版本区别
    查看linux系统类型、版本、位数
    /bin/bash^M: bad interpreter: No such file or directory
    npm note
    karma note
    jasmine note
  • 原文地址:https://www.cnblogs.com/htfy/p/3040837.html
Copyright © 2011-2022 走看看