在纪中的第九天,2017-7-15 总结:

来源:互联网 发布:网络机顶刷机软件下载 编辑:程序博客网 时间:2024/05/21 17:37

题目描述

被无止境的农活压榨得筋疲力尽后,Farmer John打算用他在MP3播放器市场新买的iCow来听些音乐,放松一下。FJiCow里存了N(1 <= N <= 1,000)首曲子,按1..N依次编号。至于曲子播放的顺序,则是按一个Farmer John自己设计的算法来决定: 


i首曲子有一个初始权值R_i(1 <= R_i <= 10,000)。 


当一首曲子播放完毕,接下来播放的将是所有曲子中权值最大的那首(如果有两首或多首曲子的权值相同,那么这些曲子中编号最小的那首会被选中)。 


一首曲子在播放结束后,它的权值会被平均地分给其他N-1首曲子,它本身的权值清零。 


如果一首曲子的权值无法被平均分配(也就是说,无法被N-1整除),那么被N-1除的余数部分将会以1为单位,顺次分配给排名靠前的曲子(也就是说,顺序为曲目1、曲目2...依次下去。当然,刚播放过的那首曲子需要被跳过),直到多出的部分被分配完。


在选定的下一首曲子播放完毕后,这个算法再次被执行,调整曲子的权值,并选出再接下来播放的曲目。请你计算一下,按FJ的算法,最先播放的T(1 <= T <= 1000)首曲子分别是哪些。

输入

输出

第1行: 2个用空格隔开的整数:N 和 T


第2..N+1行: 第i+1行为1个整数:R_i

样例输入

3 410811

样例输出

3123

数据范围限制

提示

【样例说明】


每一首曲子播放前,三首曲子的权值分别为:


   R_1  R_2  R_3


    10    8   11  -> 播放 #3  11/2 = 5, 权值余量 = 1


    16   13    0  -> 播放 #1  16/2 = 8


     0   21    8  -> 播放 #2  21/2 = 10, 权值余量 = 1


    11    0   18  -> 播放 #3  ... 


var   n,q,i,max,maxi,a,b:longint;  f:array[0..100001] of longint;begin  readln(n,q);  for i:=1 to n do readln(f[i]);  repeat    dec(q);max:=0;    for i:=1 to n do      if f[i]>max then begin max:=f[i];maxi:=i;end;      writeln(maxi);    a:=max div (n-1);        b:=max mod (n-1);      f[maxi]:=0;    for i:=1 to n do      if i<>maxi then f[i]:=f[i]+a;    for i:=1 to n do       if i<>maxi then        begin          if b=0 then break;          dec(b);          f[i]:=f[i]+1;        end;  until q=0;  close(input);  close(output);end.

题目描述

     一天,Bessie在眺望美丽的威斯康星的群山的时候,她突然产生了疑问:哪座山是最宽的捏?她决定在地平线上,利用她的新发明的山峰高度测量仪依次做N (1 <= N <= 10,000)次高度测量H_i (1 <= H_i <= 1,000,000,000)。一座山定义为一段连续的高度序列,序列中的高度一开始单调上升(或者不变),然后单调下降(或者不变)。举例来说,2, 3, 3, 5, 4, 4, 1这一段高度序列就是一座山。如果在她的视线范围内有一段只单调上升或者只单调下降的序列,也算是一座山。山的宽度定义为在这个山上进行的测量的次数(也就是序列的长度)。请帮Bessie找到最宽的山。

这是一个比较典型的群山的例子:

 

          *******                   *

         *********                 ***

          **********               *****

          ***********           *********               *

*      *****************       ***********             *** *

**    *******************     *************   * *     *******      *

**********************************************************************

3211112333677777776543332111112344456765432111212111112343232111111211

aaaaaa                     ccccccccccccccccccccc eeeeeee    ggggggggg

  bbbbbbbbbbbbbbbbbbbbbbbbbbbb             ddddd ffffffffff  hhhhhhhhh

山标记为'a', 'b'等等。显然,山b有着最大的宽度,宽度为28。

输入

 第1行: 一个单独的整数: N

第2到第N+1行: 第i+1包含一个单独的整数: H_i

输出

一个单独的整数,表示最宽的山的宽度。

样例输入

73235416

样例输出

5

数据范围限制


var  xia,i,j,k,n,m,l,r,mid:longint;  ans,x,y,max:longint;  a:array[0..10010]of longint;begin  xia:=0;  ans:=0;  max:=0;  y:=0;  readln(n);  for i:=1 to n do    begin      inc(ans);      read(x);      a[i]:=x;      if x<y then        begin          k:=i;          if xia=0 then xia:=1;        end;      if (xia=1) and (x>y)        then          begin            xia:=0;            ans:=ans-1;            if ans>max then max:=ans;            for j:=k-1 to i do              begin              if (a[j]<=a[j+1]) then break;              end;              if j<>i then            ans:=i-j+1            else              ans:=0;          end;      y:=x;    end;      if ans>max then max:=ans;  writeln(max);  close(input);  close(output);end.

题目描述

