妈的,我考的跟狗屎一样,按道理稳定发挥差不多有 \(350\),不济也是 \(326\),可惜没有如果。
假期计划
首先先预处理出两点之间是否可达,这个可以使用 \(n\) 次 bfs 在最多 \(O(n(n+m))\) 的时间复杂度内求出。
预处理出对于每一个点 \(x\) 满足 \(x\to y\to 1\) 的 \(y\) 的权值最大值,然后枚举 \(b,c\) meet-in-middle 一下,但是这样是错的,原因是没有考虑 \(a,b,c,d\) 互不相同这个限制。
考虑如何规避 \(a,b,c,d\) 存在相同的情况,不妨考虑存 \(k\) 个最大值,然后枚举 \(b,c\) 的时候暴力枚举 \(k^2\) 种情况,下文感性证明取 \(k=3\) 即可通过。
构造什么时候需要三个值,也就是说:\(b\) 的前 \(3\) 大分别为 \(c,x,y\),\(c\) 的前三大为 \(b,x,y\),此时取 \(x,y\) 满足条件而维护前两大不可行。
策略游戏
若先手取正数,则后手一定取最小值,若先手取负数,则后手一定取最大值。
考虑先手的取法,无非是取最大,取最小,取最大的负数,取最小的正数,对这四种情况分类讨论即可。
求最大最小之类的可以使用线段树或者 ST 表搞定。
星战
首先你得先读懂题,题目问的等价于问图是不是基环树森林,换句话说就是问每个点出度是不是均为 \(1\)。
有一个 naive 的思路是加和然后判断,这显然很假,考虑一点乱搞,我们为每个点随机一个权值 \(v\),这个点有多少个出度加多少个权值。
你发现这个东西可以做到单次操作 \(O(1)\),没了。
数据传输
考虑矩阵乘法刻画 DP。
先考虑序列上面怎么做,这个东西很好刻画,只要考虑从 \(f_{i-1},f_{i-2},f_{i-3}\) 转移即可,DP 上面记这几个就可以刻画出矩阵,也很好转移到树上。
然后你写写写,发现 \(k=3\) 挂了,冷静一下,发现当 \(k=3\) 的时候,当两个点距离为 \(4\) 的时候,可以从中间的某个点周转,考虑这种情况怎么处理,发现其实只需要让 \(f_{i-2}\) 可以转移到自身且代价为 \(i\) 这个节点兄弟的最小值即可。
时间复杂度 \(O(3^3n\log n)\)。
标签:Set,最大值,CSP2022,Solution,枚举,即可,权值,考虑,出度 From: https://www.cnblogs.com/cnyzz/p/16840859.html