zoukankan      html  css  js  c++  java
  • 普及练习场之交叉模拟

    前言:不要被标题所迷惑!也不要被我的话所迷惑!

    P1023 税收与补贴问题
    请点击:税收与补贴问题题解

    P1031 均分纸牌
    总:这个……真的是模拟了。

    var
      n,i,s,ans:longint;
      a:array [1..10001] of longint;
    begin
      readln(n); s:=0;
      for i:=1 to n do
       begin
        read(a[i]);
        s:=s+a[i];
       end;
      s:=s div n;
      ans:=0;
      if a[1]<>s then begin if a[1]<s then begin a[2]:=a[2]-(s-a[1]); a[1]:=s; end else begin a[2]:=a[2]+(a[1]-s); a[1]:=s; end; inc(ans); end;
      if a[n]<>s then begin if a[n]<s then begin a[n-1]:=a[n-1]-(s-a[n]); a[n]:=s; end else begin a[n-1]:=a[n-1]+(a[n]-s); a[n]:=s; end; inc(ans); end;
      for i:=2 to n-1 do       
       begin
        if a[i]<>s then begin if a[i]<s then begin a[i+1]:=a[i+1]-(s-a[i]); a[i]:=s; end else begin a[i+1]:=a[i+1]+(a[i]-s); a[i]:=s; end; inc(ans); end;
       end;
      write(ans);
    end.

    P1042 乒乓球
    总:怀念小学,那时用字符串写,坑了我啊(忘了怎么坑的)。
    这题……又是模拟。

    var
      a:array [1..1000001] of char;
      i,j,k,n,w,l,w1,l1:longint;
    begin
      repeat
        i:=i+1;
        read(a[i]);
      until a[i]='E';
      i:=0;
      repeat
        i:=i+1;
        if (a[i]='W') or (a[i]='L') then
          begin
            if a[i]='W' then inc(w)
                        else inc(l);
            if ((w>=11) or (l>=11)) and (abs(w-l)>=2) then
              begin
                writeln(w,':',l);
                w:=0; l:=0;
              end;
          end;
      until a[i]='E';
      writeln(w,':',l);
      writeln;
      i:=0; w:=0; l:=0;
      repeat
        i:=i+1;
        if (a[i]='W') or (a[i]='L') then
          begin
            if a[i]='W' then inc(w)
                        else inc(l);
            if ((w>=21) or (l>=21)) and (abs(w-l)>=2) then
              begin
                writeln(w,':',l);
                w:=0; l:=0;
              end;
          end;
      until a[i]='E';
      write(w,':',l);
    end.

    P1086 花生采摘
    总:贪心策略,先拿大的。

    var
      m,n,k,nm,ans:longint;
      x,y,a:array [0..401] of longint;
    procedure init;
    var
      i,j,o:longint;
    begin
      readln(m,n,k);
      for i:=1 to m do
        for j:=1 to n do
          begin
            read(o);
            if o>0 then
              begin
                inc(nm);
                x[nm]:=i; y[nm]:=j;
                a[nm]:=o;
              end;
          end;
    end;
    
    procedure pd;
    var
      i,j,t:longint;
    begin
      for i:=1 to nm do
        for j:=1 to nm do
          if a[i]>a[j] then
            begin
              t:=a[i]; a[i]:=a[j]; a[j]:=t;
              t:=x[i]; x[i]:=x[j]; x[j]:=t;
              t:=y[i]; y[i]:=y[j]; y[j]:=t;
            end;
    end;
    
    procedure main;
    var
      i:longint;
    begin
      ans:=0; y[0]:=y[1];
      if k<>0 then
        for i:=0 to nm do
          if k>=abs(x[i]-x[i+1])+abs(y[i]-y[i+1])+1+x[i+1] then
            begin
              k:=k-abs(x[i]-x[i+1])-abs(y[i]-y[i+1])-1;
              ans:=ans+a[i+1]
            end else break;
      write(ans);
    end;
    
    begin
      init;
      pd;
      main;
    end.

    P1098 字符串的展开
    总:就是判断输出啊。

    var
      s,s1,s2:ansistring;
      i,j,n,m,x,y,z:longint;
    
    procedure hjy(o:longint);
    var
      i,j:longint;
    begin
      s1:=''; s2:='';
      if ord(s[o-1])>=ord(s[o+1]) then exit;
      if ord(s[o-1])+1=ord(s[o+1]) then
        begin
          delete(s,o,1);
          exit;
        end;
      for i:=ord(s[o-1])+1 to ord(s[o+1])-1 do
        for j:=1 to y do
          s1:=s1+chr(i);
      if x=2 then
        for i:=1 to length(s1) do
          if (s1[i]>='a') and (s1[i]<='z') then s1[i]:=chr(ord(s1[i])-32);
      if x=3 then
        for i:=1 to length(s1) do
          s1[i]:='*';
      if z=2 then
        begin
          for i:=1 to length(s1) do
          s2:=s2+s1[length(s1)-i+1];
          s1:=s2;
        end;
      delete(s,o,1); insert(s1,s,o);
    end;
    
    begin
      readln(x,y,z);
      readln(s);
      n:=length(s);
      i:=2; s:=s+'+';
      while s[i]<>'+' do
        begin
          if (s[i-1]<>'-') and (s[i+1]<>'-') then  
            if (s[i]='-') and (((ord(s[i-1])>=97) and (ord(s[i+1])>=97)) or ((ord(s[i-1])<=57) and (ord(s[i+1])<=57))) then
               hjy(i);
          inc(i);
        end;
      delete(s,length(s),1);
      writeln(s);
    end.
  • 相关阅读:
    Python--__init__方法
    Python--面向对象编程
    用R语言对NIPS会议文档进行聚类分析
    docker oracle install
    java 删除字符串左边空格和右边空格 trimLeft trimRight
    mysql 表名和字段、备注
    docker学习
    shell爬虫
    shell 解析json
    SecureCRT 7.1.1和SecureFx key 亲测可用
  • 原文地址:https://www.cnblogs.com/zyx-crying/p/9319517.html
Copyright © 2011-2022 走看看