Fork me on GitHub

灵光溢溢

1.  ❤LINK:有趣的家庭菜园

 ❤TJ :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:找筷子

标签:数学

我们考虑异或的两个小小的性质:

  1. k 个相同的数的异或和,当 k为奇数时,结果是这个数本身,否则结果是 0
  2. 任何数与 0 的异或值是它本身。

https://www.bilibili.com/video/BV1Kx411f7bL/?p=1&share_medium=android&share_plat=android&share_source=COPY&share_tag=s_i&timestamp=1615301905&unique_k=Fds22H&vd_source=24a420d00426dd75084e83baa33680ab

 

 

https://hackway.org/docs/cs/intro

 

posted @   Doria_tt  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示