牛客练习赛100 D小红的构造题 (构造)
https://ac.nowcoder.com/acm/contest/11251/D

- 根据题目给的数据范围,容易想到我们需要将n贡献三次方地构造出来。
- 不容易发现:对于rererere...序列, 第k个re后面加个d,能够贡献(1 + k) * k / 2 * x. 对于范围内所有数都能构造出来
- 对于一个re后面最多加\(k^{1 / 3}\) 个,后面的re后这个数字降的非常快,所以最终长度大概为\(k^{1 / 3}\)
ll bit[N];
int main () {
  ll k; cin >> k;
  ll top =1;
  for ( ; top * top * top <= k * 2; ++ top );
  for ( ll i = top; i >= 1; -- i ) {
    bit[i] = k / ( (1 + i) * i / 2);
    k %= ( (1 + i) * i / 2);
  }
  for ( int i = 1; i <= top; ++ i ) {
    cout << "re"; while( bit[i] -- ) cout << "d";
  }
  return 0;
}
刚做完一道同类型的题,这个又不会了😭
 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号