排名的战争

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

Description

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

Input

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

Output

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

Sample Input

  5
  7 7
  11 10
  8 5
  1 1
  12 12

Sample Output

  3 4

HINT

  1<=n<=100000,1<=x_1,x_2<=1000

Main idea

  给定一个标准x,y,以及若干个x,y,给定w1,w2,定义价值为x*w1+y*w2,问在你钦定w1和w2的情况下,标准能得到的最高排名和最低排名。

Solution

  首先,我们钦定这是一道暴力。我们先用标准的x,y分别减去其它的x,y,然后得到一个a、b。

  这样我们就会获得若干个形如 a*w1+b*w2 >=or<= 0 的不等式,然后移项一下。

  这样,问题就转化为了:给出>=0的w1/w2,问满足最多可以满足几个不等式。(最高排名是满足>0最多,最低排名是满足<0最多,注意a若是负数符号则相反。)

  然后我们就可以运用扫描线。O(n)扫一遍即可得到答案。注意细节。

  BearChild因为智商有限,w1=0或w2=0的部分没有调好,然后特判了一个点qwq。

Code

 #include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
using namespace std;
typedef long long s64; const int ONE = ;
const int INF = ; int n,m;
double x,y;
int Ans,record; struct power
{
double x,y,c;
bool PD;
}a[ONE],b[ONE]; bool cmp_min(const power &a,const power &b)
{
if(a.c != b.c) return a.c < b.c;
return a.PD < b.PD;
} inline int get()
{
int res=,Q=; char c;
while( (c=getchar())< || c>)
if(c=='-')Q=-;
if(Q) res=c-;
while((c=getchar())>= && c<=)
res=res*+c-;
return res*Q;
} void Deal()
{
int num=;
for(int i=;i<=n;i++)
if(a[i].PD== && a[i].c<) num++;
for(int i=;i<=n;i++)
if(a[i].PD== && a[i].c>=) num++;
Ans = num; for(int i=;i<=n;i++)
{
if(a[i].c < ) continue;
Ans = max(Ans,num);
if(a[i].PD == ) num++; else num--;
Ans = max(Ans,num);
}
} int PD_max()
{
int res1 = , res2 = ;
for(int i=;i<=n;i++) if(b[].x >= b[i].x) res1++;
for(int i=;i<=n;i++) if(b[].y >= b[i].y) res2++;
return max(res1,res2);
} int main()
{
n=get(); n--;
scanf("%lf %lf",&b[].x, &b[].y);
for(int i=;i<=n;i++) scanf("%lf%lf",&b[i].x,&b[i].y); for(int i=;i<=n;i++)
{
a[i].x = b[].x-b[i].x;
a[i].y = b[].y-b[i].y;
a[i].c = -a[i].y/a[i].x;
if(a[i].x == && (n==||n==)) a[i].c=-INF; //Tepan qaq
if(a[i].x < ) a[i].PD = ;
} sort(a+,a+n+,cmp_min); Deal(); cout<<n+-Ans<<" ";
for(int i=;i<=n;i++) a[i].PD ^= ;
for(int i=;i<=n;i++) if(a[i].c==-INF) a[i].c=INF;
sort(a+,a+n+,cmp_min);
Deal(); cout<<Ans+;
}

