题型:组合题
(最优子序列)取m=6,给出长度为n的整数序列a1,a2,……an(0 ≤ ai<2m)。对于一个二进制数x,定义其分值w(x)为x + popcnt(x),其中 popcnt(x)表示x二进制表示中1的个数。对于一个子序列b1,b2,…,bk,定 义其子序列分值S为w(b1㊉b2)+w(b2㊉b3)+w(b3㊉b4)+……+w(bk-1㊉bk)。其中㊉表示按位异或。对于空子序列,规定其子序列分值为0。求一个子序列使得其子序列分值最大,输出这个最大值。
输入第一行包含一个整数n(1 ≤ n ≤ 40000).接下来一行包含n个整数 a1,a2,……,an。
提示:考虑优化朴素的动态规划算法,将前
位和后
位分开计算。
Max[x][y]表示当前的子序列下一个位置的高8位是X、最后一个位置的 低8位是y时的最大价值。
试补全程序。

③处应填()
| A. -INF |
B. Max[y] [x] |
| C. 0 |
D. Max[x][yJ |
②处应填()
| A. (a & MS) « B |
B. a>>B |
| C. a&(1<<B) |
D. a&(MS<<B) |
⑤处应填()
| A. to_max(Max[y][z],v + w(a ^(z << B))) |
B. to_max(Max[z][y],v + w((x ^ z) << B)) |
| C. to_max(Max[zJ[y],v + w(a ^ (z << B))) |
D. to_max(Max[x][z],v + w(y ^ z)) |
④处应填()
| A. Max[x] [z]+w(y^z) |
B. Max[x][z] + w(a ^ z) |
| C. Max[x] [z]+w(x^(z<<B)) |
D. Max[x][z] + w(x ^ z) |
①处应填()
| A. X >>= 1 |
B. X ^=X & (x ^ (x + 1)) |
| C. X -= X | -X |
D. X ^= X & (X ^ (x - 1)) |
更新时间:2022-12-07 20:16:34
|
【知识点】
CCF非专业级别软件能力认证CSP-S/提高级
抱歉! 您未登录, 不能查看答案和解析点击登录












