Codeforces Round #514 (Div. 2) C. Sequence Transformation 思维构造

Posted ttttttttrx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #514 (Div. 2) C. Sequence Transformation 思维构造相关的知识,希望对你有一定的参考价值。

题意 给出一个1-n的集合   gcd 集合里面的所有数  得到的 一个 数   然后自己选择删去一个数   要使得到的数 构成的数列 的字典序最大

思路: gcd所有数 那gcd得到的数肯定要小于数组中最小的数  所以 刚开始都是1   所以优先删去1  那就要使gcd所有数经可能快得到 2  

如何快速到2 呢 那就是把奇数全部删掉  那剩下得数最小就为2 了  此时为 2 4 6 8 10。。。。  此刻就从2开始删   当n==3时 有

x ,2x,3x  此时 只有 删 x 2 x   3x 才有最大得字典序  x,x,3x  处理一下就好

(看起来好多人过了,但没看题解就是不会,数学都忘光了,太菜了TAT)

#include<bits/stdc++.h>
using namespace std;
int main(){
  int n;
  cin>>n;
  int cnt=1;
  while(n){
	  if(n==3){
		  printf("%d %d %d",cnt,cnt,cnt*3);
		  break;
	  }
	  for(int i=1;i<=n/2+n%2;i++){
           printf("%d ",cnt);
	  }
	  cnt*=2;
	  n/=2;
  }
	return 0;
}

  

以上是关于Codeforces Round #514 (Div. 2) C. Sequence Transformation 思维构造的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #514 (Div. 2) D. Nature Reserve

Codeforces Round #514 (Div. 2) C. Sequence Transformation(递归)

Codeforces Round #514 (Div. 2) C. Sequence Transformation 思维构造

Codeforces Round #436 E. Fire(背包dp+输出路径)

[ACM]Codeforces Round #534 (Div. 2)

Codeforces Round #726 (Div. 2) B. Bad Boy(贪心)