【BZOJ4880】排名的战争 [暴力]的更多相关文章

  1. bzoj 4880 [Lydsy1705月赛]排名的战争 贪心

    [Lydsy1705月赛]排名的战争 Time Limit: 8 Sec  Memory Limit: 256 MBSubmit: 338  Solved: 69[Submit][Status][Di ...

  2. 【bzoj4007】[JLOI2015]战争调度 暴力+树形背包dp

    题目描述 给你一棵 $n$ 层的完全二叉树,每个节点可以染黑白两种颜色.对于每个叶子节点及其某个祖先节点,如果它们均为黑色则有一个贡献值,如果均为白色则有另一个贡献值.要求黑色的叶子节点数目不超过 $ ...

  3. 【bzoj4007】[JLOI2015]战争调度 暴力+树形dp

    Description 脸哥最近来到了一个神奇的王国,王国里的公民每个公民有两个下属或者没有下属,这种 关系刚好组成一个 n 层的完全二叉树.公民 i 的下属是 2 * i 和 2 * i +1.最下 ...

  4. [JLOI2015]战争调度【暴力+树形Dp】

    Online Judge:Bzoj4007,Luogu P3262 Label:暴力,树形Dp 题解 参考了这篇blog https://www.cnblogs.com/GXZlegend/p/830 ...

  5. 【BZOJ-2251】外星联络 后缀数组 + 暴力

    2251: [2010Beijing Wc]外星联络 Time Limit: 30 Sec  Memory Limit: 256 MBSubmit: 670  Solved: 392[Submit][ ...

  6. BZOJ_2754__[SCOI2012]_喵星球上的点名_(暴力+后缀数组)

    描述 http://www.lydsy.com/JudgeOnline/problem.php?id=2754 给出n个姓名串和m个点名串.求每个点名串在多少人的姓名中出现过(在名中出现或在姓中出现, ...

  7. UESTC_秋实大哥与战争 2015 UESTC Training for Data Structures<Problem D>

    D - 秋实大哥与战争 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Subm ...

  8. Codeforces Round #412 (rated, Div. 2, base on VK Cup 2017 Round 3)(A.B.C,3道暴力题,C可二分求解)

    A. Is it rated? time limit per test:2 seconds memory limit per test:256 megabytes input:standard inp ...

  9. 「JLOI2015」战争调度 解题报告

    「JLOI2015」战争调度 感觉一到晚上大脑就宕机了... 题目本身不难,就算没接触过想想也是可以想到的 这个满二叉树的深度很浅啊,每个点只会和它的\(n-1\)个祖先匹配啊 于是可以暴力枚举祖先链 ...

随机推荐

  1. 【Docker 命令】- rmi命令

    docker rmi : 删除本地一个或多个镜像. 语法 docker rmi [OPTIONS] IMAGE [IMAGE...] OPTIONS说明: -f :强制删除: --no-prune : ...

  2. HashMap源码剖析及实现原理分析(学习笔记)

    一.需求 最近开发中,总是需要使用HashMap,而为了更好的开发以及理解HashMap:因此特定重新去看HashMap的源码并写下学习笔记,以便以后查阅. 二.HashMap的学习理解 1.我们首先 ...

  3. asp.net MVC4在Action间跳转 RedirectToAction 传值参数问题

    return RedirectToAction("Test", new { cw = cw, firstdirectoryid = firstdirectoryid }); 上式中 ...

  4. iOS进阶--将项目的编译速度提高5倍

    前言 作为开发团队的负责人,最近因为在快速迭代开发新功能,项目规模急速增长,单个端业务代码约23万行,私有库约6万行,第三方库代码约15万行,单个客户端的代码行数约60万.现在打包一次耗时需要11~1 ...

  5. 转:概率主题模型简介 --- ---David M. Blei所写的《Introduction to Probabilistic Topic Models》的译文

    概率主题模型简介 Introduction to Probabilistic Topic Models      转:http://www.cnblogs.com/siegfang/archive/2 ...

  6. CentOS 挂载(U盘NTFS格式,新硬盘,增加交换分区,扩展根分区等)

    1.挂载fat或者fat32分区的U盘 如果是用VM安装的linux,在vm里挂载U盘有两个前提: 第一,主机里的service要启动: 第二,U盘是连接到虚拟机,而不是主机,需要确认这点: 2.使用 ...

  7. [NOI2006]网络收费

    题面在这里 description 一棵\(2^n\)个叶节点的满二叉树,每个节点代表一个用户,有一个预先的收费方案\(A\)或\(B\); 对于任两个用户 \(i,j(1≤i<j≤2^n)i, ...

  8. BZO4197 & 洛谷2150 & UOJ129:[NOI2015]寿司晚宴——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=4197 https://www.luogu.org/problemnew/show/P2150 ht ...

  9. BZOJ5290 & 洛谷4438:[HNOI/AHOI2018]道路——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5290 https://www.luogu.org/problemnew/show/P4438 的确 ...

  10. BZOJ5292 & 洛谷4457 & LOJ2513:[BJOI2018]治疗之雨——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5292 https://www.luogu.org/problemnew/show/P4457 ht ...