奶牛们打算通过锻炼来培养自己的运动细胞,作为其中的一员,贝茜选择的运动方式是每天进行N(1 <= N <= 10,000)分钟的晨跑。

在每分钟的开始,贝茜会选择下一分钟是用来跑步还是休息。贝茜的体力限制了她跑步的距离。更具体地,如果贝茜选择在第i分钟内跑步,她可以在这一分钟内跑D_i(1 <= D_i <= 1,000)米,并且她的疲劳度会增加1。不过,无论何时贝茜的疲劳度都不能超过M(1 <= M <= 500)。如果贝茜选择休息,那么她的疲劳度就会每分钟减少1,但她必须休息到疲劳度恢复到0为止。在疲劳度为0时休息的话,疲劳度不会再变动。晨跑开始时,贝茜的疲劳度为0。还有,在N分钟的锻炼结束时,贝茜的疲劳度也必须恢复到0,否则她将没有足够的精力来对付这一整天中剩下的事情。

请你计算一下,贝茜最多能跑多少米。

输入

第1行: 2个用空格隔开的整数:N 和 M

第2..N+1行: 第i+1为1个整数:D_i

输出

输出1个整数,表示在满足所有限制条件的情况下,贝茜能跑的最大距离。

样例输入

5 2534210

样例输出

9

数据范围限制

提示

【样例说明】


贝茜在第1分钟内选择跑步(跑了5米),在第2分钟内休息,在第3分钟内跑步(跑了4米),剩余的时间都用来休息。因为在晨跑结束时贝茜的疲劳度必须为0,所以她不能在第5分钟内选择跑步。




uses math;var   i,j,n,m:longint;   a:array[0..10000] of longint;   f:array[0..10005,-1..505,0..1] of longint;begin   readln(n,m);   for i:=1 to n do       readln(a[i]);   f[1,1,1]:=a[1];   for i:=2 to n do       for j:=0 to min(n-i,m) do       begin           if j>=1 then f[i,j,1]:=max(f[i-1,0,0],f[i-1,j-1,1])+a[i];           if j=0 then f[i,j,0]:=max(max(f[i-1,j+1,1],f[i-1,j,0]),f[i-1,j+1,0])           else              f[i,j,0]:=max(f[i-1,j+1,1],f[i-1,j+1,0]);       end;   writeln(f[n,0,0]);end.



题目描述

     Bessie结束了国外长途旅游回来。为了迎接她的归来,Farmer John准备在牧场给她挂起一个"Welcome Home"的横幅。横幅会挂在两个柱子间的长度介于L1..L2的金属丝上。(1 <= L1 <= L2; L1 <= L2 <= 1,500)。牧场是一个W×H 的矩阵 (1 <= W <= 1,000; 1 <= H <= 1,000)并且FJ在每个坐标点上都树立起了柱子,在这 (W + 1) * (H + 1)个柱子上,FJ要选两个连上金属丝以挂上横幅。 FJ不希望在横幅之间有任何杂物,就是说在这条金属丝下面没有别的柱子。 FJ需要你编程帮他算出有多少种挂横幅的可能。但是这个数据很大,也许32位整数都放不下。例如如下的牧场地图: W = 2 H = 1 *** *** 而横幅长度为2和3之间。这个牧场共有 (2+1) * (1+1) = 6个点以及有(6 take 5) = (6*5)/(2*1) = 15 种配对方法

   (0,0)-(0,1)   (0,0)-(2,1)   (0,1)-(2,1)   (1,1)-(2,0)

   (0,0)-(1,0)   (0,1)-(1,0)   (1,0)-(1,1)   (1,1)-(2,1)

   (0,0)-(1,1)   (0,1)-(1,1)   (1,0)-(2,0)   (2,0)-(2,1)

   (0,0)-(2,0)   (0,1)-(2,0)   (1,0)-(2,1)

在这之中,只有四种是可以配对的

        始位  末位  长度         始位  末位  长度

       (0,0)-(2,0) 2.00                      (0,1)-(2,0) 2.24

       (0,0)-(2,1) 2.24                      (0,1)-(2,1) 2.00

但在这四种之中,(0,0)-(2,0)和(0,1)-(2,1)都不符合“没有杂物”的要求,所以这个样例中只有2种结果。

输入

一行,4个整数W, H, L1和 L2

输出

一行,表示可能的方案数。

样例输入

2 1 2 3

样例输出

2

数据范围限制


var  n,m,i,j,k,cm,jt:longint;  ans:int64;function ssr(sr,r:longint):longint;var  n:longint;begin  repeat    n:=sr mod r;    sr:=r;    r:=n;  until r=0;  ssr:=sr;end;begin  ans:=0;  read(n,m,cm,jt);  for i:=1 to n+1 do  begin    for j:=1 to m+1 do  begin      if (sqr(i)+sqr(j)>=sqr(cm)) and (sqr(i)+sqr(j)<=sqr(jt))and(ssr(i,j)=1)        then ans:=ans+(n-i+1)*(m-j+1)*2;  end;  end;  if cm<=1    then ans:=ans+n*(m+1)+m*(n+1);  writeln(ans,' ');end.