- 博客(32)
- 收藏
- 关注
原创 矩阵与哈希
矩阵乘法可以用来哈希。构造的矩阵越复杂,哈希冲突的概率就越低,原理是矩阵乘法不满足交换律。对于类似括号匹配的问题,可以通过构造矩阵的逆来解决。
2023-11-08 16:01:46
140
原创 关于叶子的染色这道题贪心做法的一些想法
对于一个点的所有叶子儿子,离它们最近的节点要么是黑色,要么是白色,那么权衡这些点,肯定选择较少的染色。而贪心是个递归的过程。确保某一次都是最优的也是必须选的,答案也就是最优的。如果一个节点所有儿子中黑色比白色多,那么将儿子中所有白色染上白色,黑色合并到这个节点,否则就反过来。贪心的做法是:如果一个点的所有叶子儿子都要染同一颜色,那么就把它的所有儿子都合并到自己身上。如果说一样多,还是合并过来,但是标记一下状态待定。
2023-10-04 20:03:37
67
原创 通过转换图减少边的数量
考虑一个无向图的完全子图,如果你要求出这个图去除一个点后剩余最大联通块的最小大小,那么将这个完全子图变成菊花图,并保证不删掉菊花图的中心,是不是等价于原图?
2023-10-03 21:13:50
51
原创 求解带权矩阵的最大子矩阵问题
一维,也就是一个一维平移而成。所以枚举矩阵的上下边界,之后对区间进行贪心即可。贪心时使用前缀和优化。若原矩阵长、宽上界为。考虑一维的情况,贪心即可。由于矩阵可以表示为一维。
2023-09-22 22:02:09
57
原创 最大闭合子图最小割做法的证明
为什么要把正点和负点分开?因为最大闭合子图要么为空,要么包含正点,所以必须连接源点和正点。并且扣去最小割时进行减法操作,相当于颠倒正负,所以说负数连接汇点。我们建立超级源点和汇点。源点连向所有正点权的边,边权为其点权。所有负点权的点连向超级汇点,边权为其点权的相反数。原图中所有的边权在网络中修改为。中所有正点的点权之和加上所有负点点权之和(这里指的是原值而不是相反数)(出发的闭合子图必然是闭合子图。设所有的正点权之和为。中所有负点权的相反数之和)。割,答案即为总点权减去最小割。设割集中所有边权之和为。
2023-09-22 10:12:36
46
原创 双连通与奇环
由于有一个点在奇环上,可以知道该奇环上的任意一个点到该奇环上的另一个点必然有两条路径,其中一条经过奇数个点,另一条经过偶数个点。对于任意的点双连通图,若一点在某个“点奇环”上,则该图中每一个点都必然在某一个“点奇环”上(不一定是同一个);同理,边双连通图和“边奇环”也有相似的关系。点奇环的定义是,从一个点出发,经过奇数个点(算上起点)后回到自己(不算终点),且不经过重复的点,则路径上所有的点构成一个点奇环。的点不重复路径,于是这两条路径与大环的一部分构成一个奇环,因此。,和该环上的任意两点。
2023-08-22 14:48:38
79
原创 威尔逊定理证明
中的元素必然可以被分成若干组,使得每一组有且仅有两个元素并且乘积对。中任意一个元素都必然对应一个与之相异的元素,使得它们的乘积对。,所以是完全剩余系。,那么将这若干组相乘得到的结果对。中必然有偶数个元素。
2023-07-20 10:02:48
386
原创 逆元小性质
在线性时间内求出它们各自的乘法逆元。(以上写法不正规,大致能理解就行)(以上写法不正规,大概能理解就行)是线性递推的,可以先求出。,再倒回来递推出所有的。
2023-07-09 22:20:48
37
1
原创 关于函数的一些问题
返回的是引用值,所以放入堆栈里的值也是“引用”值,所以输出的三个数都是三次自增运算后的。放入堆栈空间(原因是堆栈是先进后出的结构),所以后面的函数先执行!对于如下代码,你觉得输出是多少?因为函数传参时会将参数。
2023-07-05 20:03:42
30
1
原创 关于割点和点双连通分量的两个性质
那么,每一个强连通分量必然由原图的若干点双连通分量(可能去除掉割点)组成(这里及以下的“组成”都可以有重复节点),因为每一个强连通分量必然由自己的若干点双连通分量组成,而这些点双连通分量如果不是原图的点双连通分量(可能去除掉割点),那么必然是有一部分在其它强连通分量,那就与前面的结论矛盾,因此不可能。因此,包含割点的点双连通分量数大于等于二。如果说这个点属于两个或更多点双连通分量,那么将包含它的几个点双连通分量组成一个整体,这个整体必然是一个更大大点双连通子图,就与“分量”(极大)的假设矛盾。
2023-07-03 18:29:55
118
1
原创 [HNOI2004]宠物收养场 题解
不难看出,此题对我们的要求就是找出指定值的前驱和后继。之后,再按照题目要求记录相关值。很容易想到的使用两棵平衡树分别记录顾客和狗的相关值。实际上还有一种更加巧妙的思路。因为两棵平衡树当中始终有一棵是空的,所以说可以只用一个标记来记录哪颗平衡树是空的,然后用一棵平衡树来记录即可。大的数和排名,并不需要维护每棵子树的。由于题目中并没有询问第。操作来更新子树大小了。
2023-06-26 09:53:59
125
1
原创 洛谷P1516 青蛙的约会 题解
两只青蛙在网上相识了,它们聊得很开心,于是觉得很有必要见一面。它们很高兴地发现它们住在同一条纬度线上,于是它们约定各自朝西跳,直到碰面为止。可是它们出发之前忘记了一件很重要的事情,既没有问清楚对方的特征,也没有约定见面的具体位置。不过青蛙们都是很乐观的,它们觉得只要一直朝着某个方向跳下去,总能碰到对方的。但是除非这两只青蛙在同一时间跳到同一点上,不然是永远都不可能碰面的。为了帮助这两只乐观的青蛙,你被要求写一个程序来判断这两只青蛙是否能够碰面,会在什么时候碰面。米,两只青蛙跳一次所花费的时间相同。
2023-01-18 14:11:12
214
原创 排序不等式证明
排序不等式是数学上的一条不等式。它是说:如果x1≤x2≤⋯≤xnx1≤x2≤⋯≤xn,和y1≤y2≤⋯≤yny1≤y2≤⋯≤yn是两组实数。而xσ1xσnxσ1xσn是x1xnx1xn的一个排列。排序不等式指出x1y1⋯xnyn≥xσ1y1⋯xσnyn≥xny1⋯x1ynx1y。
2023-01-05 16:39:10
2369
原创 AcWing 4818.奶牛大学 题解
(也请读者想一想这应该如何证明,步骤十分简单)。所以说,我们可以排除所有的负数。,我们只需要先将数组排好序,然后找到第一个大于等于。,但是这样做是不可实现的,因为我们不可能枚举。(读者可以试着自己证明一下),而对于。(请读者自己想一想为什么),于是。则可以用二分法实现。的值,并得出满足要求最小的。但是我们可以发现,对于所有的。完整***C++***代码如下。而查找第一个大于等于。),试找出一个最小的。于是,我们只需要枚举。
2022-12-30 11:16:26
152
原创 AcWing 291.蒙德里安的梦想 题解
本题解内容简陋,多有不周,敬请谅解。如果有问题请在评论区留言。由于作者能力有限,这篇题解不会给出太严谨的证明,只是旨在帮助大家更好地理解此题,具体的做法请读者自己思考。
2022-12-26 11:03:36
570
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人