ホームページ >ウェブフロントエンド >htmlチュートリアル >Codeforces ラウンド #275 (ディビジョン 2) C

Codeforces ラウンド #275 (ディビジョン 2) C

WBOY
WBOYオリジナル
2016-06-24 11:55:40865ブラウズ

質問リンク: Codeforces Round #275 (Div. 2) C - Diverse Permutation

質問の意味: 一連の配置 1~n。シーケンス内の隣接する 2 つのアイテム間の差の絶対値の数 (異なる絶対値の数を指します) が k になることを求めます。シーケンス

アイデア: 1~k+1 を見つけます。シーケンスの最初の部分を作成し、残りの数値を直接出力します。前の構造は、2 つの項の差の絶対値が 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;}


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。