首页 > 代码库 > Codeforces Round #275 (Div. 2) C - Diverse Permutation (构造)
Codeforces Round #275 (Div. 2) C - Diverse Permutation (构造)
题目链接:Codeforces Round #275 (Div. 2) C - Diverse Permutation
题意:一串排列1~n。求一个序列其中相邻两项差的绝对值的个数(指绝对值不同的个数)为k个。求序列、
思路:1~k+1。构造序列前段,之后直接输出剩下的数。前面的构造可以根据,两项差的绝对值为1~k构造。
AC代码:
#include <stdio.h> #include <string.h> int ans[200010]; bool vis[100010]; int n,mark; int iabs(int a) { if(a<0) return -a; return a; } int main() { int i,cnt,k; while(scanf("%d%d",&n,&k)!=EOF) { int x,y; memset(vis,0,sizeof vis); ans[0]=1; x=1,y=k+1; cnt=k; for(i=1; i<=k; i++,cnt--) { int temp=ans[i-1]+cnt; if(temp>k+1) temp=ans[i-1]-cnt; else if(vis[temp]) temp=ans[i-1]-cnt; ans[i]=temp; vis[temp]=true; } for(i=k+1; i<n; i++) ans[i]=i+1; for(i=0; i<n-1; i++) printf("%d ",ans[i]); printf("%d\n",ans[i]); } return 0; }
Codeforces Round #275 (Div. 2) C - Diverse Permutation (构造)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。