ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

20220219省选组总结

2022-02-19 17:00:20  阅读:118  来源: 互联网

标签:总结 20220219 log 位置 矩阵 树形图 贡献 省选组 高斯消


T1 树形图求和

貌似跟之前一道省选题几乎一样?
首先想的是对每条边统计其所在的树形图个数,乘上边权后相加。
会用到矩阵树定理求树形图个数。
但这样是 \(O(m n^3)\) 的,显然过不了。
题解做法是快速维护余子式?
根本没有想到这一边,想到了也不会维护(bushi
嗯。。。考虑将原本矩阵中的 度数 或者 边数 改成双元组,即将一条边的贡献变为 \(wx + 1\) (\(w\) 为边权) 的形式。答案是矩阵行列式的 \(x^1\) 项系数。
如何理解?
考虑如果只计算一条边时是如何求答案的。
若一个树形图中包括该边,才会被计算到答案里面,那么如果把该边的 1条 变成 权值 条 ,算出来的也就是该边的贡献。
\(x^1\) 项保证了只有一条边的贡献是边权。

讲到这里应该都明白了吧?还是提多一嘴。
由于求 det 需要高斯消元,一般都会想直接将多项式当成原本的方程系数来消元,这就需要用到多项式求逆了(虽然只有两项简单的很?)
实际上完全不需要求逆(我根本没写多项式……),只用对常数项高斯消元即可。
但是这个高斯消元需要额外步骤,其实就是不仅仅求出下三角矩阵,我们只保留一条对角线,其他位置的常数项要求全部为 \(0\) 。
为什么?
由于我们只会取一个一次项,此时若在对角线外取了数,则有至少两个数不在对角线上,这些数中至多只有一个能取一次项,于是必有常数项 \(0\) 会被取到,也就没有贡献了。
这样真的好写很多。。。

T2 旅行

还没敲。。。
首先是二分答案,由于题设,旅行一定是按dfn序做的。
那么我们对每个点维护二元组 \((a,b)\) 的集合表示第一天 \(a\) 最后一天 \(b\)。
对于所有 \((a,b), (a',b')\) ,若有 \(a \le a' , b \le b'\) ,\((a',b')\) 显然不优,就没必要存在了。
合并儿子时使用启发式合并,根据某种方式排序后就可以前缀最小值+双指针了吧。
排序什么的可以用归并可以保证复杂度是 \(O(n \log n \log Ans)\) 的,或者直接 sort 多个 \(\log\) 貌似也能硬刚。

T3 字符串游戏

先倒着扫一遍判合法性并找出二元组 \((a_i,b_i)\) 表示 \(a_i\) 要移动到 \(b_i\) 的位置。
做完第一次操作后一定是由这些 \(a_i\) 组成的字符串。
然后设 \(v_i\) 表示做完第一次后 可以提供的位置数 , 需要保证能覆盖到对应最左侧的需求位并至少留下一个位置(防止灭种)。
那么每一次操作相当于将 \(v_i\) 往前贡献一次,这样的贡献是会保留下来继续对前面造成影响的。
会不会有贡献多了的情况,比如到达了 \(b_i\) 后继续将后面的贡献转移到后面?
不会,原因是当 \(b_i\) 该过程完成了,前面得到的可行位置就是该过程前的所有位置了,前面的答案也不可能更大。

标签:总结,20220219,log,位置,矩阵,树形图,贡献,省选组,高斯消
来源: https://www.cnblogs.com/Kelvin2005/p/15913060.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有