Atcoder Begining Contest 366
Atcoder Begining Contest 366
地址
A
-
题意:
总共 n n n 场比赛, A A A 暂时赢了 x x x 场, B B B 暂时赢了 y y y 场,问比赛胜负确定没有
-
题解:
判断 x x x 和 y y y 有没有过半的即可
B
感觉说不清楚,看看代码吧
code
C
-
题意:
每次操作新增一个编号为 i i i 的小球,减少一个编号为 i i i 的小球,询问有多少个不同编号的小球
-
题解:
模拟就行,每次增加和减少的时候顺便维护不同种类小球个数
D
-
题意:
三维前缀和( n ≤ 100 n \le 100 n≤100)
-
题解
懒得写三维前缀和那个容斥了
枚举第一维,对后面两维做二维前缀和就行
-
code
E
-
题意:
给定 n n n 个点,求到这 n n n 个点的切比雪夫距离和小于等于 D D D 的点对个数
-
题解:
发现 x x x 轴和 y y y 轴可以分开算
预处理出来 f x f_x fx 表示 ∑ i ∣ x − x i ∣ \sum\limits_i |x-x_i| i∑∣x−xi∣, g y g_y gy 表示 ∑ i ∣ y − y i ∣ \sum\limits_i |y-y_i| i∑∣y−yi∣,令 h x h_x hx 表示 y i = x y_i = x yi=x 的个数,对 h x h_x hx 做前缀和,之后枚举每个合法的 x x x,对答案的贡献就是 h [ D − f x ] h[D-f_x] h[D−fx]
-
code
F
-
题意:
初始分数为 1 1 1,有 n n n 对 { a , b } \{a, b\} {a,b} 可以将分数变为 a x + b ax+b ax+b,求选取 k k k 对后的最大分数
-
题解:
假设最终答案会同时选取第 i i i 对和第 j j j 对,考虑这两对的先后顺序
当 a i × ( a j × x + b j ) + b i > a j × ( a i × x + b i ) + b j a_i\times(a_j\times x + b_j) + b_i > a_j\times(a_i\times x + b_i)+b_j ai×(aj×x+bj)+bi>aj×(ai×x+bi)+bj 时,会先选择第 j j j 个再选择第 i i i 个
化简式子,发先与 x x x 无关,将相同字母移动到等号的同一端,直接按照 b a − 1 \frac{b}{a-1} a−1b 排序即可,一定先选择 b a − 1 \frac{b}{a-1} a−1b 小的
-
code
G
-
题意:
n n n 个点 m m m 条边的无向图,给每个点赋值为 w x w_x wx,要求对任意点 x x x, p p p 为 x x x 有直接边相连的点,有 w p 1 ⊕ w p 2 ⊕ ⋯ = 0 w_{p_1}\oplus w_{p_2}\oplus\dotsb = 0 wp1⊕wp2⊕⋯=0
-
题解:
异或高斯消元,相当于是有 n n n 个变量 n n n 个方程
为了避免零解的出现,选择对二进制每一位分别跑高斯消元,此时每个变量值域只有 0 0 0 和 1 1 1,考虑到第 i i i 位时,令第 i i i 个变量恒等于 1 1 1,之后继续高斯消元即可