• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
magicat
博客园    首页    新随笔    联系   管理    订阅  订阅
B. Phoenix and Beauty

B. Phoenix and Beauty

要求所有长度为\(k\)的子数组之和相同,观察样例可以发现,当原数组中不同的元素个数小于等于\(k\)时可以满足条件,同时输出的数组长度\(m\)很大,可以从这里入手

构造一个有所有元素的数组,当这个数组长度不足时,补其他元素进去,答案即为 \(\frac{10000} {k}\) 个这样的数组

为什么这样的数组可以满足原始数组的顺序,因为\(n \leq 100\),\(m \leq 10000\),\(100\)个数组的子序列可以满足原始数组的顺序,证明略

//  AC one more times

#include <bits/stdc++.h>

using namespace std;

#define fi first
#define se second
#define pb push_back
#define endl '\n'
#define all(x) (x).begin(), (x).end()
#define inf64 0x3f3f3f3f3f3f3f3f

typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> pii;
typedef pair<long long,long long> pll;

const int mod = 1e9 + 7;
const int N = 1e5 + 10;






void solve()
{
    int n, m;  cin>>n>>m;
    int cnt[n + 10];
    memset(cnt, 0, sizeof cnt);
    int mav = 0;
    for(int i = 1; i <= n; i++)
    {
        int x;  cin>>x;
        cnt[x]++;
        mav = max(mav, cnt[x]);
    }

    vector<int> ans;
    int sum = 0;
    int miv = 101, p1 = 0;
    for(int i = 1; i <= n; i++)
    {
        if(cnt[i] >= 1)
        {
            ans.pb(i);
            sum++;
            miv = min(miv, i);
            if(cnt[i] > p1)
                p1 = cnt[i], miv = i;
        }
    }
    if(sum > m)
    {
        cout<<-1<<endl;
        return;
    }
    mav = 10000 / m;
    cout<<mav * m<<endl;
    while(mav--)
    {
        int cnt = 0;
        for(auto v : ans)
        {
            cout<<v<<" ";
            cnt++;
        }
        cnt = m - cnt;
        while(cnt--)
            cout<<miv<<" ";
    }
    cout<<endl;
    return;
}


int main()
{
    //std::ios::sync_with_stdio(false);   cin.tie(nullptr), cout.tie(nullptr);
    // 特殊输入 请注释上方,如__int128等
    int TC = 1;

    cin >> TC;
    for(int tc = 1; tc <= TC; tc++)
    {
        //cout << "Case #" << tc << ": ";
        solve();
    }



    return 0;
}

本文来自博客园,作者:magicat,转载请注明原文链接:https://www.cnblogs.com/magicat/p/17301214.html

posted on 2023-04-09 21:59  magicat  阅读(16)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3