我太水了......
这是一场奇差无比的CF。
A,看题意有困难,实际上还是很水的。
B,枚举 1234567 和 123456 的个数,时间复杂度1e6以下
C,业界毒瘤模拟题。最TM坑的是还要输出操作数...不能在线输出。
首先,我一个数组名写错了,结果搞了至少10min才调出来,可能有20min。
然后我空间开小了...
然后我没有判断队列是否非空就取队首...
最后我一个大于号小于号写错了...
最后终于A了,还有26min。
弃疗。
D,给你一些人,构成一个森林。自己算自己的祖先。
给定一个序列,每个人在这个序列里扫描,遇到第一个自己的祖先就给他送礼物。
i 希望把礼物送给 ai。求一个这样的序列能满足所有人的需求,或输出 -1。
保证ai是i的祖先。
n <= 100 000
我的想法是对于每一个ai,其他的所有作为aj的i祖先都在ai之后。然后拓扑排序即可。
n²不可承受。
然后考虑从1开始依次加入ai。
对于每个ai,如果在队中就看ai前有没有i的祖先。
不在队中就扫描,在队中找到第一个i的祖先然后把ai插入它前面。然后往后检查......
显然是错的。
问了某大佬,正解:
考虑一对父子:
若儿子y已得到满足,且ay != y
那么ay为父亲x的祖先,那么ax == ay,否则不合法。
若ay == y,则对x无影响。
所以对于已满足的x
ay == ax 或 ay == y,否则不合法。
然后扫一遍即可。
输出:只需输出ai == i的点即可。