灵光溢溢
1. ❤LINK:有趣的家庭菜园
标签:树状数组,逆序对
对于一个序列,只能相邻两两交换时,排成有序序列的最小次数为逆序对的个数。
同类:火柴排队
火柴排队
同序和≥乱序和≥逆序和 为了让Aの第K大与Bの第K大对应计算出排序后“原A的i应该与原B的对应”(可用map,形式如map[a.id]=b.id) 最后的map[1~n]就为A移动后的位置。因为A.id原本是有序的,用逆序对即可 for(int i=1;i<=n;i++) scanf("%d",&noda[i].a),noda[i].id=i; for(int i=1;i<=n;i++) scanf("%d",&nodb[i].b),nodb[i].id=i; sort(noda+1,noda+n+1,cmp); sort(nodb+1,nodb+n+1,cmp1); for(int i=1;i<=n;i++) { ma[noda[i].id]=nodb[i].id; }
2. ❤LINK : Deliver the Cake
标签:最短路
对于可以有多个起点或终点任意选择的情况,可以建一个边权为0虚点,分别将所有的起点,终点各连接.
同样的,对于这道题,很显然对于M是不确定用左手还是右手的,我们可以把所有的M结点拆为两个结点(一个LEFT一个RIGHT)并建立相应的边在图中,让所有的结点都成为固定的选择。
3.❤LINK:Grudanje 完美单词(perfect)
标签:树状数组,二分
如果我们在选到 i个雪球时,整个题目就已经满足了,那么,我们再多选一些雪球,这个题目也是肯定能够满足的。因此,在这里就具有一个单调性,所以我们就可以利用二分来解决这个问题。可以造26个树状数组来维护到这个位置时这个字符出现的个数
4.❤ LINK:Very Easy Graph Problem
标签:最小生成树
第i 条边的长度为2i ,而且我们会发现 , 20 + 21+ 22+……+2n-1 < 2n
也就是说,如果前i-1条边图已经联通了,那么我们就不需要剩下的边了。因为就算两点间需要经过i - 1条边,那这个距离也是小于第i条边的。因此,我们就可以联想到用kruskal建立一个最小生成树来求解这个问题。要求任意顶点0和任意顶点1之间的距离和,其实可以先求出每条边对最后结果的贡献度,最后求和。每条边的贡献度为 边长*经过的次数(统计两侧的黑白点个数,计算贡献即可)。
例如边<a,b >。假设在树中a为b的父节点。那么<a,b >这条边的经过次数=以b为根节点的子树中0类别的节点数 * 子树以外类别1的节点数 +子树中1类别的节点数 * 子树以外类别0的节点数,因为子树内的数会通过这条唯一的边与外部“交流”
5.♥ LINK: 小凯的疑惑
标签:数学
①.设a1,a2及c均为正整数,gcd(a1,a2) = 1;当 c >a1*a2 - a1 - a2不定方程必有非负解。
②.设a1,a2及c均为正整数,gcd(a1,a2) = 1; 当 c > a1*a2不定方程必有正解。
6.♥ LINK:找筷子
标签:数学
我们考虑异或的两个小小的性质:
- k 个相同的数的异或和,当 k为奇数时,结果是这个数本身,否则结果是 0。
- 任何数与 0 的异或值是它本身。
https://www.bilibili.com/video/BV1Kx411f7bL/?p=1&share_medium=android&share_plat=android&share_source=COPY&share_tag=s_i×tamp=1615301905&unique_k=Fds22H&vd_source=24a420d00426dd75084e83baa33680ab
https://hackway.org/docs/cs/intro
本文来自博客园,作者:Doria_tt,转载请注明原文链接:https://www.cnblogs.com/pangtuan666/p/16558645.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现