zoukankan      html  css  js  c++  java
  • 20200727T3 【NOIP2017提高A组模拟8.10】计算几何

    Description

     

    3
    4 5 3 
    3 5 4 
    2 
    1 1 
    3 3

    0
    3

     

    Solution

    然而并不用long long。

    考场上就是直接排序然后判断 80分

    可以用它的单调递增用二分优化就过了

     tip:作者发现自己菜得连二分都写不对了。调了一会。。

    code

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<algorithm>
     5 #include<cstring>
     6 #include<queue>
     7 #include<vector>
     8 #include<stack>
     9 #include<set>
    10 #include<deque>
    11 #include<map>
    12 using namespace std;
    13 
    14 template <typename T> void read(T &x) {
    15     x = 0; int f = 1; char c;
    16     for (c = getchar(); c < '0' || c > '9'; c = getchar()) if (c == '-') f = -f;
    17     for (; c >= '0' && c <= '9'; c = getchar()) x = 10 * x + c - '0' ;
    18     x *= f;
    19 }
    20 template <typename T> void write(T x){
    21     if (x < 0) putchar('-'), x = -x;
    22     if (x > 9) write(x / 10);
    23     putchar(x % 10 + '0');
    24 }
    25 template <typename T> void writeln(T x) { write(x); putchar('
    '); }
    26 template <typename T> void writesn(T x) { write(x); putchar(' '); }
    27 
    28 #define ll long long
    29 #define inf 100000
    30 #define next net
    31 #define P 9999991
    32 #define N 100010
    33 #define mid ((l+r)>>1)
    34 #define lson (o<<1)
    35 #define rson (o<<1|1)
    36 #define R register
    37 #define debug puts("zxt")
    38 
    39 int n, m , aa, bb;
    40 int x[N ], y[N ];
    41 double k[N ], b[N ];
    42 signed main()
    43 {
    44     read(n);
    45     for(R int i = 1; i <= n; i++) read(x[i]);
    46     for(R int i = 1; i <= n; i++) read(y[i]);
    47     sort(x + 1, x + n + 1);
    48     sort(y + 1, y + n + 1);
    49     for(R int i = 1; i <= n;i++)
    50     {
    51         k[i] = - 1.0 * y[i] / x[i];
    52         b[i] = 1.0 * y[i];
    53     }
    54     read(m );
    55     while(m --)
    56     {
    57         read(aa); read(bb);
    58         int l = 0, r = n;
    59         while(l + 1 < r)
    60         {
    61             if(1.0 * aa * k[mid] + b[mid] <= (double)bb) l = mid;
    62             else r = mid - 1;
    63         }
    64         if(1.0 * aa * k[l + 1] + b[l + 1] <= (double)bb) writeln(l + 1);
    65         else writeln(l);
    66     }
    67     return 0;
    68 }
  • 相关阅读:
    JScript 对字符串、数组处理的常用方法
    JavaScript 正则的使用方法
    Nginx配置文件详细说明 (转)
    PHP中try catch的用法
    PHP将多个文件中的内容合并为新的文件
    如何配置WAMP环境(主要是Apache与PHP)
    解决“mysql不是内部/外部命令,也不是可执行程序,也不是批处理文件”
    Memcached 在Windows和Linux的安装和使用
    ThinkPhp中验证码不显示和配置项的问题解决方法
    JAVA8流操作
  • 原文地址:https://www.cnblogs.com/e-e-thinker/p/13385322.html
Copyright © 2011-2022 走看看