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(逆向贪心因子)