【AtCoder Beginner Contest 187】题解

题目颜色大致代表题目难度(红$sim$紫 即 易$sim$难),点击各题标题可以跳转到原题。

A - Large Digits

题意:给定两个三位数,输出数位和较大数字的数位和。

题解

  • 将三位数 $a$ 分解,那么分解的结果 $a mod 10$ 是个位,$lfloor frac{a}{10} floor mod 10$ 是十位,$lfloor frac{a}{100} floor$ 是百位。
  • 将数位加起来,比较一下输出即可。

代码https://atcoder.jp/contests/abc187/submissions/19117735

B - Gentle Pairs

题意

  • 给出 $n$ 个点,问能挑出多少个点对使得点对的斜率在 $[-1,1]$ 中。
  • $n le 10^3$,$|x_i,y_i| le 10^3$,所有点的 $x_i$ 均不相同。

题解

  • 暴力枚举点对,利用公式计算斜率,然后判断统计就做完了。

代码https://atcoder.jp/contests/abc187/submissions/19123852

C - 1-SAT

题意

  • 有 $n$ 个只包含小写字母和「!」的字符串,且「!」只可能在串首出现。
  • 如果有一个带「!」的字符串它的小写字母部分以前作为一个完整的字符串出现过,那么说明数据有误。
  • 请检查这批字符串是否有误,如果有输出错误字符串,否则输出「satisfiable」。
  • $n le 2 imes 10^5$,$|s| le 10$。

题解

  • 用一个 map 记录它是否出现过 / 出现过时是否前有「!」。
  • 如果存在字符串 $s$,使得 $!+s$ 和 $s$ 在 map 都记录过,那么就输出 $s$。
  • 如果无矛盾输出「satisfiable」就可以。

代码https://atcoder.jp/contests/abc187/submissions/19130026

D - Choose Me

题意

  • 高桥和青木要选举。对于每个城市,有 $A,B$ 两个选举参数。
  • 若高桥有到该城市发表演说,那么高桥会增加 $A+B$ 票,青木增加 $0$ 票;否则高桥增加 $0$ 票,青木增加 $B$ 票。
  • 计算高桥至少需要到多少城市演说,才可以使得他的票数大于青木。
  • $n le 2 imes 10^5$,$A,B le 10^9$。

题解

  • 推导发现,如果高桥在一个城市发表演说,那么他会拉开青木 $A+B$ 票;否则青木会拉开高桥 $B$ 票。
  • 即如果高桥发表演说,那么他会相对于不发表演说拉开青木 $A+B+B=A+2B$ 票。
  • 对所有的城市按照 $A+2B$ 从大到小的优先级发表演说,直到票数大于青木时停止,输出答案。
  • 时间复杂度 $O(n log n)$,瓶颈在于排序。

代码https://atcoder.jp/contests/abc187/submissions/19134915

E - Through Path

题意

  • 给定一棵 $n$ 个节点的树,$n-1$ 个条边中设较早输入的顶点记入数组 $A$,较迟输入的顶点记入数组 $B$。
  • 初始这棵树每个点权值为 $0$。
  • 有 $m$ 次操作,每次操作给出三个参数 $t,e,x$。
  • 如果 $t=1$,那么将所有从 $A_{e}$ 开始不经过点 $B_{e}$ 且可以遍历到的点权值加上 $x$。
  • 如果 $t=2$,那么将所有从 $B_{e}$ 开始不经过点 $A_{e}$ 且可以遍历到的点权值加上 $x$。
  • 最后输出每个点的权值。
  • $n,m le 2 imes 10^5$,$x le 10^9$。

题解

  • 我们其实可以发现,题目要求的操作无非就两类:
  • ① 将一个子树的节点权值全部加上 $x$;
  • ② 将一个子树以外的节点权值全部加上 $x$;
  • 因为答案可以放到最后求,我们可以利用树上前缀和先 $O(1)$ 打标记,最后遍历一遍得出答案。
  • 遇到 ① 操作,我们直接在子树的根打标记为 $x$;
  • 遇到 ② 操作,我们可以将整棵树加上 $x$,并在子树的根打上 $-x$ 的标记。
  • 最后从根到叶子节点途径的标记和就是对应的节点的权值。
  • 时间复杂度 $O(n+m)$。
  • 记得开 long long,比赛时因为这个罚时 +5min。

代码https://atcoder.jp/contests/abc187/submissions/19142602

原文地址:https://www.cnblogs.com/zengpeichen/p/14224212.html