专栏文章

题解:CF2048B Kevin and Permutation

CF2048B题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@miqegswd
此快照首次捕获于
2025/12/04 03:28
3 个月前
此快照最后确认于
2025/12/04 03:28
3 个月前
查看原文

题意

tt 组数据。
构造一个由 1n1\sim n 组成的全排列。使得所有长度为 kk 的子串的最小值之和最小化。

分析

由于是要最小值最小化,那么我们就要让一个较小的值影响到较多的区间。我们发现,如果一个小的数字放在 kk 的倍数的位置上,那么一个较小的数就能影响到较多的区间。其他数字可以随便填,因为不影响答案。注意多测清空。
所以我们可以将 11 放在第 kk 个位置上,22 放在第 2k2k 个位置上。也就是说,xx 放在第 xkxk 个位置。

代码

CPP
//By xiaozhou001
#include<bits/stdc++.h>
using namespace std;
int t,n,k;
int main()
{
    cin>>t;
    while(t--){
        cin>>n>>k;
        for(int i=1;i<=n;i++){
            if(i%k==0){
                cout<<i/k<<endl;
            }else{
                cout<<i+n/k-i/k<<endl;
            }
        }
    }
    return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...