CF482A Diverse Permutation 题解
Solution
Nanami^2 Even in the rain.
2022年06月30日
预计阅读 2 分钟
345 字
分析
话说这题为啥要写题解啊?
因为,我最最最最不擅长的构造题,我最最最最期望的「构造作战」,还是要从水题开始攻克吧。
如何构造 种差值呢?
这样构造的差值是 ,那么就可以用 个数字构造出 中所有的差值。
照这样,维护两个指针 与 ,这样就确定了一个差值。然后让 ,,又确定一个差值,知道 。如果这样操作之后出现了 的情况,那么就说明 是个奇数,进而 是偶数。由于一轮确定 2 个数,假设进行了 轮,那么就有了 个数确定了 个差值,这显然是个奇数。所以还要再补上一个 。
那么后面的怎么搞呢?我们只用到了 的数,且一定全部用完并包含 1 这个差值。那么只要顺序输出 所有的数就能满足条件。
CODE
#include<bits/stdc++.h>using namespace std;const int N=1e5+5;int n, k, ans[N];int main() { scanf("%d%d",&n,&k); int i=1, j=i+k; while(1) { printf("%d %d ",i++,j--); if(i>=j) { if(i==j) printf("%d ",i); break; } } for(int i=k+2;i<=n;++i) printf("%d%c",i," \n"[i==n]);}觉得这篇文章怎么样?
点个赞,让更多人看到!

评论区