abc407

没想到abc摆这么多场了,都是文化课的错!

C:
容易发现这是一个方程组的形式,这个方程组的特点就是未知数系数为1,然后已经删成了一个对角矩阵。所以我们从后面消上来即可。中间有一个地方忘记掉%10了hhh

D:
无聊的搜索

E:
直接列dp方程是dp[i][j]=max(dp[i-1][j-1]+a[i],dp[i-1][j+1])
显然过不了,然后这个看起来不是特别能数据结构优化的样子。
考虑贪心,我们发现为了使括号序列合法,我们必须放n/2个)和n/2个(。
我们从放(的角度考虑不是特别会刻画这个性质
从放)的角度考虑那么这个性质就是每个位置前面放的)数量不超过i/2。
那么我们现在的问题就转化成了a[i]=i/2,然后有操作就是后缀-1。区间减,然后为了保证合法,我们还不能减成负的。所以我们用线段树维护这个东西。然后为了使答案更大,我们把这个位置按权值从小到大排序,这样我们就是最优的。小证一下。我们抛弃一个,那么久必然会取后面的一个,因为我们要保证取n/2,然后这样就不优了。
所以我们排序后,每次用线段树维护a[i]的区间min如果可以,那么就减掉

F:
这种题我还是比较擅长的。
肯定是考虑贡献,我们考虑每个数对答案的贡献,发现比如i,然后管辖(也就是它成为区间中的最大值)l,r,那么会对i=1,产生a[i]的贡献,对i=2产生2a[i]的贡献,对i=3产生3a[i]的贡献,然后等我们顶到一边的时候我们的贡献就不变了,然后之后,贡献就是-a[i]减少了。这个等差数列加减,我们直接维护差分数组即可,差分数组是区间加,那么我们用差分维护差分数组即可

G:
当时想的是网络流,正解好像就是这个,到时候想一下。
这种乱七八糟的题目就是网络流嘛,唉

还是对把
直接每次写流量为1的EK即可。
建图也很简单,我们把图分成黑白两种点,所以我们一块多米诺只会连一个黑点和一个白点,然后我们连边就是直接是代价,然后因为我们是最小费用最大流,所以我们的程序会在先保证流量最大的情况下最小费用,所以我们总不能跑2000遍dinic吧,所以我们使用EK,每次容量都增加1,这样就好了。

posted @ 2025-07-09 10:12  wuhupai  阅读(2)  评论(0)    收藏  举报