AtCoder Beginner Contest 173 题解

这场的 F 题太逆天了。

AC 代码传送门:
https://atcoder.jp/contests/abc173/submissions/me?f.Task=&f.LanguageName=&f.Status=&f.User=HinanawiTenshi

E

分类讨论 + 贪心。

  • 结果 \(res\) 为负数时,说明 \(k\) 为奇数而且所有数为负数,那就从大到小选取即可。
  • 结果 \(res\) 非负时,如果 \(k\) 为奇数,那么我们必然要先选一个最大值,问题统一化为 \(k\) 为偶数怎么选。注意到最后选取的结果必然是偶数个非负,偶数个负数,我们采取贪心,对数列从大到小排序,如果左部分的两个数大于右部分,那就选左部分,否则选右部分。

F

题意:统计树上编号 \([l, r]\) 所对应的点连通块的数量,\(l\in[1, n],r\in[l, n]\)

代码极短的思维题。

我们首先假定所有点为孤立点,那么对于编号为 \(i\) 的点,它的贡献为 \(i\times(n-i+1)\)

接下来我们直接按输入顺序连边即可(连边过程类似生成树)。

那么对于边 \((u, v)\),它相当于使 \([1,u]\times[v,n]\) 的连通块个数 \(-1\)

posted @ 2021-10-21 22:05  HinanawiTenshi  阅读(77)  评论(0编辑  收藏  举报