Codeforces Round #632 (Div. 2)F. Kate and imperfection(逆向贪心因子)

Posted Lnn.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #632 (Div. 2)F. Kate and imperfection(逆向贪心因子)相关的知识,希望对你有一定的参考价值。

前言:用思维干掉一道2200的题,很开心。这里提供一个nlogn的逆向思维方法。


题目传送门

F. Kate and imperfection
  题目类型:数学、因子、贪心、逆向思维。
  解析:感觉从size从2到n不好想,反过来想一下,设g为最大的gcd,当size==n,此时g必定是n/2,想使答案缩小,就要把g的倍数删到只剩一个,贪心的想,从大的删。从n/g* g一直删到2*g。
  复杂度方面,相当于把2~n/2的倍数都过一遍,略小于调和级数nlogn。

  code:

void solve()
    for(ll i = 1 ; i <= n ; ++i)
        vis[i] = 1;
    ll now = n , yz = n/2;
    while(now >= 2)
        if(yz == 1)
            ans[now--] = 1;
        else 
            for(ll maxx = n/yz*yz ; now >= 2 && maxx > yz ; maxx -= yz)
                if(!vis[maxx])continue;
                ans[now--] = yz;
                vis[maxx] = 0;
            
            yz--;
        
    
    for(ll i = 2 ; i <= n ; ++i)
        printf("%lld ",ans[i]);

以上是关于Codeforces Round #632 (Div. 2)F. Kate and imperfection(逆向贪心因子)的主要内容,如果未能解决你的问题,请参考以下文章

[每日一题]:Codeforces Round #632 (Div. 2) C. Eugene and an array

Codeforces Round #632 (Div. 2) D. Dreamoon Likes Sequences (思维 + 乘法原理)

Codeforces Round #632 (Div. 2)F. Kate and imperfection(逆向贪心因子)

Codeforces Round #632 (Div. 2)F. Kate and imperfection(逆向贪心因子)

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

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