8.14 猪王争霸 2693

文章目录

  • @[toc] 题目
  • 题解
  • $$时间复杂度O(n^2)$$ 代码
  • 花谢花飞花满天,红消香断有谁怜。——《红楼梦》·黛玉《葬花吟》

题目

工商部门查获了有N个人正在贩卖注水猪肉,现在要你对这N个人的注水猪肉的数量从大到小的排序,并且算出这N个人的注水猪肉总和(单位为……斤)…我们姑且称这些贩卖者为”猪王”吧…
【输入文件】
输入的第一行是一个1到1000的整数N,表示总共有N位猪王参加了争霸赛。以下依次给出每位猪王的描述,一位猪王的描述占据两行,第一行为一个仅由小写字母组成的长度不超过13的字符串,代表这个猪王的名字,第二行一个整数(非负数,<10^2000),代表这个猪王的注水猪肉总斤数。注意,这个整数的首位没有不必要的0。所有猪王贩卖的注水猪肉数量的总长度不会超过2000。
【输出文件】
依次输出按照注水猪肉多少从大到小排好序的各位贩卖者的名字,每个名字占据单独的一行。不能有任何多余的字符。若几个名字的注水猪肉数相同,则按照名字的字典顺序先后排列。(名字长度<=13且均为大写字母),在N+1行输出所有猪王贩卖注水猪肉的数量的总和(输出最后490位)

题解

就是一个排序+高精加的模板题么
排序我打了个冒泡,因为我懒~我懒我骄傲
高精加就不能不打,小气的我只开了500位,读入出了点问题,只得了40,事实证明读入2000位并不会少一斤肉(我倒情愿少一斤肉~Orz),然后读入随便改了一下就过了(虽然冒泡特耗时间)
这个故事告诉我们,不(还)用(是)省(少)的(一)不(斤)要(肉)省(的)比较好

时 间 复 杂 度 O ( n 2 ) 时间复杂度O(n^2) O(n2)
代码

const
  maxn=490;
var
  s:array[0..1000]of string;
  t:array[0..1000]of ansistring;
  n,i,j,l,r:longint;
  a:array[0..2050]of longint;

function sma(s,t:ansistring):boolean;
begin
  sma:=true;
  if (length(s)>length(t)) or
  ( (length(s)=length(t)) and (s>=t) ) then
  exit(false);
end;

function min(a,b:longint):longint;
begin
  if as[j]))
      or(sma(t[i],t[j]))
       then
        begin
          t[0]:=t[i];t[i]:=t[j];t[j]:=t[0];
          s[0]:=s[i];s[i]:=s[j];s[j]:=s[0];
        end;
  for i:=1 to n do
    writeln(s[i]);
  for i:=1 to n do
    begin
      add(t[i]);
      j:=1;
    end;
  for j:=maxn downto 1 do
    write(a[j]);
  close(input);close(output);
end.

花谢花飞花满天,红消香断有谁怜。——《红楼梦》·黛玉《葬花吟》

你可能感兴趣的:(冒泡排序,高精度)