zoukankan      html  css  js  c++  java
  • 济南学校D1T3_hahaha

    【问题描述】

    小Q对计算几何有着浓厚的兴趣。他经常对着平面直角坐标系发呆,思考一些有趣的问题。今天,他想到了一个十分有意思的题目:

    首先,小Q会在轴正半轴和轴正半轴分别挑选个点。随后,他将轴的点与轴的点一一连接,形成条线段,并保证任意两条线段不相交。小Q确定这种连接方式有且仅有一种。最后,小Q会给出个询问。对于每个询问,将会给定一个点,请回答线段OP与条线段会产生多少个交点?

    小Q找到了正在钻研数据结构的你,希望你可以帮他解决这道难题。

    【输入格式】

    第行包含一个正整数,表示线段的数量;

    第行包含个正整数,表示小Q在轴选取的点的横坐标;

    第行包含个正整数,表示小Q在轴选取的点的纵坐标;

    第4行包含一个正整数,表示询问数量;

    随后行,每行包含两个正整数,表示询问中给定的点的横、纵坐标。

    【输出格式】

    共行,每行包含一个非负整数,表示你对这条询问给出的答案。

    【样例输入】

    3

    4 5 3

    3 5 4

    2

    1 1

    3 3

    【样例输出】

    0

    3

    【样例解释】

    然后塔里啥都没有。

    【数据规模与约定】

    对于的数据50%,n,m<=2000。

    对于的数据100%,n,m<=200000,坐标范围<=100000000。

    _______________________________________________________________

    简单的二分答案

    _______________________________________________________________

     

     1 #include<cstdio>
     2 #include<iostream>
     3 #include<cstring>
     4 #include<algorithm>
     5 
     6 using namespace std;
     7 int a[200010],b[200010];
     8 int n,m;
     9 int x,y;
    10 void readint(int &x)
    11 {
    12     char c=getchar();
    13     for(;c>'9'||c<'0';c=getchar());
    14     x=0;
    15     for(;c<='9'&&c>='0';c=getchar())x=x*10+c-'0';
    16 }
    17 bool pd(int cur)
    18 {
    19     double yy=(double)(a[cur]-x)*b[cur]/a[cur];
    20     return yy-y<=0.0000001;
    21 }
    22 int main()
    23 {
    24     freopen("hahaha.in","r",stdin);
    25     freopen("hahaha.out","w",stdout);
    26     readint(n);
    27     for(int i=0;i<n;i++)readint(a[i]);
    28     sort(a,a+n);
    29     for(int i=0;i<n;i++)readint(b[i]);
    30     sort(b,b+n);
    31     readint(m);
    32     for(int i=0;i<m;i++)
    33     {
    34         readint(x);readint(y);
    35         int l=0,r=n-1,ans=-1;
    36         while(l<=r)
    37         {
    38             int mid=(l+r)/2;
    39             if(pd(mid))
    40             {
    41                 ans=mid;
    42                 l=mid+1;
    43             }
    44             else r=mid-1;
    45         }
    46         printf("%d\n",ans+1);
    47     }
    48     fclose(stdin);
    49     fclose(stdout);
    50     return 0;
    51 }
  • 相关阅读:
    HBase 高性能加入数据
    Please do not register multiple Pages in undefined.js 小程序报错的几种解决方案
    小程序跳转时传多个参数及获取
    vue项目 调用百度地图 BMap is not defined
    vue生命周期小笔记
    解决小程序背景图片在真机上不能查看的问题
    vue项目 菜单侧边栏随着右侧内容盒子的高度实时变化
    vue项目 一行js代码搞定点击图片放大缩小
    微信小程序进行地图导航使用地图功能
    小程序报错Do not have xx handler in current page的解决方法
  • 原文地址:https://www.cnblogs.com/gryzy/p/6038736.html
Copyright © 2011-2022 走看看