zoukankan      html  css  js  c++  java
  • 「Clover 10」杯HE两校联赛(第二轮Day1)

        应该说的确是NOIp难度。200分就有不错的名字。240分就是第三名,现在想想240并不难,应该注意状态。A题还是比较容易,很快想到正解。但是B题有个地方不等号写反了,导致0分,静态查错真的很重要。C题zzm神犇的O(N^N)暴力有40分。

    A 掷骰子

          考虑每个掷出骰子式独立事件,把答案用每个面表示就是sigma(i=1..M)=pi*i,显然要为大的数字选择大的概率。

      1: program tyvj1125a;
    
      2: var ai,i,n,m:longint;
    
      3:     count:array[0..100] of longint;
    
      4:     ans:extended;
    
      5: begin
    
      6: readln(n);m:=0;
    
      7: for i:=1 to n do
    
      8:   begin
    
      9:   read(ai);
    
     10:   inc(m,ai);
    
     11:   inc(count[ai])
    
     12:   end;
    
     13: for i:=1 to 100 do
    
     14:   while count[i]>0 do
    
     15:     begin
    
     16:     n:=i;
    
     17:     ans:=ans+m+(1-n)/2;
    
     18:     dec(m,n);
    
     19:     dec(count[i]);
    
     20:     if m<=0 then break;
    
     21:     end;
    
     22: writeln(ans:3:3);
    
     23: end.

    B 环岛

          细节题啊,多写注释。

      1: program tyvj1125b;
    
      2: uses math;
    
      3: const FileName='tyvj1125b';maxn=400;
    
      4:       next:array[0..3] of integer=(1,2,3,0);
    
      5:       pre :array[0..3] of integer=(3,0,1,2);
    
      6: type  Queue=record
    
      7:         h,t:longint;
    
      8:         data:array[0..maxn] of longint;
    
      9:       end;
    
     10: var order:array['A'..'Z'] of integer;
    
     11:     a:array[0..4] of longint;
    
     12:     ready,aim,pos:array[0..maxn] of longint;
    
     13:     Q:array[0..3] of Queue;
    
     14:     s:array[0..3] of string[100];
    
     15:     tot,n,i,j,time,k:longint;
    
     16:     finish,fall:boolean;
    
     17:     canin:array[0..3] of boolean;
    
     18: procedure init(var Q:Queue);
    
     19:           begin
    
     20:           with Q do begin
    
     21:             h:=0;t:=0;end;
    
     22:           end;
    
     23: procedure add(var Q:Queue;x:longint);
    
     24:           begin
    
     25:           with Q do begin
    
     26:             inc(t);data[t]:=x;end;
    
     27:           end;
    
     28: function  del(var Q:Queue):longint;
    
     29:           begin
    
     30:           with Q do begin
    
     31:             inc(h);del:=data[h];end;
    
     32:           end;
    
     33: begin
    
     34: order['N']:=0;order['W']:=1;order['S']:=2;order['E']:=3;
    
     35: readln(s[0]);readln(s[3]);readln(s[2]);readln(s[1]);
    
     36: n:=max(max(length(s[0]),length(s[1])),
    
     37:        max(length(s[2]),length(s[3])));
    
     38: for i:=1 to n do
    
     39:   for j:=0 to 3 do
    
     40:     if (i<=length(s[j]))
    
     41:        and(s[j][i]<>'-')
    
     42:         then begin
    
     43:              inc(tot);
    
     44:              ready[tot]:=i-1;
    
     45:              aim[tot]:=order[s[j][i]];
    
     46:              pos[tot]:=j;
    
     47:              end;
    
     48: time:=0;k:=1;
    
     49: init(Q[1]);init(Q[2]);
    
     50: init(Q[3]);init(Q[0]);
    
     51: fillchar(a,sizeof(a),0);finish:=false;
    
     52: fillchar(canin,sizeof(canin),true);
    
     53: while(not finish)do begin
    
     54:   //--inqueue--
    
     55:   while(ready[k]<=time)and(k<=tot)do
    
     56:     begin
    
     57:     add(Q[pos[k]],k);
    
     58:     inc(k);end;
    
     59:   //--can i get in?--
    
     60:   fillchar(canin,sizeof(canin),false);
    
     61:   fall:=true;
    
     62:   for i:=0 to 3 do begin
    
     63:     if Q[i].h=Q[i].t then fall:=false;
    
     64:     if(A[pre[i]]=0)and(Q[i].h<Q[i].t)
    
     65:        and(Q[pre[i]].h=Q[pre[i]].t)
    
     66:          then canin[i]:=true;
    
     67:     end;
    
     68:   if(fall)and(A[pre[0]]=0)then canin[0]:=true;
    
     69:   //==leave--
    
     70:   for i:=0 to 3 do
    
     71:     if(A[i]<>0)and(aim[A[i]]=i)
    
     72:       then A[i]:=0;
    
     73:   //--move--
    
     74:   for i:=3 downto 0 do A[i+1]:=A[i];A[0]:=A[4];
    
     75:   //--get in
    
     76:   for i:=0 to 3 do
    
     77:     if canin[i]
    
     78:       then A[i]:=del(Q[i]);
    
     79:   //check is it finish
    
     80:   if k<=tot
    
     81:     then finish:=false
    
     82:     else begin
    
     83:          finish:=true;
    
     84:          for i:=0 to 3 do
    
     85:           if(Q[i].h<>Q[i].t)or(A[i]<>0)
    
     86:            then begin
    
     87:                 finish:=false;
    
     88:                 break;
    
     89:                 end;
    
     90:          end;
    
     91:   inc(time);end;
    
     92: writeln(time);
    
     93: end.

    C 铁路历险

          为什么当时不写暴力?为什么不打表?

          参考了zzm神犇的代码。该练练DP了,初始值总是很糊涂。

    program tyvj1125c;
    
    const maxn=5000;
    
          p=1000000007;
    
    var   f,g,fsum,gsum:array[0..maxn] of int64;
    
          i,j,n:longint;
    
    begin
    
    readln(n);
    
    fillQword(g,sizeof(g)>>3,1);
    
    for i:=1 to n do Gsum[i]:=Gsum[i-1]+G[i];
    
    for i:=2 to n do
    
      begin
    
      F[1]:=G[1];Fsum[0]:=0;
    
      for j:=i to n do
    
        begin
    
        F[j]:=(G[j]*j+Gsum[j-1]-Gsum[i-1]+p)mod p;
    
        Fsum[j]:=(Fsum[j-1]+F[j])mod p;
    
        end;
    
      G:=F;Gsum:=Fsum;
    
      end;
    
    writeln(G[n]);
    
    end.
  • 相关阅读:
    如何解决Unsupported major.minor version 52.0问题?
    无法将 Ethernet0 连接到虚拟网络”VMnet0″ 详细信息可以在 vmware.log 文件中找到未能连接虚拟机Ethernet0
    安卓逆向入门教程(一)
    go数据类型 slice map
    Tomcat服务配置及性能优化
    RabbitMQ消息可靠性投递
    LevelDb引擎
    【前端】Vue.js前端框架
    【PHP】PHP 微服务协程框架Swoft
    Supervisor进程管理工具
  • 原文地址:https://www.cnblogs.com/lijianlin1995/p/2752632.html
Copyright © 2011-2022 走看看