第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(济南)

链接:https://ac.nowcoder.com/acm/contest/10662

A Matrix Equation (高斯消元)

题意:给定两个 n × n n \times n n×n 的矩阵 A A A B B B,问有多少种矩阵 C C C 使得 A × C = B ⊙ C A×C=B⊙C A×C=BC 成立。

思路:可以发现 C 中每一列都是独立的。设 C 中的每一列中的每一个元素为一个变量,可以得到一个新的矩阵
a 11 c 1 + a 12 c 2 + ⋯ + a 1 n c n = b 1 c 1 a_{11}c1+a_{12}c2+\dots+ a_{1n}c_n=b_1c_1 a11c1+a12c2++a1ncn=b1c1
a 21 c 1 + a 22 c 2 + ⋯ + a 2 n c n = b 2 c 2 a_{21}c1+a_{22}c2+\dots+ a_{2n}c_n=b_2c_2 a21c1+a22c2++a2ncn=b2c2
… \dots
a n 1 c 1 + a n 2 c 2 + ⋯ + a n n c n = b n c n a_{n1}c1+a_{n2}c2+\dots+ a_{nn}c_n=b_nc_n an1c1+an2c2++anncn=bncn

对这个矩阵高斯消元,就可以得到当前列的自由变元的数量。

C Stone Game(签到中的签到)

D Fight against involution (签到)

思路:可以得到几个贪心关系

  • 遇到这种左右区间的,可以按右区间排序
  • 右区间相同的,左边也得取相同的,否则会不相同。
  • 右区间大的,那么贪心的取值,也一定大于右区间小的。

G Xor Transformation(签到中的签到)

J Tree Constructer (二分图 + 构造)

题意:一个图上,如果存在两个点的点权 a i ∣ a j = 2 60 − 1 a_i | a_j =2^{60}-1 aiaj=2601,那么点 i i i j j j 就存在一条边。给定一棵树,请你构造点权,使得满足上述条件。 ( 1 ≤ n ≤ 100 ) (1\le n \le 100) (1n100)

思路:需要构造一些点权,使得只有树上有边的两点,或操作之后等于 2 60 − 1 2^{60}-1 2601

  • 可以想到是一个二分图。然后分成钥匙和锁的关系。设为白点和黑点
  • 白点第 59 位取 0,第 id 位取 0,其他位取 1 。(白点的数量要少于黑点)
  • 黑点第 59 位取 1, 与黑点相连的白点的 id 位取 1 ,其余位取 0 。
  • 白点第 59 位取 0 是为了防止白点和白点之间产生边。
  • 而黑点就相当于钥匙,只有与相连的白点的 id 的位置,才取 1 。这样可以保证黑点之间不会产生边,然后黑点和其他 id 的白点之间,也不会产生边。

L Bit Sequence (数位DP)

思路:m 最多只有 100,x + m 最多只能影响低 6 位,7位以上只会产生进位,所以后面只需要判断是否会进位即可。

  • 利用数位DP,将每一个数都枚举到最后一位。然后 O(m) 判断这个 x 是否符合答案。
  • 到最后我们需要判断的其实就是奇偶性。
  • 利用数位DP,维护三个数:x 低 6 位的取值,6位之后连续的 1 的奇偶性(会产生进位),6 位之后所有的数的奇偶性。

总结:利用了 m 的数据范围,(1)对 x 进位产生的影响只有低 7 位,7 位之后只能进位 (2)可以直接暴力判断。

M Stone Games(签到中的签到)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值