bzoj1816

这道题不是很难,二分答案+判定即可

注意在一套牌中Joker只能用一次

 1 var a:array[0..51] of longint;
 2     mid,l,r,n,m,i,ans:longint;
 3 
 4 function check(x:longint):boolean;
 5   var i,t:longint;
 6   begin
 7     t:=m;
 8     if t>x then t:=x;  //判定的关键
 9     for i:=1 to n do
10       if a[i]<x then
11       begin
12         t:=t-x+a[i];
13         if t<0 then exit(false);
14       end;
15     exit(true);
16   end;
17 
18 begin
19   readln(n,m);
20   for i:=1 to n do
21     read(a[i]);
22   l:=1;
23   r:=1000000000;
24   while l<=r do
25   begin
26     mid:=(l+r) shr 1;
27     if check(mid) then
28     begin
29       ans:=mid;
30       l:=mid+1;
31     end
32     else r:=mid-1;
33   end;
34   writeln(ans);
35 end.
View Code

 

转载于:https://www.cnblogs.com/phile/p/4473114.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值