1. #include<cstdio>
  2. #include<iostream>
  3. using namespace std;
  4. int l,r,m,n,a[],ans;
  5. bool pan(int x)
  6. {
  7. int a1=min(x,m);
  8. for(int i=;i<=n;i++)
  9. if(a[i]<x)
  10. {
  11. a1-=x-a[i];
  12. if(a1<)
  13. return ;
  14. }
  15. return ;
  16. }
  17. int main()
  18. {
  19. scanf("%d%d",&n,&m);
  20. for(int i=;i<=n;i++)
  21. scanf("%d",&a[i]);
  22. l=;
  23. r=;
  24. for(;l<=r;)
  25. {
  26. int mid=(l+r)>>;
  27. if(pan(mid))
  28. {
  29. l=mid+;
  30. ans=mid;
  31. }
  32. else
  33. r=mid-;
  34. }
  35. printf("%d\n",ans);
  36. return ;
  37. }

二分答案判断是否可行。

其实我还有一种想法,只是一直没对,以后要对拍一下。

  1. #include<cstdio>
  2. #include<iostream>
  3. #include<algorithm>
  4. using namespace std;
  5. long long a[],n,m,sum,q1=0x7ffffffffLL,q2=0x7ffffffffLL;
  6. bool f;
  7. int main()
  8. {
  9. scanf("%lld%lld",&n,&m);
  10. for(int i=;i<=n;i++)
  11. scanf("%lld",&a[i]);
  12. sort(a+,a+n+);
  13. for(int i=;i<=n;i++)
  14. {
  15. if(m-(i-)*(a[i]-a[i-])<)
  16. {
  17. f=;
  18. q1=m/(i-)+a[i-];
  19. }
  20. m-=(i-)*(a[i]-a[i-]);
  21. if(sum+(i-)*(a[i]-a[i-])>a[i])
  22. {
  23. f=;
  24. q2=(sum-(i-)*a[i-])/(-i);
  25. }
  26. if(f)
  27. break;
  28. sum+=(i-)*(a[i]-a[i-]);
  29. }
  30. printf("%lld",min(a[n],min(q1,q2)));
  31. return ;
  32. }

bzoj 1816: [Cqoi2010]扑克牌的更多相关文章

  1. BZOJ 1816: [Cqoi2010]扑克牌( 二分答案 )

    二分答案.. 一开始二分的初始右边界太小了然后WA,最后一气之下把它改成了INF... -------------------------------------------------------- ...

  2. [BZOJ 1816] [Cqoi2010] 扑克牌 【二分答案】

    题目链接:BZOJ - 1816 题目分析 答案具有可以二分的性质,所以可以二分答案. 验证一个答案 x 是否可行,就累加一下各种牌相对于 x 还缺少的量,如果总和超过了 x 或 m ,就不可行. 因 ...

  3. [BZOJ 1816][Cqoi2010]扑克牌(二分答案)

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1816 分析: 我先以为是道水题,但是要注意的是每套牌中Joker只能用1张的,所以就出现了可能 ...

  4. BZOJ:1816 [Cqoi2010]扑克牌 (贪心或二分答案)

    题面 \(solution:\) 这道题难就难在你能否读懂题目的意思,我们将它翻译一下: 现在我有n根竹子(每根竹子有\(c_i\)节,每节竹子高度为1),我可以通过消耗一点法力值使某一根竹子的某两节 ...

  5. 1816: [Cqoi2010]扑克牌

    Time Limit: 10 Sec  Memory Limit: 64 MBSubmit: 2737  Solved: 1082[Submit][Status][Discuss] Descripti ...

  6. bzoj1816: [Cqoi2010]扑克牌(二分答案判断)

    1816: [Cqoi2010]扑克牌 题目:传送门 题解: 被一道毒瘤题搞残了...弃了坑来刷刷水题 一开始还想复杂了...结果发现二分水过: 二分答案...然后check一下,joker肯定尽量用 ...

  7. 【BZOJ1816】[CQOI2010]扑克牌(二分,贪心)

    [BZOJ1816][CQOI2010]扑克牌(二分,贪心) 题面 BZOJ 题解 看了一眼这题,怎么这么眼熟?woc,原来\(xzy\)的题目是搬的这道啊... 行,反正我考的时候也切了,这数据范围 ...

  8. BZOJ1816 Cqoi2010 扑克牌【二分答案】

    BZOJ1816 Cqoi2010 扑克牌 Description 你有n种牌,第i种牌的数目为ci.另外有一种特殊的牌:joker,它的数目是m.你可以用每种牌各一张来组成一套牌,也可以用一张jok ...

  9. 【BZOJ1816】[Cqoi2010]扑克牌 二分

    [BZOJ1816][Cqoi2010]扑克牌 Description 你有n种牌,第i种牌的数目为ci.另外有一种特殊的牌:joker,它的数目是m.你可以用每种牌各一张来组成一套牌,也可以用一张j ...

随机推荐

  1. MyEclipse Servers视窗出现“Could not create the view: An unexpected exception was thrown”错误解决办法

    打开所在的wordspace文件夹,在下面子文件夹 .metadata\.plugins\org.eclipse.core.runtime\.settings\com.genuitec.eclipse ...

  2. [转载] linux cgroup

    原文: http://coolshell.cn/articles/17049.html 感谢左耳朵耗子的精彩文章. 前面,我们介绍了Linux Namespace,但是Namespace解决的问题主要 ...

  3. js call与apply的区别-Tom

    .apply和.call方法是在函数原型中定义的两个方法(因此所有的函数都可以访问它)允许去手动设置函数调用的this值,他们用接受 的第一个参数作为this值,this 在调用的作用域中使用.这两个 ...

  4. 第一天……

    Hello,大家好! 不对,这个开头有点不对.我不应该这么说,这个博客我是为我自己而开通的.目的很简单,好记兴不如烂笔头,把每天所学所感写下来. 我想作一个有条理的人,一个有计划的人,一个有效率的人. ...

  5. JavaWeb学习计划

    1 HTML2 CSS3 JavaScript4 XML5 Tomcat6 Servlet7 HTTP8 Cookie Session9 JSP10 JSTL11 MySQL12 JDBC13 过滤器 ...

  6. (转)TCP、UDP、IP协议

    原文地址:http://blog.chinaunix.net/uid-26833883-id-3627644.html   互连网早期的时候,主机间的互连使用的是NCP协议.这种协议本身有很多缺陷,如 ...

  7. rand()和srand()GetTickCount函数用法

    标准库<cstdlib>(被包含于<iostream>中)提供两个帮助生成伪随机数的函数: 函数一:int rand(void):从srand (seed)中指定的seed开始 ...

  8. 【CodeVS 1004】四子连棋

    http://blog.csdn.net/u013598409/article/details/43924465 相比于一年半前,代码的掌控能力强了许多. #include <cstdio> ...

  9. HTML5 localStorage and sessionStorage

    转载至:http://blog.csdn.net/fdipzone/article/details/25517615 HTML5 提供两种web存储方法,localStorage 与 sessionS ...

  10. seleniumAccessors

    assertErrorOnNext(message) 告诉Selenium在下一个命令执行时期待有错误. 参数:·message–我们所期望的错误信息.如果出现不正确的错误信息,该命令将失败.同断言相 ...