hahaha

来源:互联网 发布:手机万网域名如何解析 编辑:程序博客网 时间:2024/06/05 13:32

这个题就可以模拟因为没有交点,所以排一个序对应的就是连起来的直线
然后可以二分最多可以到那个直线,因为直线一定是一个个往上的,有顺序,一开始我以为能n*m倒着结束,可是不行,只能二分了。。

#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>int n;using namespace std;int m;int a[299999],b[299999];int main(){    freopen("hahaha.in","r",stdin);    freopen("hahaha.out","w",stdout);    scanf("%d",&n);    for(int i=1;i<=n;i++) scanf("%d",&a[i]);    for(int i=1;i<=n;i++) scanf("%d",&b[i]);    sort(a+1,a+n+1);    sort(b+1,b+n+1);    scanf("%d",&m);    while(m--){        int x,y;        scanf("%d%d",&x,&y);        int l=1,r=n;        double k=1.0*(-b[1])/a[1],w=b[1];        double yy=k*x+w;        if(yy>y) {printf("0\n");            continue;//特判第一个        }        while(l<=r){            int mid=(l+r)>>1;             k=1.0*(-b[mid])/a[mid],w=b[mid];//求直线方程            //printf("%lf %lf\n",k,w);             yy=k*x+w;//看看点在直线上还是下            if(yy<=y){                l=mid+1;            }            else r=mid-1;         }        printf("%d\n",l-1);     }} 
原创粉丝点击