A
(x imes-y+y imes x=0),因为 (n) 是偶数,所以两两这样构造即可。
时间复杂度 (Oleft(Tn ight))。
B
有点绕的题,要理清思路。
发现行和列其实都是完整的,只是要搞出顺序。
通过列记录每个数字所属的行,然后枚举每行的任意一个数字找出它是第几行,就还原好了。
时间复杂度 (Oleft(sum nm ight))。
C
鸽了。
D
把依次进货的手里剑塞进一个链表里,初始价格均设置为 (0)。
每次向前找到还未买过的第一把手里剑 (i),从这把手里剑开始,到当前最后进货的这把手里剑之间的手里剑价格的最大值必须小于 (x),不然那个最大值肯定可以搞成 (x)。
如果合法就把手里剑 (i) 的价格修改成 (x)。
用线段树维护区间 (max) 即可,时间复杂度 (Oleft(nlog n ight))。
PS:虽然把任意一把还未买过的手里剑的价格修改成 (oldsymbol x) 都可行,但这样方便判断合法。
举个例子,先进货三把手里剑。
然后三个忍者来购买,花费依次为 (b,a,c),(a<b<c)。
如果手里剑的价格依次为 (c,a,b) 就方便判断合法。
如果手里剑的价格依次为 (a,c,b) 就不方便判断合法。
但要注意的是,不管怎么样修改,合法的总还是合法的。
E
鸽了。