zoukankan      html  css  js  c++  java
  • 4.5 每日一题题解

    Dreamoon Likes Permutations

    涉及知识点:

    • 思维/暴力

    solution:

    • 正解不唯一,讲个容易理解的做法
    • 找到长度为n的数组最大值记为m,那么符合条件的答案最多只有两个,即[1,m]区间,[m+1,n]区间 或者 [1,n-m]区间,[n-m+1,n]区间
    • 所以我们可以枚举两种可能的答案,用map或者set存储一下,记录哪种方法可行
    • 但是这个做法会被一个样例卡住,1 2 3 3 2 1
    • 这样会输出两个3 3 ,所以需要特判一波

    std:

    #include <bits/stdc++.h>
    using namespace std;
    #define ll long long
    const int maxn = 2e5 + 5;
    int n, a[maxn];
    vector<int> ans;
    map<int ,int > mp1,mp2;
    void solve(int l1, int l2)
    {
        mp1.clear() , mp2.clear();
        int flag = 0;
        for(int i=1;i<=l1;i++)mp1[a[i]]++;
        for(int i=l1+1;i<=n;i++)mp2[a[i]]++;
        for(int i=1;i<=l1;i++)
            if(mp1[i] != 1)
                flag = 1;
        for(int i=1;i<=l2;i++)
            if(mp2[i] != 1)
                flag = 1;
        if(flag == 0)
            ans.push_back(l1);
    }
    int main()
    {
        int t;
        cin>>t;
        while(t--){
            cin>>n;
            int maxx = 0;
            for(int i=1;i<=n;i++){
                cin>>a[i];
                maxx = max(maxx , a[i]);
            }
            ans.clear();
            solve(maxx , n - maxx);
            solve(n - maxx , maxx);
            if(ans.size() == 2){// 1 2 3 3 2 1
                if(ans[0] != ans[1]){
                     cout<<2<<endl;
                    for(int i=0;i<2;i++){
                        cout<<ans[i]<<" "<<n-ans[i]<<endl;
                    }
                }else{
                    cout<<1<<endl;
                    cout<<ans[0]<<" "<<n-ans[0]<<endl;
                }
                continue ;
            }
            cout<<ans.size()<<endl;
            for(int i=0;i<ans.size();i++){
                cout<<ans[i]<<" "<<n-ans[i]<<endl;
            }
        }
        return 0;
    }
    
  • 相关阅读:
    Js特殊字符转义之htmlEscape()方法
    利用Image对象,建立Javascript前台错误日志记录
    html5 实现 文件夹上传
    博客园博客开通了
    js 无刷新文件上传 (兼容IE9 )
    js实现关键词高亮显示 正则匹配
    Python练习六
    Python练习二
    Python练习三
    Python练习四
  • 原文地址:https://www.cnblogs.com/QFNU-ACM/p/12635852.html
Copyright © 2011-2022 走看看