[Lydsy1705月赛]排名的战争

Time Limit: 8 Sec  Memory Limit: 256 MB
Submit: 338  Solved: 69
[Submit][Status][Discuss]

Description

小Q是一名出色的质检员,他负责质检一批手机的质量。手机包含两个性能属性:电池寿命x_1与坚硬度x_2。小Q将
为它们评估综合质量分数,具体地说,他将选择两个非负实数w_1,w_2,且$_1,w_2不能同时为0,则一部手机的综
合分数s=w_1*x_1+w_2*x_2。在评定出所有手机的分数后,小Q会把手机按分数从高到低排序,若有多部手机分数相
同,他可以将它们随意排列,因此每部手机的排名都是独一无二的。聪明的你会发现,对于不同的w的选定,手机
的最终排名可能会大不一样。因此各个公司都会暗中贿赂小Q,希望他让自己的排名尽量靠前。现一共有n家公司,
每家公司提供了一部手机用于质检。tangjz知道小Q可以通过调参来控制排名,所以他想知道他的公司的手机排名
最高是多少,最低是多少。

Input

第一行包含一个正整数n(1<=n<=100000),即公司的个数。
接下来n行,每行两个正整数x_1,x_2(1<=x_1,x_2<=1000),分别表示每部手机的两个属性。
tangjz所在公司提供的手机总是输入里的第一部手机。

Output

输出一行两个整数,即最高排名与最低排名。

Sample Input

5
7 7
11 10
8 5
1 1
12 12

Sample Output

3 4

HINT

Source

本OJ付费获得

只和w1,w2比值有关,那么就可以固定w2,然后不断调大w1就可以了

  1 #include<iostream>
  2 #include<cstdlib>
  3 #include<cstdio>
  4 #include<cstring>
  5 #include<ctime>
  6 #include<cmath>
  7 #include<algorithm>
  8 #include<iomanip>
  9 #include<queue>
 10 #include<map>
 11 #include<bitset>
 12 #include<stack>
 13 #include<vector>
 14 #include<set>
 15 using namespace std;
 16 #define MAXN 100010
 17 #define MAXM 1010
 18 #define INF 1000000000
 19 #define MOD 1000000007
 20 #define ll long long
 21 #define eps 1e-8
 22 struct data{
 23     double v;
 24     int c;
 25     friend bool operator <(data x,data y){
 26         return x.v<y.v;
 27     }
 28 };
 29 int n;
 30 int x[MAXN],y[MAXN];
 31 int low=1,high=INF;
 32 data t[MAXN];
 33 int tot;
 34 int main(){
 35     int i;
 36     scanf("%d",&n);
 37     for(i=1;i<=n;i++){
 38         scanf("%d%d",&x[i],&y[i]);
 39     }
 40     int tlowx=1,thighx=1,tlowy=1,thighy=1;
 41     for(i=2;i<=n;i++){
 42         if(x[i]>x[1]){
 43             thighx++;
 44         }
 45         if(x[i]>=x[1]){
 46             tlowx++;
 47         }
 48         if(y[i]>y[1]){
 49             thighy++;
 50         }
 51         if(y[i]>=y[1]){
 52             tlowy++;
 53         }
 54     }
 55     low=max(low,max(tlowx,tlowy));
 56     high=min(high,min(thighx,thighy));
 57     int tlow=1,thigh=1;
 58     for(i=2;i<=n;i++){
 59         if(y[i]==y[1]){
 60             if(x[i]>=x[1]){
 61                 tlow++;
 62             }
 63             if(x[i]>x[1]){
 64                 thigh++;
 65             }
 66             continue ;
 67         }
 68         if(y[i]<y[1]){
 69             t[++tot].v=1000.*(x[1]-x[i])/(y[i]-y[1]);
 70             t[tot].c=-1;
 71             tlow++;
 72             thigh++;
 73         }
 74         if(y[i]>y[1]){
 75             t[++tot].v=1000.*(x[1]-x[i])/(y[i]-y[1]);
 76             t[tot].c=1;
 77         }
 78         if(t[tot].v<=0){
 79             tlow+=t[tot].c;
 80             thigh+=t[tot].c;
 81             tot--;
 82         }
 83     }
 84     if(tot){
 85         sort(t+1,t+tot+1);
 86         for(i=1;i<=tot;){
 87             int wzh=i;
 88             int tc0=0,tc1=0;
 89             while(wzh<=tot&&fabs(t[wzh].v-t[i].v)<eps){
 90                 if(t[wzh].c==1){
 91                     tc1++;
 92                 }else{
 93                     tc0++;
 94                 }
 95                 wzh++;
 96             }
 97             low=max(low,tlow+tc1);
 98             high=min(high,thigh-tc0);
 99             tlow+=tc1-tc0;
100             thigh+=tc1-tc0;
101             i=wzh;
102         }
103     }
104     printf("%d %d\n",high,low);
105 }

