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+输出路径)