Codeforces1348 题解

AC代码连接

A Phoenix and Balance

显而易见,将前\(\frac{n}{2}-1\)个和最后1个分为1组,剩下的1组即为最优方案。

B Phoenix and Science

这题直接构造。

\(a\)中不重复的值的个数为\(cnt\)

如果\(cnt>k\)无解。

如果\(cnt < k\)那么将其补到k;如果\(cnt=k\)则不操作;然后按小到大输出所有不重复的值,重复\(n\)次。

C Phoenix and Distribution

分类讨论一下完事了。

将输入的串排序。

特判\(k=1\)

  • 如果全是相同的字符,就平均分配。
  • 如果最小的字符的个数等于\(k\)个且只有两种字符,那么将前\(k\)个字符分为\(k\)组,剩下的平均分配。
  • 否则,将前\(k\)个字符按顺序分为\(k\)组,剩下的字符全给第\(1\)组,字典序最大的必定是第\(k\)组。

D Phoenix and Science

这题逆向思维做。

题目几乎是在明示只考虑每天的增量。

经过简单的推导,可以得到两个性质

  1. 在第\(i\)天可以到达的范围是\([i, 2^i-1]\)
  2. 每天的增量不减。

所以天数就是满足\(2^d-1 \ge n\)\(d\)的最小值。

从最后一天开始跑,只要跑到前一天可达的范围且满足增量不减就行了。

总结

前4题都是比较简单的,但是最近刷题太少了状态下滑严重。还是需要尽可能地保持竞技状态吧。。。

D题非常有意思,我还是受之前GCJ round1B A题dls的解法启发才想出来的。

猜你喜欢

转载自www.cnblogs.com/zengzk/p/12815626.html