构造一个美丽数组 b,要求

  •  2\sum_{i=1}^{n}|ai-bi|<=\sum_{i=1}^{n}a[i]
  • 在 b 数组中,任意两个相邻的数必须满足小的数整除大的数

从第一个条件下手,很容易想到 1 a[2] 1 a[4] 1 的构造方法

在验证算法正确性,(a[1]-1+a[3]-1+a[5]-1)*2<=sum->-6<=a[2]+a[4]-a[1]-a[3]-a[5]

其中将 a[2] a[4] 看作整体,a[1] a[3] a[5] 看作整体,一定有一方大于另一方,或者两者相等,所以成立

const int N=2e5+5;

    int n,m;
    int i,j,k;
    int a[N];
    int t[N];

signed main()
{
    //IOS;
    rush(){
        sd(n);
        ll sum=0;
        for(int i=1;i<=n;i++) sd(a[i]),sum+=a[i];
        ll res=0;
        for(int i=2;i<=n;i+=2) res+=(a[i]-1);
        //dbg(sum); dbg(res);
        if(2*res>sum)
            for(int i=1;i<=n;i++) if(i&1) printf("1 "); else printf("%d ",a[i]);
        else 
            for(int i=1;i<=n;i++) if(i&1) printf("%d ",a[i]); else printf("1 ");
        puts("");
    }
    PAUSE;
    return 0;
}

 

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