【题解】"新生赛"长沙理工大学程序设计竞赛
A、Psycho-Pass
全场题,for一遍,然后计数器碰到1就++
B、happy card
一个 题,对于萌新来讲可以有的难度。
列出所有条件:人数 ,总的快乐牌 ,限制手牌
我们可以 的是:前 个人在总牌数为 的情况下,第 个人拿 张牌的最大幸福值。想想似乎和01背包有点儿类似,那么状态转移方程也就不难写出来了:
;请大家自行思考原因。
C、7-教417
很简单地模拟一下即可,要求输出最小的数字,那么也就是说当 最多的时候该数字最小(长度短)。
我们直接就可以知道最多可以放几个 了,然后往下筛选符合条件的,即扣掉 个 后的余值模 为 。最后把所有 放在前面, 放在后面。
D、巫妖王的远征
也是比较裸的bfs,就是有些地方比较坑,也属于较简单的题目。我们可以先忽略休息时间,最后做个除法加上就好了。
这里需要注意的是传送门只能一对一,所以我们可以比较方便地使用结构体套map作为地图,用map记录传送门的对应关系,注意是双向的。
然后跑一遍bfs,在bfs中判断一下合法的队首是否存在传送门,然后在判断入队就好了。最后注意特判传送门直接从起点到达终点的情况。
E、括号匹配
这个很简单的,就是个简单的栈的理解运用,用 记录一个数据,在遇到’(‘则加一,遇到’)’则减一,在从前往后扫描的过程中, 始终不为负数,并且扫描完成后 等于 输出 即可。
F、找朋友
裸的并查集的路径压缩或按秩合并
G、PC快脱单了
看起来也是有点唬人...不过打个表就是一眼题了,我们会发现这就是一个首相为2的斐波那契数列,推出式子:
我们用 表示第 个位置放置 ,那么我们很容易得出状态转移方程:
若 为 ,则 可以为 或者 ,若 为 ,则 为 ,
H、亚丝娜sama
在原来射出的时间基础上加上 ,然后做一个前缀和就完事了。
I、洛克王国之域外大逃杀
当然其实还可以再优化的,考虑到没有障碍物的情况,我们可以利用曼哈顿距离做一下操作,我们可以两个队列同时跑,这样我们的宠物能否到达判断就不需要对每个魔物的到达时间和攻击判断,只需要对比一下最大ATK就好了,魔物的队列和之前一样的优化一下就好了,宠物的话利用曼哈顿距离搞搞和之前的写法差别不大。
J、jcc爱踢球
由于每轮都是偶数只队伍,那么这就相当于一颗满二叉树了,我们经常看电视的时候每次比赛都基本会出现树状图。
我们每次只记录叶节点的编号(假设为 ),那么下一次的新叶节点编号(即旧叶节点的父亲)为如图所示:
K、QAQ
此题看起来复杂,但打个表就会发现是个一眼题...
公式由于(i%2)的存在,所以我们只需要计算 为奇数的情况就好了。
那么打个奇数的表就会发现:
证明如下:
对 (注意文章中的xor 表示“异或”,or 表示“或”):
到 这 个数,最高位(+k位)的1个数为 ,
若 ,则 为偶数,将这个数的最高位(+k位)去掉,异或值不变。
因而
因而
即
对 到 这 个数,最高位(+k位)共有 个1,去除最高位的1
当 为奇数时, 是偶数,因而
由于 与 同奇偶,递推上面的公式,可得:
当 时,
当 时,
L、这是最难的题
这个题可能就不是那么签到了,需要转一个弯。
我们先对装备的数量排个序,记录一下排序后的前缀和,二分答案记为 ,检查答案 的时候从后往前遍历,比 大的数是一定满足分配的,
当比 小的时候,我们用此时的前缀和除一下 其值记为 ,如果 与之前比 大的种类数量的和大于等于 ,则改答案为可行答案,继续二分。请大家自行证明其正确性。