51Nod-1280-前缀后缀集合

原创 2016年08月30日 13:53:38

ACM模版

描述

描述

题解

两个数组,一个正序一个倒序,数据结构是map,不断查找匹配就行了,没啥难度,虽然用的两重循环,但是经过剪枝,其实复杂度并不高。

代码

#include <stdio.h>
#include <map>

using namespace std;

const int MAXN = 5e4 + 10;
const int OK = 999;

int A[MAXN];    //  正序
int B[MAXN];    //  逆序

int main(int argc, const char * argv[])
{
    int N;
    scanf("%d", &N);

    for (int i = 0; i < N; i++)
    {
        scanf("%d", A + i);
        B[N - 1 - i] = A[i];
    }

    long long ans = 0;
    int res = 0;
    int tag = 0;
    map<int, int> AM;
    map<int, int> BM;
    for (int i = 0; i < N; i++)
    {
        map<int, int>::iterator it = AM.find(A[i]);
        if (it != AM.end())
        {
            ans += res;
            continue;
        }
        AM[A[i]] = OK;
        bool flag = false;
        res = 0;
        for (int j = tag; j < N; j++)
        {
            map<int, int>::iterator it = AM.find(B[j]);
            if (it == AM.end())
            {
                break;
            }
            if (flag)
            {
                res++;
                continue;
            }
            BM[B[j]] = OK;
            if (BM.size() == AM.size())
            {
                res++;
                tag = j;
                flag = true;
            }
        }
        ans += res;
    }

    printf("%lld\n", ans);
    return 0;
}

参考

《ACM/ICPC竞赛之STL–map》

版权声明:听说这里让写版权声明~~~

相关文章推荐

51Nod- 1280-前缀后缀集合(map)

1280 前缀后缀集合 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题  收藏  关注 ...

51NOD1280 前缀后缀集合

1280 前缀后缀集合 题目来源: Codility 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 一个数组包含N个正整数,其中有些是重复的。一个前...

51nod 1243 排船的问题(锻炼思维的好题)

一个码头中有N艘船和N个木桩,船的长度为2*X,码头的宽度为M,N个木桩的位置(相对码头左岸的位置)会在数据中给出。船和船之间不能重叠,即每艘船的船头不能超过上一艘船的船尾,当然也不能超出码头的两岸。...
  • caduca
  • caduca
  • 2015年08月31日 18:58
  • 3255

Trie——Luogu3879 [TJOI2010]阅读理解

题面:Luogu3879 一开始我感觉好像可以用set搞一搞的 然后发现迭代器我实在不太会用。。。 而且到底set怎么存我也不大有数 后来想了想,还是Trie靠谱 就是在结束标记记录一下这里...

51Nod-1422-沙拉酱前缀

ACM模版描述题解看到这个题,有些懵逼,没有做过类似的问题,看到讨论去有人说二分,没想通,又看到有人说离线处理,很不好意思,我概念不行,一直不懂啥叫离线,啥叫在线,于是问了问学姐,学姐说离线就是读入所...
  • f_zyj
  • f_zyj
  • 2016年09月18日 13:30
  • 324

51nod 1096 距离之和最小 && 1108-距离之和最小 V2(简单数学)&& 1110 距离之和最小 V3(逆思维)

1096 距离之和最小 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 X轴上有N个点,求X轴上一点使它到这N个点的距离之和最...

51Nod-1335-子序列翻转

ACM模版描述题解这道题很有趣,为了达到最小字典序,那么x一定是固定的,一定是第一个提前出现的字母的位置,比如abfde,f位置按字典序应该是d,f属于提前出现的,所以x定位在2,接着,我们往后边查找...
  • f_zyj
  • f_zyj
  • 2016年09月09日 01:18
  • 314

51Nod-1475-建设国家

ACM模版描述题解第一感觉,这道题很像最高的奖励这道题的思路,只是不能用优先队列神马的简单维护。今天花了些许时间A掉了它,细节繁多,关键是两点,第一:最右端点可以连接两个城市,第二:可以在规定时间内往...
  • f_zyj
  • f_zyj
  • 2016年08月15日 16:39
  • 389

51Nod-1388-六边形平面

ACM模版描述题解这道题思路还是比较简单的,关键在于细节问题,不然就会像我一样一直被一个测试点卡死,粗心啦~~~算法是常规的dfs(我原本企图不用dfs,然而好麻烦)首先,经过分析可以知道,颜色至多需...
  • f_zyj
  • f_zyj
  • 2016年09月13日 12:41
  • 348

51Nod-1019-逆序数

在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。 如2 4 3 1中,2 1,4 3,4 1,3 1是逆...
  • f_zyj
  • f_zyj
  • 2016年04月17日 02:52
  • 768
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:51Nod-1280-前缀后缀集合
举报原因:
原因补充:

(最多只允许输入30个字)