用户工具

站点工具


2020-2021:teams:farmer_john:2sozx:codeforces_round_646_div._2

目录

A

  • 题意:给 $n$ 个数,问是否能够从中取出 $x$ 个数使得和为奇数。
  • 题解:显然偶数可以随便取,奇数只能取奇数个。考虑两种情况,一种是没有偶数时,$x$ 应为小于奇数个数总数的奇数;二是有偶数时,判断 $x$ 是否小于等于偶数个数与奇数个奇数个数的最大和即可。

B

  • 题意:给定一个 $0/1$ 序列,每次可以翻转一个位置的 $0/1$ 要求最后的序列中不存在 $101,010$ 的子序列。
  • 题解:即将序列变为 $1\cdots10\cdots0$ ,$0\cdots01\cdots1$ ,$1\cdots1$ ,$0\cdots0$,枚举分割位置,用前缀和计算一下取最小值即可。

C

  • 题意:两人游戏,每次操作可以选择一个叶子,选择删除以这个叶子为终点的一条路径,先删除给定特殊点 $x$ 的人获胜。
  • 题解:先判断 $x$ 是否为叶子。是叶子先手必胜。不是叶子时当 $n$ 为奇数后手赢,否则先手赢。我吐了题又读错了

D

  • 题意:一道交互题,给你 $k$ 个集合 $S ,S_i\cap S_j = \emptyset$ ,定义 $ans_i=\max(a_j)$ ,其中 $j\not\in S_i$ 让你求出 $ans_i(i=1,2\cdots k)$。可以提出至多十二次询问,每次询问包含一个集合 $q$ ,返回一个值 $\max(a_{q_i})$ 数据范围:$n$ 为 $a$ 的长度, $k\le1000,n\le1000$
  • 题解: 观察询问次数我们可以发现这应该是一道二分题,我们将对 $k$ 二分,将其中的一部分与那些不属于 $S$ 的元素合为一部分,对于这部分和剩下的一部分进行询问,可以的到两个集合的最大值,显然集合最大值大的集合即为另一个集合的答案,因此继续二分集合最大值大的集合即可。最后只剩下一个集合的时候直接询问除这个集合外所有元素的最大值即可,询问数正好为 $12$。
    • zyf的做法tql!!!

E

  • 题意:给一棵以 $1$ 为根的树,大小为 $n(n\le2\times10^5)$,每个节点有一个值 $0/1$ 和一个目标值 $0/1$ 和一个代价 $a_i$,选取一个节点可以交换其子树内节点的值,代价为选取的节点个数 $k\times a_i$,问让每个节点的值和目标值相等的最小代价,如果不可能输出 $-1$。
  • 题解:对于两个节点如果要交换一定是在两个节点的 $lca$ 到 $1$ 的路径中代价最小的点交换,因此 $dfs$ 时记录此节点到 $1$ 的代价最小值即可,且在子树中可以先行交换,依旧是正确的,所以在 $dfs$ 回溯的时候算一下答案即可。

F

  • 题意:摸摸摸
  • 题解:
2020-2021/teams/farmer_john/2sozx/codeforces_round_646_div._2.txt · 最后更改: 2020/06/01 11:52 由 2sozx