bzoj有毒,看不了自己哪错了。。。根本没法debug、

我到现在还是不知道自己代码为什么会T,二分次数也加限制了,但是还是T。。。救命啊!!!

题干:

  1. Description
  2. 著名出题人小Q的备忘录上共有n道可以出的题目,按照顺序依次编号为1n,其中第i道题目的难度系数被小Q估计
  3. a_i,难度系数越高,题目越难,负数表示这道题目非常简单。小Q现在要出一套难题,他决定从备忘录中选取编
  4. 号连续的若干道题目,使得平均难度系数最高。当然,小Q不能做得太过分,一套题目必须至少包含k道题目,因此
  5. 他不能通过直接选取难度系数最高的那道题目来组成一套题。请写一个程序,帮助小Q挑选平均难度系数最高的题
  6. 目。
  7. Input
  8. 第一行包含两个整数n,k(<=n<=,<=k<=n),分别表示题目的总量和题数的下界。
  9. 第二行包含n个整数a_1,a_2,...,a_n(|a_i|<=^),分别表示每道题目的难度系数。
  10. Output
  11.  
  12. 输出一个既约分数p/q或-p/q,即平均难度系数的最大值。
  13. Sample Input
  14.  
  15. - -
  16. Sample Output
  17. /
  18. HINT
  19.  
  20. Source
  21.  
  22. claris原创,本oj版权所有,翻版必究

我的代码:(蜜汁TLE)

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<ctime>
  5. #include<queue>
  6. #include<algorithm>
  7. #include<cstring>
  8. using namespace std;
  9. #define duke(i,a,n) for(int i = a;i <= n;i++)
  10. #define lv(i,a,n) for(int i = a;i >= n;i--)
  11. #define clean(a) memset(a,0,sizeof(a))
  12. const int INF = << ;
  13. typedef long long ll;
  14. typedef double db;
  15. template <class T>
  16. void read(T &x)
  17. {
  18. char c;
  19. bool op = ;
  20. while(c = getchar(), c < '' || c > '')
  21. if(c == '-') op = ;
  22. x = c - '';
  23. while(c = getchar(), c >= '' && c <= '')
  24. x = x * + c - '';
  25. if(op) x = -x;
  26. }
  27. template <class T>
  28. void write(T x)
  29. {
  30. if(x < ) putchar('-'), x = -x;
  31. if(x >= ) write(x / );
  32. putchar('' + x % );
  33. }
  34. db a[];
  35. db s[];
  36. db g[];
  37. int mn[];
  38. db eps = 1e-;
  39. int n,k,ok = ;;ll y,x;
  40. db l,r;
  41. ll gcd(ll a,ll b)
  42. {
  43. if(!b)
  44. return a;
  45. else
  46. return gcd(b,a % b);
  47. }
  48. int main()
  49. {
  50. read(n);read(k);
  51. l=-,r=;
  52. duke(i,,n)
  53. {
  54. scanf("%lf",&a[i]);
  55. s[i] = s[i - ] + a[i];
  56. }
  57. duke(p,,)
  58. {
  59. ok = ;
  60. db mid = (l + r) / ;
  61. duke(i,,n)
  62. {
  63. g[i] = s[i] - (db)i * mid;
  64. }
  65. /*duke(i,1,n)
  66. cout<<g[i]<<" ";
  67. cout<<endl;*/
  68. duke(i,,n)
  69. {
  70. if(g[i] < g[mn[i - ]])
  71. mn[i] = i;
  72. else
  73. mn[i] = mn[i - ];
  74. }
  75. duke(i,k,n)
  76. {
  77. if(g[i] > g[mn[i - k]])
  78. {
  79. x = s[i] - s[mn[i - k]];
  80. y = i - mn[i - k];
  81. ok = ;
  82. break;
  83. }
  84. }
  85. if(ok == )
  86. {
  87. l = mid;
  88. }
  89. else
  90. {
  91. r = mid;
  92. }
  93. }
  94. ll g = gcd(x,y);
  95. if(g < )
  96. g = -g;
  97. if(g)
  98. x /= g,y /= g;
  99. printf("%lld/%lld\n",x,y);
  100. return ;
  101. }
  102. /*
  103. 5 3
  104. 1 4 -2 -3 6
  105. */

网上的AC代码:

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<cctype>
  4. using namespace std;
  5. typedef double db;
  6. typedef long long ll;
  7. const int N=1e5+;
  8.  
  9. int n,k,a[N],mn[N];
  10. ll s[N],A,B,T;
  11. db b[N];
  12.  
  13. inline int rd()
  14. {
  15. char ch=getchar();
  16. int x=,f=;
  17. while(!isdigit(ch))
  18. {
  19. if(ch=='-') f=-;
  20. ch=getchar();
  21. }
  22. while(isdigit(ch))
  23. {
  24. x=x*+(ch^);
  25. ch=getchar();
  26. }
  27. return x*f;
  28. }
  29.  
  30. bool check(db mid)
  31. {
  32. int i,j;
  33. b[]=a[]-mid;
  34. for(i=; i<=n; ++i)
  35. {
  36. b[i]=b[i-]+a[i]-mid;
  37. mn[i]= b[i] < b[mn[i-]]? i:mn[i-];
  38. }
  39. for(i = k; i<=n; ++i)
  40. {
  41. if(b[i]>b[mn[i-k]])
  42. {
  43. A = s[i] - s[mn[i-k]];
  44. B = i - mn[i-k];
  45. return true;
  46. }
  47. }
  48. return false;
  49. }
  50. inline ll gcd(ll x,ll y)
  51. {
  52. return !y? x:gcd(y,x%y);
  53. }
  54.  
  55. int main()
  56. {
  57. int i,j;
  58. n=rd();
  59. k=rd();
  60. for(i=; i<=n; ++i)
  61. {
  62. a[i]=rd();
  63. s[i]=s[i-]+a[i];
  64. }
  65. db l=-1e8,r=1e8,mid;
  66. mn[]=;
  67. for(i=; i<=; ++i)
  68. {
  69. mid=(l+r)/;
  70. if(check(mid)) l=mid;
  71. else r=mid;
  72. }
  73. T=gcd(A,B);
  74. if(T<) T=-T;
  75. if(T) A/=T,B/=T;
  76. printf("%lld/%lld\n",A,B);
  77. }

