狗狗的OI

哇咔咔..骨头爱吃狗头哦..一辈子的OI路..

逝者如斯
网志分类
· 所有网志 (4)
· NOIp (2)
· Study (2)
搜索本站
友情链接
· 我的歪酷 非非共享界
· Dragon.Dai on USACO - by dailongao

订阅 RSS

0002044

歪酷博客


« 上一篇: NOIp_2006_PJ_Problem 下一篇: Plan For These Day »
狗狗 @ 2006-11-26 08:32

荣幸地得了400分..Share4道Ac程序..
==========
program NOIp_random;
 const
  inputfile='random.in';
  outputfile='random.out';
 var
  n,m:byte;
  f:array[1..1000]of boolean;
 procedure origin;
  var
   i:byte;
   x:word;
  begin
   assign(input,inputfile);
   reset(input);
   readln(n);
   fillchar(f,sizeof(f),0);
   for i:=1 to n do
    begin
     read(x);
     f[x]:=true
    end;
   close(input)
  end;
 procedure main;
  var
   i:word;
  begin
   m:=0;
   for i:=1 to 1000 do
    if f[i] then
     inc(m)
  end;
 procedure printout;
  var
   flag:boolean;
   i:word;
  begin
   assign(output,outputfile);
   rewrite(output);
   writeln(m);
   flag:=false;
   for i:=1 to 1000 do
    if f[i] then
     if flag then
      write(' ',i)
      else
       begin
        write(i);
        flag:=true
       end;
   writeln;
   close(output)
  end;
 begin
  origin;
  main;
  printout
 end.
==========
program NOIp_happy;
 const
  maxn=30000;
  maxm=25;
  inputfile='happy.in';
  outputfile='happy.out';
 var
  m:byte;
  n:word;
  p:array[1..maxm]of byte;
  v:array[1..maxm]of word;
  f:array[0..maxm,0..maxn]of longint;
 procedure origin;
  var
   i:byte;
  begin
   assign(input,inputfile);
   reset(input);
   readln(n,m);
   fillchar(v,sizeof(v),0);
   fillchar(p,sizeof(p),0);
   for i:=1 to m do
    readln(v[i],p[i]);
   close(input)
  end;
 procedure main;
  var
   i:byte;
   j:word;
   x:longint;
  begin
   fillchar(f,sizeof(f),0);
   for i:=1 to m do
    for j:=0 to n do
     begin
      f[i,j]:=f[i-1,j];
      if j>=v[i] then
       begin
        x:=f[i-1,j-v[i]]+v[i]*p[i];
        if x>f[i,j] then
         f[i,j]:=x
       end
     end;
  end;
 procedure printout;
  begin
   assign(output,outputfile);
   rewrite(output);
   writeln(f[m,n]);
   close(output)
  end;
 begin
  origin;
  main;
  printout
 end.
==========
program NOIp_count;
 const
  inputfile='count.in';
  outputfile='count.out';
 var
  temp:shortint;
  s,t,w,total:byte;
  str:string;
  place,path:array[0..26]of byte;
  first:array[0..26]of boolean;
  letter:array[0..26]of char;
 procedure origin;
  begin
   readln(s,t,w);
   readln(str);
  end;
 procedure init;
  begin
   total:=0;
   temp:=t-s-w+1;
   fillchar(place,sizeof(place),0);
   fillchar(path,sizeof(path),0);
   fillchar(first,sizeof(first),1);
   fillchar(letter,sizeof(letter),0)
  end;
 procedure build_letter;
  var
   i:byte;
  begin
   for i:=s to t do
    letter[i-s+1]:=chr(i+96);
  end;
 procedure build_place;
  var
   i:byte;
  begin
   for i:=1 to w do
    repeat
     inc(place[i])
    until str[i]=letter[place[i]]
  end;
 procedure print;
  var
   i:byte;
  begin
   for i:=1 to w do
    write(letter[path[i]]);
   writeln
  end;
 procedure qtry(dep:byte);
  var
   i:byte;
  begin
   if dep<=w then
    begin
     if first[dep] then
      begin
       i:=place[dep];
       first[dep]:=false
      end
      else
       i:=path[dep-1]+1;
     for i:=i to temp+dep do
      begin
       path[dep]:=i;
       qtry(dep+1)
      end
    end
    else
     begin
      if total>0 then
       if total>5 then
        begin
         close(output);
         halt
        end
        else
         print;
      inc(total)
     end
  end;
 procedure main;
  begin
   build_letter;
   build_place;
   qtry(1)
  end;
 begin
  assign(input,inputfile);
  reset(input);
  assign(output,outputfile);
  rewrite(output);
  origin;
  init;
  main;
  close(input);
  close(output)
 end.
==========
program NOIp_sequence;
 const
  inputfile='sequence.in';
  outputfile='sequence.out';
 var
  k,power:shortint;
  n:word;
  p:array[0..10]of longint;
  f:array[0..2000]of longint;
 procedure origin;
  begin
   assign(input,inputfile);
   reset(input);
   readln(k,n);
   close(input)
  end;
 procedure build_power;
  var
   power2,powerk,limit2,limitk:longint;
  begin
   power:=0;
   power2:=1;
   powerk:=1;
   limit2:=1000 div 2;
   limitk:=maxlongint div k;
   while (power2<=limit2)and(powerk<=limitk) do
    begin
     inc(power);
     power2:=power2*2;
     powerk:=powerk*k;
    end
  end;
 procedure build_p;
  var
   i:byte;
  begin
   fillchar(p,sizeof(p),0);
   p[0]:=1;
   for i:=1 to power do
    p[i]:=p[i-1]*k
  end;
 procedure qtry(start,dep:byte;sum:longint);
  var
   i:byte;
  begin
   if dep=0 then
    begin
     inc(f[0]);
     f[f[0]]:=sum;
     exit
    end;
   for i:=start to power-dep+1 do
    qtry(i+1,dep-1,sum+p[i])
  end;
 procedure build_f;
  var
   i:byte;
  begin
   fillchar(f,sizeof(f),0);
   for i:=1 to power do
    qtry(0,i,0);
  end;
 procedure sort_f;
  var
   i,j:word;
   temp:longint;
  begin
   for i:=1 to f[0]-1 do
    for j:=i+1 to f[0] do
     if f[j]<f[i] then
      begin
       temp:=f[i];
       f[i]:=f[j];
       f[j]:=temp
      end
  end;
 procedure main;
  begin
   build_power;
   build_p;
   build_f;
   sort_f;
  end;
 procedure printout;
  begin
   assign(output,outputfile);
   rewrite(output);
   writeln(f[n]);
   close(output)
  end;
 begin
  origin;
  main;
  printout
 end.

==========




评论 / 个人网页 / 扔小纸条
* 昵称

已经注册过? 请登录

新用户请先注册 以便能显示头像及追踪评论回复

Email
网址
* 评论
表情
 


 

分类小组论坛
杂谈 , 娱乐、八卦 , 文学、艺术 , 体育 , 旅游、同城 , 象牙塔 , 情感 , 时尚、生活 , 星座 , 科技

请注意遵守中华人民共和国法律法规, 如威胁到本站生存, 将依法向有关部门报告, 同时本站的相关记录可能成为对您不利的证据.

相关法律法规
全国人大常委会关于维护互联网安全的决定
中华人民共和国计算机信息系统安全保护条例
中华人民共和国计算机信息网络国际联网管理暂行规定
计算机信息网络国际联网安全保护管理办法
计算机信息系统国际联网保密管理规定