zoukankan      html  css  js  c++  java
  • bzoj

     1 #include <algorithm>
     2 #include <cstring>
     3 #include <cstdio>
     4 #include <bitset>
     5 #include <vector>
     6 #include <queue>
     7 #include <stack>
     8 #include <cmath>
     9 #include <list>
    10 #include <set>
    11 #include <map>
    12 #define rep(i,a,b) for(int i = a;i <= b;++ i)
    13 #define per(i,a,b) for(int i = a;i >= b;-- i)
    14 #define mem(a,b) memset((a),(b),sizeof((a)))
    15 #define FIN freopen("in.txt","r",stdin)
    16 #define FOUT freopen("out.txt","w",stdout)
    17 #define IO ios_base::sync_with_stdio(0),cin.tie(0)
    18 #define mid ((l+r)>>1)
    19 #define ls (id<<1)
    20 #define rs ((id<<1)|1)
    21 #define N 50005
    22 #define INF 0x3f3f3f3f
    23 #define INFF ((1LL<<62)-1)
    24 #define mod 998244353
    25 typedef long long ll;
    26 using namespace std;
    27   
    28 int n,q[N],ans[N]; // q[n] = [l, r);
    29 struct Node{
    30     int a,b,id;
    31     bool operator < (const Node &r) const {
    32         if(a == r.a)    return b > r.b;
    33         return a < r.a;
    34     }
    35 }node[N];
    36 double cal(int x, int y){
    37     double ans = (node[y].b-node[x].b)*1.0/(node[x].a-node[y].a);
    38     return ans;
    39 }
    40 int main()
    41 {IO;
    42     //FIN;
    43     while(cin >> n){
    44         rep(i, 1, n)    { cin >> node[i].a >> node[i].b; node[i].id = i; }
    45         sort(node+1, node+n+1);
    46         int top = 0;
    47         rep(i, 1, n){
    48             if(top >= 2){
    49                 while(top >= 2){
    50                     double x = cal(i, q[top-1]), X = cal(q[top-1], q[top-2]);
    51                     if(x <= X)   top--;
    52                     else
    53                         break;
    54                 }
    55             }
    56             q[top++] = i;
    57         }
    58         int len = 0;
    59         rep(i, 0, top-1)    ans[len++] = node[q[i]].id;
    60         sort(ans, ans+len);
    61         rep(i, 0, len-1)    cout << ans[i] << " ";
    62     }
    63     return 0;
    64 }
    View Code
  • 相关阅读:
    Linux关闭You have new mail in /var/spool/mail/root提示
    表单验证提交内容不能为空的几种方法
    CSS选择器的优先级
    SQL Server BCP 资料导入导出
    软考数据库-系统开发与软件工程
    软考数据库-无损联接分解
    软考数据库-数据结构
    反转字符串, 以单词反转句子
    数组中是否存在两数之和等于目标值
    栈 (Swift数组实现栈)
  • 原文地址:https://www.cnblogs.com/NWUACM/p/6803968.html
Copyright © 2011-2022 走看看