• Pearls in a Row CodeForces 620C 水题


    题目:http://codeforces.com/problemset/problem/620/C

    文章末有一些测试数据仅供参考

    题目大意

    给你一个数字串,然后将分成几个部分,要求每个部分中必须有一对儿相等的数字,每个数字都属于某个部分,输出划分的部分数量以及对应区间。

     思路

    很简单一道题,输入的数据都不用存的,输入一个检测一个就好了,用map打标记,用容器存一下要输出的区间端点值,最后挨个儿输出就好了

    代码如下:

    #include<iostream>
    #include<map>
    #include<vector>
    #include<cstdio>
    using namespace std;
    long long item;
    vector<int> V;
    int main()
    {
        int N;
        map<long long, bool> P;
        while (cin >> N)
        {
            P.clear(), V.clear();
            V.push_back(1);
            for (int i = 1; i <= N; ++i)
            {
                scanf("%I64d", &item);
                if (P[item])
                {
                    V.push_back(i);
                    if (i != N)                     //如果是最后一个的话就不用放后面的了
                        V.push_back(i + 1);
                    P.clear();
                }
                else P[item] = 1;
            }
            int size_ = V.size() / 2 * 2;            //可能会出现奇数(有前无后)
            if (!size_)                              //5:1 2 3 4 5 这种输出为-1情况
            {
                cout << -1 << endl; 
                continue;
            }
            if (V[size_- 1] != N)
                V[size_-1] = N;
            cout << V.size() / 2 << endl;
            for (int i = 0; i < size_; i += 2)
                cout << V[i] << " " << V[i + 1] << endl;
        }
    }

    测试数据:

    Input:

    10
    1 2 1 3 8 3 77777777 63824 11111112 5
    8
    11111111 222222222 88888888 11111111 55555555 22222242 15254145 22222242

    Output:

    2
    1 3
    4 10
    2
    1 4
    5 8

    感谢您的阅读,祝您生活愉快~

  • 相关阅读:
    c# 类中使用ResolveUrl
    IIS7日志中时间与系统时间不一致的原因
    IIS日志-网站运维的好帮手
    精通 JS正则表达式
    word 标题序号
    rtx 二次开发,查找所有部门
    【云计算】Docker容器时间同步如何配置?
    【云计算】Docker多进程管理方案-cfengine && supervisord
    【Python】装饰器实现日志记录
    【云计算】k8s相关资料
  • 原文地址:https://www.cnblogs.com/lv-anchoret/p/8367424.html
Copyright © 2020-2023  润新知