转载于:https://www.cnblogs.com/fengzhiyuan/p/8682210.html

bzoj 4880 [Lydsy1705月赛]排名的战争 贪心相关推荐

  1. bzoj 4883 [Lydsy1705月赛]棋盘上的守卫 题解(思维,建图,最小基环森林)

    原题链接: bzoj 题意简述 一个 n ∗ m n*m n∗m的矩阵,要放 n + m n+m n+m个守卫,每个守卫只能守住所在行或所在列(只能选择一个).在 i , j i,j i,j位置上放守 ...

  2. bzoj 5092: [Lydsy1711月赛]分割序列

    5092: [Lydsy1711月赛]分割序列 Time Limit: 5 Sec  Memory Limit: 256 MB Submit: 219  Solved: 100 [Submit][St ...

  3. 【Nowcoder】牛客小白月赛26 H 保卫家园 | 贪心、扫描线

    emmm-考试周一天一套小白月赛保持手感- 别问为什么,怕被太难的题卡的挂科- 本来不想写什么题解,不过这题确实有妙处,就记录一下吧 题目大意: 为了抵御深渊的蔓延,被深渊毁掉家园的人们组建法兰不死队 ...

  4. BZOJ 1124: [POI2008]枪战Maf(构造 + 贪心)

    题意 有 \(n\) 个人,每个人手里有一把手枪.一开始所有人都选定一个人瞄准(有可能瞄准自己).然后他们按某个顺序开枪,且任意时刻只有一个人开枪. 因此,对于不同的开枪顺序,最后死的人也不同. 问最 ...

  5. bzoj 2457 [BeiJing2011]双端队列 模拟+贪心

    [BeiJing2011]双端队列 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 457  Solved: 203 [Submit][Status] ...

  6. BZOJ 1685 [Usaco2005 Oct]Allowance 津贴:贪心【给硬币问题】

    题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1333 题意: 有n种不同币值的硬币,并保证大币值一定是小币值的倍数. 每种硬币的币值为 ...

  7. BZOJ 3993 Luogu P3324 [SDOI2015]星际战争 (最大流、二分答案)

    字符串终于告一段落了! 题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=3993 (luogu) https://www.l ...

  8. [bzoj 4811] 由乃的OJ(贪心 + 树链剖分)

    前置技能:[Noi2014]起床困难综合症. 不难看出,这道题其实就是上一道题的加强版 在上一道题中,因为位运算时位与位之间互不干扰 所以从高位到低位枚举初始值二进制上的每一位为0和为1时,经过n次计 ...

  9. BZOJ 1193: [HNOI2006]马步距离【贪心+搜索】

    1193: [HNOI2006]马步距离 [题目描述] 传送门 [题解] 大范围贪心,然后小范围BFS,为了答案准确,尽量使这个小范围大,这题100就可以了. 代码如下 #include<que ...

最新文章

  1. C#Winform窗体实现服务端和客户端通信例子(TCP/IP)
  2. python输入十个数输出最大值_python输入十个数如何输出最大值
  3. C语言__LINE__实现原理
  4. L1-055 谁是赢家-PAT团体程序设计天梯赛GPLT
  5. Guava CaseFormat
  6. 帆软获取单元格值与赋值
  7. [NOIP2016]愤怒的小鸟
  8. Intellij IDEA 使用教程(史上最全,持续更新)
  9. tomcat 加载js 中文乱码
  10. JDY-10M蓝牙简易组网教程
  11. 转《牵一只蜗牛去散步》
  12. Deep Unordered Composition Rivals Syntactic Methods for Text Classification
  13. 法拉利虚拟学院2010 服务器,法拉利虚拟学院
  14. 有关计算机的英语文献及其翻译,计算机专业外文文献论文翻译1
  15. Java入门第三季-综合实战:简易扑克牌游戏
  16. kubeadm搭建Kubernetes集群v1.16
  17. java学籍管理系统课设报告,java课程设计学籍管理系统.doc
  18. 树莓派+温度传感器实现室内温度监控
  19. THB6128步进电机驱动芯片介绍
  20. Ubuntu下使用ipmsg(飞鸽传书)

热门文章

  1. mp4无法用于直播流
  2. HAProxy高并发问题解决
  3. BDB (Berkeley DB)数据库简单介绍(转载)
  4. unix、linux 命令
  5. google圣诞节彩蛋
  6. Introduction to Financial Management
  7. 理解spark闭包以及broadcast(转载)
  8. 用editplus批量修改文件编码最快速的方法
  9. oracle xml文件是什么文件,介绍关于Oracle下存取XML格式数据的方式
  10. 深度学习(二十二)——ESPCN, FSRCNN, VESPCN, SRGAN, DemosaicNet, MemNet, RDN, ShuffleSeg