• [hdu5200]离线+标记


    思路:按顺序处理,新建一堆然后向左右合并,不过巧妙地用了标记数组来记录和统计答案。

      1 #pragma comment(linker, "/STACK:10240000,10240000")
      2 
      3 #include <iostream>
      4 #include <cstdio>
      5 #include <algorithm>
      6 #include <cstdlib>
      7 #include <cstring>
      8 #include <map>
      9 #include <queue>
     10 #include <deque>
     11 #include <cmath>
     12 #include <vector>
     13 #include <ctime>
     14 #include <cctype>
     15 #include <set>
     16 
     17 using namespace std;
     18 
     19 #define mem0(a) memset(a, 0, sizeof(a))
     20 #define lson l, m, rt << 1
     21 #define rson m + 1, r, rt << 1 | 1
     22 #define define_m int m = (l + r) >> 1
     23 #define rep(a, b) for(int a = 0; a < b; a++)
     24 #define all(a) (a).begin(), (a).end()
     25 #define lowbit(x) ((x) & (-(x)))
     26 #define constructInt4(name, a, b, c, d) name(int a = 0, int b = 0, int c = 0, int d = 0): a(a), b(b), c(c), d(d) {}
     27 #define constructInt3(name, a, b, c) name(int a = 0, int b = 0, int c = 0): a(a), b(b), c(c) {}
     28 #define constructInt2(name, a, b) name(int a = 0, int b = 0): a(a), b(b) {}
     29 #define pc(a) putchar(a)
     30 #define ps(a) puts(a)
     31 
     32 typedef double db;
     33 typedef long long LL;
     34 typedef pair<int, int> pii;
     35 typedef multiset<int> msi;
     36 typedef multiset<int>::iterator msii;
     37 typedef set<int> si;
     38 typedef set<int>::iterator sii;
     39 typedef vector<int> vi;
     40 
     41 const int dx[8] = {1, 0, -1, 0, 1, 1, -1, -1};
     42 const int dy[8] = {0, -1, 0, 1, -1, 1, 1, -1};
     43 const int maxn = 1e6 + 7;
     44 const int maxm = 1e5 + 7;
     45 const int maxv = 1e7 + 7;
     46 const int max_val = 1e6 + 7;
     47 const int MD = 1e9 +7;
     48 const int INF = 1e9 + 7;
     49 const double PI = acos(-1.0);
     50 const double eps = 1e-10;
     51 
     52 inline int ReadInt() {
     53     char c = getchar();
     54     while(!isdigit(c)) c = getchar();
     55 
     56     int x = 0;
     57     while(isdigit(c)) {
     58         x = x * 10 + c - '0';
     59         c = getchar();
     60     }
     61     return x;
     62 }
     63 
     64 inline void WriteInt(int i) {
     65     int p = 0;
     66     static int buf[10];
     67     if(i == 0) buf[p++] = 0;
     68     else while(i) {
     69         buf[p++] = i % 10;
     70         i /= 10;
     71     }
     72     for(int j = p - 1; j >= 0; j--) putchar('0' + buf[j]);
     73 }
     74 
     75 
     76 bool cmp(const pii &a, const pii &b) {
     77     return a.first > b.first;
     78 }
     79 
     80 int main() {
     81     //freopen("in.txt", "r", stdin);
     82     int n, q;
     83     while (cin >> n >> q) {
     84         vector<pii> a(n), b(q);
     85         vector<int> out(q);
     86         rep(i, n) {
     87             a[i].first = ReadInt();
     88             a[i].second = i;
     89         }
     90         rep(i, q) {
     91             b[i].first = ReadInt();
     92             b[i].second = i;
     93         }
     94         sort(all(a), cmp);
     95         sort(all(b), cmp);
     96         vector<bool> vis(n);
     97         int now = 0, ans = 0;
     98         rep(i, q) {
     99             while (now < n && a[now].first > b[i].first) {
    100                 int pos = a[now].second;
    101                 vis[pos] = true;
    102                 ans++;
    103                 if (pos && vis[pos - 1]) ans--;
    104                 if (pos < n - 1 && vis[pos + 1]) ans--;
    105                 now++;
    106             }
    107             out[b[i].second] = ans;
    108         }
    109         rep(i, q) {
    110             WriteInt(out[i]);
    111             pc('
    ');
    112         }
    113     }
    114     return 0;
    115 }
    View Code
  • 相关阅读:
    java学习(19-IO高级)
    java学习(18-异常)
    java学习(17-Map和Set)
    java学习笔记(16-集合)
    java学习笔记(15-高级api)
    java学习笔记(14-包和权限修饰符)
    Deno文件处理详解:如何写入文件、如何读文件、如何创建删除以及检查文件和目录。
    2020年12月8日建站随笔:IPlayIO中文网从上线到现在的一些总结
    2020 FreeBSD如何更换国内仓库源
    推荐11个值得研究学习的Python开源项目(从入门到python高级开发)
  • 原文地址:https://www.cnblogs.com/jklongint/p/4418987.html
Copyright © 2020-2023  润新知