• [hdu5199]统计数据的水题


    题意:统计一个数出现了多少次,统计后删去它所有的出现。思路:乱搞。。自己没事写的hash,不过赶脚效率有点低。

      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 lowbit(x) ((x) & (-(x)))
     25 #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) {}
     26 #define constructInt3(name, a, b, c) name(int a = 0, int b = 0, int c = 0): a(a), b(b), c(c) {}
     27 #define constructInt2(name, a, b) name(int a = 0, int b = 0): a(a), b(b) {}
     28 
     29 typedef double db;
     30 typedef long long LL;
     31 typedef pair<int, int> pii;
     32 typedef multiset<int> msi;
     33 typedef multiset<int>::iterator msii;
     34 typedef set<int> si;
     35 typedef set<int>::iterator sii;
     36 typedef vector<int> vi;
     37 
     38 const int dx[8] = {1, 0, -1, 0, 1, 1, -1, -1};
     39 const int dy[8] = {0, -1, 0, 1, -1, 1, 1, -1};
     40 const int maxn = 1e6 + 7;
     41 const int maxm = 1e5 + 7;
     42 const int maxv = 1e7 + 7;
     43 const int max_val = 1e6 + 7;
     44 const int MD = 1e9 +7;
     45 const int INF = 1e9 + 7;
     46 const double PI = acos(-1.0);
     47 const double eps = 1e-10;
     48 
     49 inline int ReadInt() {
     50     char c = getchar();
     51     while(!isdigit(c)) c = getchar();
     52 
     53     int x = 0;
     54     while(isdigit(c)) {
     55         x = x * 10 + c - '0';
     56         c = getchar();
     57     }
     58     return x;
     59 }
     60 
     61 inline void WriteInt(int i) {
     62     int p = 0;
     63     static int buf[10];
     64     if(i == 0) buf[p++] = 0;
     65     else while(i) {
     66         buf[p++] = i % 10;
     67         i /= 10;
     68     }
     69     for(int j = p - 1; j >= 0; j--) putchar('0' + buf[j]);
     70 }
     71 template<class T> struct HashList {
     72     vector<T> hash[max_val];
     73     HashList<T>() { }
     74     void clear() { mem0(hash); }
     75     void insert(T x) { hash[x % max_val].push_back(x); }
     76     void erase(T x) {
     77         int node = x % max_val;
     78         for (int i = 0; i < hash[node].size(); i++) {
     79             if (hash[node][i] == x) {
     80                 hash[node].erase(hash[node].begin() + i, hash[node].begin() + i + 1);
     81                 return ;
     82             }
     83         }
     84     }
     85     void erase_all(T x) {
     86         int node = x % max_val;
     87         for (int i = 0; i < hash[node].size(); i++) {
     88             if (hash[node][i] == x) {
     89                 hash[node].erase(hash[node].begin() + i, hash[node].begin() + i + 1);
     90                 i--;
     91             }
     92         }
     93     }
     94     bool find(T x) {
     95         int node = x % max_val;
     96         for (int i = 0; i < hash[node].size(); i++) {
     97             if (hash[node][i] == x) return true;
     98         }
     99         return false;
    100     }
    101     int find_cnt(T x) {
    102         int node = x % max_val, cnt = 0;
    103         for (int i = 0; i < hash[node].size(); i++) {
    104             if (hash[node][i] == x) cnt++;
    105         }
    106         return cnt;
    107     }
    108 };
    109 
    110 HashList<int> Hash;
    111 
    112 int main() {
    113     //freopen("in.txt", "r", stdin);
    114     int n, m;
    115     while (cin >> n >> m) {
    116         Hash.clear();
    117         for (int i = 0; i < n; i++) {
    118             Hash.insert(ReadInt());
    119         }
    120         for (int i = 0, x; i < m; i++) {
    121             x = ReadInt();
    122             WriteInt(Hash.find_cnt(x));
    123             putchar('
    ');
    124             Hash.erase_all(x);
    125         }
    126     }
    127     return 0;
    128 }
    View Code
  • 相关阅读:
    1.Oracle实例和Oracle数据库(Oracle体系结构)
    04.SQL基础-->分组与分组函数
    SYSAUX表空间满的解决方法
    Linux 软件安装到 /usr,/usr/local/ 还是 /opt 目录?
    Python学习-八周五次课(12月15日)
    ELK安装
    Python学习-八周二次课(12月12日)
    Python学习-八周一次课(12月11日)
    Python学习——七周四次课(12月7日)
    Python学习-复习7次课(12月4日)
  • 原文地址:https://www.cnblogs.com/jklongint/p/4418988.html
Copyright © 2020-2023  润新知