zoukankan      html  css  js  c++  java
  • topcoder SRM 625 DIV2 IncrementingSequence

    由于题目数据量比较小,故可以开辟一个数组存储每个index出现的次数

    然后遍历即可

    string canItBeDone(int k, vector<int> A){
        vector<int> cnt(52,0);
        int n = A.size();
        for(int i = 0 ; i < n; ++ i) cnt[A[i]]++;
        for(int i = 1 ; i <=n ; ++ i){
            if(cnt[i] !=0 ){
                cnt[i] -- ;
            }else{
                bool flag = false;
                for(int j = 1 ; j < i; ++ j ){
                    if(cnt[j] &&(i-j)%k == 0){
                        cnt[j]--;
                        flag = true;
                        break;
                    }
                }
                if(!flag) return "IMPOSSIBLE";
            }
        }
        return "POSSIBLE";
    }

    如果数据量比较大,可以考虑用hash_map存储

        string canItBeDone(int k, vector <int> A) {
            map<int,int> kmap;
            for(int i = 0 ; i < A.size(); ++ i){
                if(kmap.find(A[i])!=kmap.end()){
                    kmap[A[i]]++;
                }else{
                    kmap.insert(make_pair(A[i],1));
                }
            }
            for(int i = 1; i <= A.size(); ++ i){
                if(kmap.find(i)!=kmap.end()){
                    kmap[i]--;
                    if(kmap[i] == 0) kmap.erase(i);
                }else{
                    bool flag = false;
                    for(map<int,int>::iterator iter = kmap.begin(); iter!=kmap.end(); iter++){
                        if((i-iter->first)>0 &&(i-iter->first)%k ==0){
                            iter->second--;
                            flag = true;
                            if(iter->second == 0){
                                kmap.erase(iter);
                            }
                            break;
                        }
                    }
                    if(!flag) return "IMPOSSIBLE";
                }
            }
            return "POSSIBLE";
        }
    View Code
  • 相关阅读:
    网页返回码大全
    求数组中子数组的最大和
    什么是面向对象?面向对象与面向过程的区别?
    Java内部类
    Java拆箱装箱
    linux中su和sudo区别
    Linux 中账户管理
    解决warn appiumdoctor bin directory for $java_home is not set
    Moco之include
    Mock server 之 Moco的使用
  • 原文地址:https://www.cnblogs.com/xiongqiangcs/p/3800175.html
Copyright © 2011-2022 走看看