朴素的做法显然是O(n3)的
考虑优化,我们将约束条件变形为A*h+B*v<=A*minh+B*minv+c
右边是一个定值,当右边确定了minh之后,随着minv的增大,原来满足条件的且v>=minv的一定还满足条件
然后我们只要先对A*h+B*v排序,然后穷举minh,然后扫一遍即可
O(n2)的算法很显然,我正好卡着时限过去的……
但这道题的本意肯定是有O(nlogn)的算法,求教导

  1. type node=record
  2. h,v,s:longint;
  3. end;
  4.  
  5. var f,v:array[..] of longint;
  6. h:array[..] of boolean;
  7. w:array[..] of node;
  8. ans,t,m,x,y,n,i,j,sum,s,a,b,c,k:longint;
  9.  
  10. procedure swap(var a,b:node);
  11. var c:node;
  12. begin
  13. c:=a;
  14. a:=b;
  15. b:=c;
  16. end;
  17.  
  18. procedure sort(l,r: longint);
  19. var i,j,x: longint;
  20. begin
  21. i:=l;
  22. j:=r;
  23. x:=w[(l+r) div ].s;
  24. repeat
  25. while w[i].s<x do inc(i);
  26. while x<w[j].s do dec(j);
  27. if not(i>j) then
  28. begin
  29. swap(w[i],w[j]);
  30. inc(i);
  31. j:=j-;
  32. end;
  33. until i>j;
  34. if l<j then sort(l,j);
  35. if i<r then sort(i,r);
  36. end;
  37.  
  38. begin
  39. readln(n,a,b,c);
  40. for i:= to n do
  41. begin
  42. readln(x,y);
  43. h[x]:=true;
  44. if x>m then m:=x;
  45. v[y]:=;
  46. w[i].h:=x;
  47. w[i].v:=y;
  48. w[i].s:=a*x+b*y;
  49. end;
  50. sort(,n);
  51. for i:= to do
  52. if v[i]= then
  53. begin
  54. inc(t);
  55. f[t]:=i; //表示v可能的数字
  56. end;
  57.  
  58. for i:= to m do
  59. begin
  60. if not h[i] then continue; //穷举minh
  61. fillchar(v,sizeof(v),);
  62. sum:=;
  63. k:=;
  64. for j:= to t do
  65. begin
  66. if j<> then
  67. sum:=sum-v[f[j-]]; //对于当前minv,小于的不算
  68. s:=a*i+b*f[j]+c;
  69. while (k<=n) and (w[k].s<=s) do
  70. begin
  71. if (w[k].h>=i) and (w[k].v>=f[j]) then
  72. begin
  73. inc(sum);
  74. inc(v[w[k].v]); //方便随着minv的增大,快速减去小于minv的数目
  75. end;
  76. inc(k);
  77. end;
  78. if sum>ans then ans:=sum;
  79. if k>n then break; //后面一定只减不增
  80. end;
  81. end;
  82. writeln(ans);
  83. end.

bzoj1071的更多相关文章

  1. BZOJ1071 [SCOI2007]压缩 其他

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1071 题意概括 有两个序列a[1..n], b[1..n],其编号为1..n,设为s序列.现在我们 ...

  2. 【BZOJ1071】[SCOI2007]组队(神仙题)

    [BZOJ1071][SCOI2007]组队(神仙题) 题面 BZOJ 洛谷 题解 首先把式子整理一下,也就是\(A*h+B*v\le C+A*minH+B*minV\) 我们正常能够想到的做法是钦定 ...

  3. [bzoj1071]组队[单调指针乱搞]

    这道题也很感人,主要改了比较久的时间... bzoj第一页的题,居然只过了五百多个人,(我是第512,orzliyicheng是513) 代码不长,但是细节搞了很久,主要sort写错了,晕... 首先 ...

  4. bzoj1071[SCOI2007]组队

    1071: [SCOI2007]组队 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2472  Solved: 792[Submit][Status][ ...

  5. BZOJ1071: [SCOI2007]组队【双指针】【思维好题】

    Description NBA每年都有球员选秀环节.通常用速度和身高两项数据来衡量一个篮球运动员的基本素质.假如一支球队里速度最慢的球员速度为minV,身高最矮的球员高度为minH,那么这支球队的所有 ...

  6. 【bzoj1071】[SCOI2007]组队

    sum= A*h+B*s排序 然后枚举height和speed的最小值 然后用两个指针:先枚举speed最小值,然后一边枚举v的最小值一边查询符合条件的人数. #include<algorith ...

  7. [bzoj1071]组队

    题目即要求$Ah+Bv<=C+Aminh+Bminv$,如果同时枚举minh和minv,那么即要求$minh\le h$,$minv\le v$且$s\le C+Aminh+Bminv$从小到大 ...

  8. BZOJ第1页养成计划

    嗯,用这篇博客当一个目录,方便自己和学弟(妹?)们查阅.不定期更新. BZOJ1000   BZOJ1001   BZOJ1002   BZOJ1003   BZOJ1004   BZOJ1005   ...

  9. BZOJ第一页刷题计划

    BZOJ第一页刷题计划 已完成:67 / 90 [BZOJ1000]A+B Problem:A+B: [BZOJ1001][BeiJing2006]狼抓兔子:最小割: [BZOJ1002][FJOI2 ...

随机推荐

  1. linux下实现redis共享session的tomcat集群

    为了实现主域名与子域名的下不同的产品间一次登录,到处访问的效果,因此采用rediss实现tomcat的集群效果.基于redis能够异步讲缓存内容固化到磁盘上,从而当服务器意外重启后,仍然能够让sess ...

  2. get方式请求会出现中文乱码。post方式不会。

    get方式请求会出现中文乱码.post方式不会.   如果是要解决get方式中文乱码问题,就需要做一个拦截器,或者在web.xml做一个get请求的配置 来自为知笔记(Wiz)

  3. LAMP网站架构方案分析

    本文引自:http://www.williamlong.info/archives/1908.html LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框 ...

  4. 定位 position

    html结构是fixed包裹relative,relative包裹absolute position:relative;相对定位 a 不影响元素本身的特性 b 不使元素脱离文档流(元素移动之后原始位置 ...

  5. 概述ASP.NET缓存机制

    PetShop之ASP.NET缓存机制 如果对微型计算机硬件系统有足够的了解,那么我们对于Cache这个名词一定是耳熟能详的.在CPU以及主板的芯片中,都引入了这种名为高速缓冲存储器(Cache)的技 ...

  6. [Mime] 在c#程序中放音乐的帮助类 (转载)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.M ...

  7. C#当中的多线程_任务并行库(下)

    4.8 处理任务中的异常 下面这个例子讨论了任务当中抛出异常,以及任务异常的获取     class Program     {         static void Main(string[] a ...

  8. hibernate 其中七种关联关系

    写的很好 http://blog.csdn.net/qq_27550755/article/details/50070017

  9. ENC28J60 + M430G2553,用uip搭建http服务器,解决“在XP系统下可以访问,在Win7下不能访问”的问题

    近日,用ENC28J60,在M430G2553上搭建一个简单的HTTP服务器,结果发现在XP系统下可以访问,在Win7下不能访问,非常奇葩的问题. 通过抓包,如下图,计算机(IP地址为192.168. ...

  10. HTML5 程序设计笔记(一)

    HTML5 概述 1.html5 发展史 1993年html首次以因特网草案形式发布. 20世纪90年代,html大幅发展,从2.0版,到3.2版和4.0版.最后到1999年的4.01版. 伴随htm ...