期望得分:100+100+60=260

实际得分:100+85+0=185

2017 国庆湖南 Day6

 

二分最后一条相交线段的位置

#include<cstdio>
#include<iostream>
#include<algorithm>

using namespace std;

#define N 100001

int x[N],y[N];
struct node
{
    int b;
    double k;
}Point[N];

void read(int &x)
{
    x=0; char c=getchar();
    while(!isdigit(c)) c=getchar();
    while(isdigit(c)) { x=x*10+c-'0'; c=getchar(); }
}

int main()
{
    freopen("geometry.in","r",stdin);
    freopen("geometry.out","w",stdout);
    int n; read(n);
    for(int i=1;i<=n;++i) read(x[i]);
    for(int i=1;i<=n;++i) read(y[i]);
    sort(x+1,x+n+1);
    sort(y+1,y+n+1);
    for(int i=1;i<=n;i++)
    {
        Point[i].b=y[i];
        Point[i].k=-y[i]*1.0/x[i];
    }
    int m; read(m);
    int a,b; double g;
    int l,r,mid,ans;
    while(m--)
    {
        read(a); read(b);
        g=1.0*b/a;
        l=1;r=n; ans=0;
        while(l<=r)
        {
            mid=l+r>>1;
            if(Point[mid].b/(g-Point[mid].k)<=a) ans=mid,l=mid+1;
            else r=mid-1;
        }
        printf("%d\n",ans);
    }
}
View Code

相关文章:

  • 2022-02-11
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2021-06-03
  • 2021-09-30
  • 2021-08-22
  • 2021-05-18
猜你喜欢
  • 2021-06-24
  • 2021-08-23
  • 2021-09-16
  • 2021-08-18
  • 2022-01-03
  • 2021-11-04
相关资源
相似解决方案