rqnoj吧 关注:56贴子:180
  • 5回复贴,共1

Noip2007题目,标程

只看楼主收藏回复

0


1楼2008-11-12 20:00回复
    3楼2008-11-12 20:04
    回复
      2.纪念品分组 
      (group.pas/c/cpp) 
      【题目描述】 
      元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。 
      你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。


      4楼2008-11-12 20:05
      回复
        2.纪念品分组 
        (group.pas/c/cpp) 
        【题目描述】 
        元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。 
        你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。


        5楼2008-11-12 20:05
        回复
          program scholar2;
          type arrtp1=array[1..100] of longint;
               arrtp2=array[1..100] of char;
               arrtps=array[1..100] of string;
          var name:arrtps;
              jj,qm,bp,lw:arrtp1;
              bg,xb:arrtp2;
              c:char;
              maxjj,maxi,sum,i,n:longint;
              s:string;
          begin
          assign(input,'scholar2.in');reset(input);
          assign(input,'scholar2.out');rewrite(output);    
          readln(n);
          for i:= 1 to n do
          begin
            read©;
          while c<>' ' do
             begin
                name[i]:=name[i]+c;
                read©;
             end;
          read(qm[i],bp[i]); read(s);
          bg[i]:=s[2];xb[i]:=s[4];lw[i]:=ord(s[6])-48;
          readln;
          end;
          for i:=1 to n do
          begin
            if (qm[i]>80)and(lw[i]>=1) then jj[i]:=jj[i]+8000;
            if (qm[i]>85)and(bp[i]>80) then jj[i]:=jj[i]+4000;
            if (qm[i]>90) then jj[i]:=jj[i]+2000;
            if (qm[i]>85)and(xb[i]='Y') then jj[i]:=jj[i]+1000;
            if (bp[i]>80)and(bg[i]='Y') then jj[i]:=jj[i]+850;
          end;
          maxjj:=0;
          sum:=0;
          for i:=1 to n do
          begin
          sum:=sum+jj[i];
          if jj[i]>maxjj then begin maxjj:=jj[i];maxi:=i;end;
          end;
          writeln(name[maxi]);
          writeln(maxjj);
          writeln(sum);
          close(input);
          close(output); 
          end.


          8楼2009-11-18 20:14
          回复
            (C)


            9楼2009-11-18 20:15
            回复