zoukankan      html  css  js  c++  java
  • NOI1997

    T1 竞赛排名

    分析:模拟

    超级大模拟,太弱了,写个模拟都要2个小时。。写的又难看又麻烦。。还需努力

     1 var
     2   n,i,j,k:longint;
     3   t1:real;
     4   x,y:array[1..1000,1..9] of real;
     5   sum,sumy,s1,s2:array[1..1000] of real;
     6   sigma,avg,s:array[1..8] of real;
     7 begin
     8 assign(input,'competitionsort.in');
     9 reset(input);
    10 assign(output,'competitionsort.out');
    11 rewrite(output);
    12   readln(n);
    13   for i:=1 to n do
    14    begin
    15      for j:=1 to 8 do
    16       begin
    17         read(x[i,j]);
    18         sum[i]:=sum[i]+x[i,j];
    19         sigma[j]:=sigma[j]+x[i,j];
    20       end;
    21      readln;
    22      x[i,9]:=i;
    23    end;
    24 
    25   {for i:=1 to n do begin
    26    for j:=1 to 9 do write(x[i,j]:0:0,' '); writeln; end; }
    27   //for i:=1 to n do writeln(sum[i]:0:0);
    28   //for i:=1 to 8 do write(sigma[i]:0:0,' ');
    29 
    30   for j:=1 to 8 do
    31    avg[j]:=sigma[j]/n;
    32  // for i:=1 to 8 do write(avg[i]:0:5,' ');
    33 
    34   for j:=1 to 8 do
    35    for i:=1 to n do s[j]:=s[j]+abs(x[i][j]-avg[j]);
    36    //for j:=1 to 8 do writeln(s[j]);
    37   for i:=1 to n do
    38    for j:=1 to 8 do
    39     if s[j]=0 then y[i,j]:=0
    40      else y[i,j]:=(x[i][j]-avg[j])/(s[j]/n);
    41 
    42   {for i:=1 to n do begin
    43   for j:=1 to 8 do write(y[i,j]:0:5,' '); writeln; end;}
    44 
    45   for i:=1 to n do
    46    begin
    47      for k:=1 to 3 do
    48       s1[i]:=s1[i]+y[i,k];
    49 
    50 
    51      for k:=4 to 8 do
    52       s2[i]:=s2[i]+y[i,k];
    53 
    54    end;
    55    {for i:=1 to n do
    56      writeln(s1[i]:0:5,' ',s2[i]:0:5); }
    57   for i:=1 to n do
    58    sumy[i]:=s1[i]+0.8*s2[i];
    59 
    60    {for i:=1 to n do
    61      writeln(sumy[i]:0:5); }
    62 
    63   for i:=1 to n-1 do
    64    begin
    65      k:=i;
    66      for j:=i+1 to n do
    67       if (sumy[k]<sumy[j]) or
    68          ((sumy[k]=sumy[j])and(sum[k]<sum[j])) or
    69          ((sumy[k]=sumy[j])and(sum[k]=sum[j])and(x[k,9]>x[j,9])) then k:=j;
    70      if k<>i then begin
    71                     t1:=sumy[k]; sumy[k]:=sumy[i]; sumy[i]:=t1;
    72                     t1:=sum[k];  sum[k]:=sum[i];   sum[i]:=t1;
    73                     t1:=x[k,9];  x[k,9]:=x[i,9];   x[i,9]:=t1;
    74                   end;
    75    end;
    76   for i:=1 to n do writeln(x[i,9]:0:0);
    77 close(input);
    78 close(output);
    79 end.
    程序初步
     1 var
     2   n,i,j,k:longint;
     3   t1:real;
     4   x,y:array[1..1000,1..9] of real;
     5   sum,sumy,s1,s2:array[1..1000] of real;
     6   sigma,avg,s:array[1..8] of real;
     7 begin
     8 assign(input,'competitionsort.in');
     9 reset(input);
    10 assign(output,'competitionsort.out');
    11 rewrite(output);
    12   readln(n);
    13   for i:=1 to n do
    14    begin
    15      for j:=1 to 8 do
    16       begin
    17         read(x[i,j]);
    18         sum[i]:=sum[i]+x[i,j];
    19         sigma[j]:=sigma[j]+x[i,j];
    20       end;
    21      readln;
    22      x[i,9]:=i;
    23    end;
    24   for j:=1 to 8 do
    25    avg[j]:=sigma[j]/n;
    26   for j:=1 to 8 do
    27    for i:=1 to n do s[j]:=s[j]+abs(x[i][j]-avg[j]);
    28   for i:=1 to n do
    29    for j:=1 to 8 do
    30     if s[j]=0 then y[i,j]:=0
    31      else y[i,j]:=(x[i][j]-avg[j])/(s[j]/n);
    32   for i:=1 to n do
    33    begin
    34      for k:=1 to 3 do
    35       s1[i]:=s1[i]+y[i,k];
    36      for k:=4 to 8 do
    37       s2[i]:=s2[i]+y[i,k];
    38    end;
    39   for i:=1 to n do
    40    sumy[i]:=s1[i]+0.8*s2[i];
    41   for i:=1 to n-1 do
    42    begin
    43      k:=i;
    44      for j:=i+1 to n do
    45       if (sumy[k]<sumy[j]) or
    46          ((sumy[k]=sumy[j])and(sum[k]<sum[j])) or
    47          ((sumy[k]=sumy[j])and(sum[k]=sum[j])and(x[k,9]>x[j,9])) then k:=j;
    48      if k<>i then begin
    49                     t1:=sumy[k]; sumy[k]:=sumy[i]; sumy[i]:=t1;
    50                     t1:=sum[k];  sum[k]:=sum[i];   sum[i]:=t1;
    51                     t1:=x[k,9];  x[k,9]:=x[i,9];   x[i,9]:=t1;
    52                   end;
    53    end;
    54   for i:=1 to n do writeln(x[i,9]:0:0);
    55 close(input);
    56 close(output);
    57 end.
    我的程序

     

  • 相关阅读:
    10个你可能不知道的JavaScript小技巧
    JS实现rgb与16进制颜色相互转换
    JavaScript 计算两个颜色叠加值
    软件测试定义和目的(1)
    服务器查看系统日记
    SQL Server 2012 安装成功后找不到SQL server Management
    windowns 10 安装 win64_11gR2_database
    C#获得当前目录和执行目录及执行文件的路径
    卸载yaml,重新安装的坑
    IIS的卸载和安装
  • 原文地址:https://www.cnblogs.com/vacation/p/5189263.html
Copyright © 2011-2022 走看看