牛客小白月赛58 题解
牛客小白月赛58 A - E
历史最高rk……然而蒟蒻依旧不会dp…..orz
https://ac.nowcoder.com/acm/contest/41173
A - 双子爆破者
直接套公式
1 |
|
B - 牛原子
模拟题,但是读题读了贼久
题意:按照 1s 2s 2p 3s 3p 4s 3d 4p 5s 4d 5p 6s 4f 5d 6p 7s 5f 6d 7p
的顺序进行原子排列,s类电子亚层容量为 2,p 类电子亚层容量为 6,d 类电子亚层容量为 10,f 类电子亚层容量为 14,排满了就放下一层。最后要按照数字升序,字母“spdf” 的顺序来排列。
嗯模拟即可
1 |
|
C- 牛牛
因为读不懂题B先出的C
题意:就相当于在n个数当中挑出2个数,使得剩下的数之和 % m == 0,简单做一下公式变换即得:
由(sum-ai-aj) % 10 = 0
得,sum-ai 同余于 aj (mod m)
即,枚举 ai,找到一个满足上述条件的 aj 即可,注意 i 不等于 j
用map查找 nlogn
1 |
|
D - 数学考试
按照题意进行背包dp
因为空间限制很严格,所以要滚动数组
1 |
|
E - 法力无边
学习牛客竞赛官方题解
【技巧】位运算 经典map + 前缀和
**转换为加法 —— 异或:%2;同或 %2 + 1 **
如此,就可以利用前缀和,即 M[i][j]=((ai+...+aj) + j-i) % 2 = 1
化成比较好看的通项性质,则有:(sum[j]+j) 同余 (sum[i-1] + i-1) (mod 2)
可令 d[i] = sum[i] - i
,则有 d[j] 同余 d[i-1] (mod 2)
1 |
|