没有任何区别好不好!为什么TLE?

B5090 组题 二分答案的更多相关文章

  1. NOIP2015跳石头[二分答案]

    题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选 择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩石( ...

  2. 洛谷P4589 [TJOI2018]智力竞赛(二分答案 二分图匹配)

    题意 题目链接 给出一个带权有向图,选出n + 1n+1条链,问能否全部点覆盖,如果不能,问不能覆盖的点权最小值最大是多少 Sol TJOI怎么净出板子题 二分答案之后直接二分图匹配check一下. ...

  3. BZOJ2653 middle(二分答案+主席树)

    与中位数有关的题二分答案是很常用的trick.二分答案之后,将所有大于它的看成1小于它的看成-1,那么只需要判断是否存在满足要求的一段和不小于0. 由于每个位置是1还是-1并不固定,似乎不是很好算.考 ...

  4. BZOJ5090 组题 BZOJ2017年11月月赛 二分答案 单调队列

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5090 11月月赛A题 题意概括 给出n个数. 求连续区间(长度大于等于k)最大平均值. 题解 这题 ...

  5. 疫情控制 2012年NOIP全国联赛提高组(二分答案+贪心)

    P1084 疫情控制 题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控 ...

  6. cogs 2109. [NOIP 2015] 运输计划 提高组Day2T3 树链剖分求LCA 二分答案 差分

    2109. [NOIP 2015] 运输计划 ★★★☆   输入文件:transport.in   输出文件:transport.out   简单对比时间限制:3 s   内存限制:256 MB [题 ...

  7. BZOJ_4590_[Shoi2015]自动刷题机_二分答案

    BZOJ_4590_[Shoi2015]自动刷题机_二分答案 Description 曾经发明了信号增幅仪的发明家SHTSC又公开了他的新发明:自动刷题机--一种可以自动AC题目的神秘装置.自动 刷题 ...

  8. Codeforces Round #402 (Div. 2) D. String Game(二分答案水题)

    D. String Game time limit per test 2 seconds memory limit per test 512 megabytes input standard inpu ...

  9. BZOJ 4590 [Shoi2015]自动刷题机 ——二分答案

    二分答案水题. #include <cstdio> #include <cstring> #include <iostream> #include <algo ...

随机推荐

  1. mysql GTID主从复制(主库在线,添加新丛库)

    要求: 1.         主库上线,主库不停止服务的前提下做主从复制 2.         新添加一个丛库 操作: 1.         在主库导出数据(主库正常运行): 2.         将 ...

  2. php判断form数据是否为POST而来,判断数据提交方式

    //判断form数据是否为POST而来,判断数据提交方式 if ($_SERVER['REQUEST_METHOD'] != 'POST') { // 非 POST 来路,做警告或你想做的事 retu ...

  3. 10、scala面向对象编程之Trait

    1.  将trait作为接口使用 2.trait中定义具体方法 3.trait定义具体字段 4.trait中定义抽象字段 5.为实例对象混入trait 6.trait调用链 7.在trait中覆盖抽象 ...

  4. dubbo之连接控制

    连接控制 服务端连接控制 限制服务器端接受的连接不能超过 10 个 1: <dubbo:provider protocol="dubbo" accepts="10& ...

  5. Lazarus Reading XML- with TXMLDocument and TXPathVariable

    也就是使用XPath的方式,具体语法规则查看http://www.w3school.com.cn/xpath/xpath_syntax.asp,说明得相当详细.这里列举例子是说明在Lazarus/FP ...

  6. (转) Arcgis for js之WKT和GEOMETRY的相互转换

    http://blog.csdn.net/gisshixisheng/article/details/44057453 1.wkt简介 WKT(Well-known text)是一种文本标记语言,用于 ...

  7. url取值乱码问题,url加中文导致页面不能加载问题 js unicode转码,以及解码

    很多时候写H5或其他适配时,打不开url.很多原因是因为浏览器不支持中文url,从url拿 出来的中文值也会乱码,这时候就必须把中文转化成Unicode值,去进行页面传值 中文转Unicode fun ...

  8. centos安装指定mysql

    mysql下载地址:http://repo.mysql.com/ nginx下载地址 我下载是这个 http://nginx.org/packages/centos/7/noarch/RPMS/ngi ...

  9. 数据库操作(二)SOQL

    1.SOQL SOQL是对象查询语言.它可以在单个sObject中在给定标准上搜索记录. 2.SELECT语句 [格式]SELECT 列名称 FROM 表名称 [示例] 3.SELECT...WHER ...

  10. mitmproxy安装与使用

    mitmproxy安装与使用 (抓包,中间人代理工具.支持SSL) 在开发微信公端的时候开发调试只能用浏览器自带开发工具,本来移动端可以用用fiddler.wireshark等工具来抓包,但是自从改用 ...