zoukankan      html  css  js  c++  java
  • CodeForces 1348-B Phoenix and Beauty(思维、子序列和相等)

    https://codeforces.com/contest/1348/problem/B

     

    题意:

    给出一个n个数的序列a,可以向这个序列中的任意地方插入1-n中的数,问是否可以使得插入过后这个序列其长度为k的任意子序列和相同。

    解题思路:

    这题不要求插入最少的数,那么我们直接搞起:

    我们先用set记录这个序列中有多少个不同的数字,如果这个序列中存在超过k个不同的数字,则没有答案,输出-1。

    如果序列中存在小于k个不同的数字,那么我们随便添点1-n中数字,把set中的元素个数补至k个。

    然后我们把原序列中的每个数字都替换成set中的序列段即可(因为这个序列段一定含有当前这个数字),最后一共有n*k个数字。

    具体看代码:

     1 #include <bits/stdc++.h>
     2 typedef long long LL;
     3 #define pb push_back
     4 const int INF = 0x3f3f3f3f;
     5 const double eps = 1e-8;
     6 const int mod = 1e9+7;
     7 const int maxn = 1e5+10;
     8 using namespace std;
     9 
    10 int a[maxn];
    11 
    12 int main()
    13 {
    14     #ifdef DEBUG
    15     freopen("sample.txt","r",stdin); //freopen("data.out", "w", stdout);
    16     #endif
    17     
    18     int T;
    19     scanf("%d",&T);
    20     while(T--)
    21     {
    22         vector<int> vt;
    23         set<int> st;
    24         int n,k;
    25         scanf("%d %d",&n,&k);
    26         for(int i=1;i<=n;i++)
    27         {
    28             scanf("%d",&a[i]);
    29             st.insert(a[i]);
    30         }
    31         if(st.size()>k)
    32         {
    33             printf("-1
    ");
    34             continue;
    35         }
    36         for(int i=1;i<=n;i++)//将set中的元素补至k个
    37         {
    38             if(st.size()==k) break;
    39             if(!st.count(i)) st.insert(i);
    40         }
    41         printf("%d
    ",n*k);
    42         for(int i=1;i<=n;i++)//将每个数字替换成set中的序列段
    43         {
    44             for(auto it : st)
    45                 printf("%d ",it);
    46         }
    47         printf("
    ");
    48     }
    49     
    50     return 0;
    51 }

    -

  • 相关阅读:
    便 加权并查集
    bzoj 4565 状压区间dp
    bzoj 2242 [SDOI2011]计算器 快速幂+扩展欧几里得+BSGS
    poj 3243 扩展BSGS
    bzoj 3239 poj 2417 BSGS
    51nod 1135 原根 就是原根...
    bzoj 2005 能量采集 莫比乌斯反演
    约会 倍增lca
    bzoj 2186 [Sdoi2008]沙拉公主的困惑 欧拉函数
    IE下textarea去除回车换行符
  • 原文地址:https://www.cnblogs.com/jiamian/p/12818225.html
Copyright © 2011-2022 走看看