• BZOJ 2083 vector的巧用+二分


    2083: [Poi2010]Intelligence test

    Time Limit: 10 Sec  Memory Limit: 259 MB
    Submit: 469  Solved: 227
    [Submit][Status][Discuss]

    Description

    霸中智力测试机构的一项工作就是按照一定的规则删除一个序列的数字,得到一个确定的数列。Lyx很渴望成为霸中智力测试机构的主管,但是他在这个工作上做的并不好,俗话说熟能生巧,他打算做很多练习,所以他希望你写一个程序来快速判断他的答案是否正确。

    Input

    第一行为一个整数m(1<=m<=1000000)第二行包括m个用空格分开的整数ai(1<=ai<=1000000),组成了最初的序列,第三行为一个整数n(1<=n<=1000000),表示n个Lyx经过一系列删除得到的序列,每个序列两行,第一行给出长度L(1<=L<=m),然后下一行为L个由空格分开的整数bi(1<=bi<=1000000)。

    Output

    共n行,如果Lyx的序列确实是由最初的序列删除一些数得到,就输出TAK,否则输出NIE。

    Sample Input

    7
    1 5 4 5 7 8 6
    4
    5
    1 5 5 8 6
    3
    2 2 2
    3
    5 7 8
    4
    1 5 7 4

    Sample Output

    TAK
    NIE
    TAK
    NIE
     
     
    思路:= =感觉输入量好大啊,而且我也没有会员,不知道我写的方法是wa还是tle还是AC,就先暂时贴出来就好了
    将a中的每个数值都预处理出来,放出vector中,其中定义vector<int> ve[i]表示,数值为i的出现在a中的位置集合。
    然后我们暴力b串,并二分在a中的位置即可。(总感觉这个数据范围好像有毒啊)
    //看看会不会爆int!数组会不会少了一维!
    //取物问题一定要小心先手胜利的条件
    #include <bits/stdc++.h>
    using namespace std;
    #pragma comment(linker,"/STACK:102400000,102400000")
    #define LL long long
    #define ALL(a) a.begin(), a.end()
    #define pb push_back
    #define mk make_pair
    #define fi first
    #define se second
    #define haha printf("haha
    ")
    const int maxn = 2e6 + 5;
    int n, m;
    vector<int> ve[maxn];
    vector<int>::iterator it;
    int main(){
        scanf("%d", &m);
        int a;
        for (int i = 1; i <= m; i++){
            scanf("%d", &a);
            ve[a].push_back(i);
        }
        scanf("%d", &n);
        for (int i = 1; i <= n; i++){
            int k; scanf("%d", &k);
            bool flag = true;
            int pos = 0;
            for (int j = 1; j <= k; j++){
                int b; scanf("%d", &b);
                if (flag){
                    it = upper_bound(ve[b].begin(), ve[b].end(), pos);
                    if (it == ve[b].end()) flag = false;
                    else pos = *it;
                }
            }
            if (flag) puts("TAK");
            else puts("NIE");
        }
        return 0;
    }
    View Code
     
     
     
  • 相关阅读:
    MongoDB mongod.log "connection refused because too many open connections" 处理方法
    12C RAC 故障分析
    Linux(Redhat 7.6)安装PG(Postgresql 9.6.0)
    OGG异构平台安装部署 MySQL->Oracle
    Redhat 7安装Oracle 11.2.0.4 RAC 数据库软件中报错:Error in invoking target 'agent nmhs' of makefile
    Redhat 7.6安装11G RAC GI时遇到此类报错
    Oracle 19.3 RAC on Redhat 7.6 安装最佳实践
    RAC环境中某数据文件(非system表空间)创建在本地,不停机迁移到ASM磁盘中
    python 多线程
    go博客大全
  • 原文地址:https://www.cnblogs.com/heimao5027/p/6430892.html
Copyright © 2020-2023  润新知