var
st,xm,xm1,qmm,bjj,lww:string;
code,len,i,j,n,m,qm,bj,lw,s,zs,sc:longint;
gb,xb:char;
function sss:string;
var
i,l:longint;
begin
i:=0; l:=j;
while st[j]<>' ' do begin
inc(i); inc(j);
end;
sss:=copy(st,l,i);
end;
begin
readln(n);
for i:=1 to n do begin
 s:=0;
 readln(st);

 len:=length(st);
 st[len+1]:=' ';
 j:=1;
 xm:=sss;
 inc(j);

qmm:=sss;

inc(j);

bjj:=sss;
 inc(j);

 gb:=st[j];
 j:=j+2;
 xb:=st[j];
 j:=j+2;
lww:=sss;

 val(qmm,qm,code);
 val(bjj,bj,code);
 val(lww,lw,code);







 if (qm>80) and (lw>=1) then s:=s+8000;
 if (qm>85) and (bj>80) then s:=s+4000;
 if qm>90 then s:=s+2000;
 if (qm>85) and (xb='Y') then s:=s+1000;
 if (bj>80) and (gb='Y') then s:=s+850;

 if s>zs then begin zs:=s; xm1:=xm; end;
 sc:=sc+s;
 end;
 writeln(xm1);
 writeln(zs);
 writeln(sc);
 end.

 

tyvj 1002 一道模拟题  主要是一个字符串读入与分割  我读的比较麻烦了 简单的读法如下
read(ch);
while ch<>' ' do 
    begin
    name:=name+ch;
    read(ch);
    end;

begin

read(n);
for l:=1 to n do
begin
    s:=true;
    for i:=1 to 9 do begin
        for m:=1 to 9 do
        b[m]:=false;

        for j:=1 to 9 do
        begin
            read(a[i,j]);
            if b[a[i,j]]=true then s:=false else b[a[i,j]]:=true;
        end;
    end;
    for j:=1 to 9 do
    begin
        for m:=1 to 9 do
        b[m]:=false;

        for i:=1 to 9 do begin
 
        if b[a[i,j]]=true then begin s:=false; break; end else b[a[i,j]]:=true;
  end;
 end;

for i:=0 to 2 do
    for j:=0 to 2 do
    gong(i*3+1,j*3+1);

if s=false then writeln('Wrong') else
    writeln('Right');

end;
end.

 

 

 

tyvj 1093 这个题是一个比较简单的模拟  话说测试数据 非常之...  开始读数时 没读完  直接break 了   最后竟然80 分... 
此题解法1 同上  
解法2   设3数组
可以遍历一遍记录得出答案
先设三个数组
a:array[1..9,1..9]of boolean;一到九行每一行1到9出现的情况
b:array[1..9,1..9]of boolean;一到九列每一列1到9出现的情况
c:array[1..9,1..9]of boolean;一到九行个九宫格每一个1到9出现的情况
true为出现,false为没出现
先全部清为false
依次读入每个数X(i,j)
对应的项分别是a[i,x]  b[j,x]  c[((i-1) div 3)*3+((j-1) div 3)+1,x]

解法3 非常之变态 不知道谁想出的。。。 很无脑。

每个数独的每行每列都计算一下加和(还有每个九宫格),如果是的话和都必为45
如果有一个不是45的话 则整个数独就不成立
并注意 数独全为5的特殊情况。

 

 

count 数字统计

var
    j,t,sum,i,n:longint;

    sort:array[1..10001] of longint;
    b,a:array[1..200000] of longint;
procedure qsort(head,tail:longint);
var
    i,j,temp,x:longint;
begin
    if head >= tail then
        exit;
    i:=head - 1;
    j:=tail + 1;
    temp:=a[(head + tail) div 2];

    while i < j do
    begin
        repeat inc(i) until a[i] >= temp;
        repeat dec(j) until a[j] <= temp;

        if i < j then
        begin
            x := a[i];
            a[i] := a[j];
            a[j] := x;
        end;
    end;

    qsort(head,j);
    qsort(j + 1,tail);
end;

begin
    read(n);
    for i := 1 to n do
        read(a[i]);
    qsort(1,n);
    sum := 0;
    
    j := 0;

    for i:=1 to n do
    if a[i]=a[i + 1] then
        inc(sum)
    else
    begin
        inc(j);
        b[j] := sum + 1;
        sum := 0;
        
        sort[j] := a[i];
    end;
    for i:=1 to j do
        writeln(sort[i],' ',b[i]);
end.

 

快排 搞定 ~