题解 算法

【题解】[ABC248G] GCD cost on the tree

「八云紫」无数次痛苦地询问,为什么我们还活着? ……而「古明地恋」从不会回答。 恋恋闭上了觉之眼。 思路 容斥 + dp. $\gcd$ 相关,考虑 $\mu$ 反演或者 $\varphi$ 反演。 本质上都和容斥差不多,不如直接一步到位考虑容斥。 把权值拆成 $\gcd$ 和对应的方案数两部分,考 ......
题解 248G cost tree ABC

C#中使用CAS实现无锁算法

CAS 的基本概念 CAS(Compare-and-Swap)是一种多线程并发编程中常用的原子操作,用于实现多线程间的同步和互斥访问。 它操作通常包含三个参数:一个内存地址(通常是一个共享变量的地址)、期望的旧值和新值。 CompareAndSwap(内存地址,期望的旧值,新值) CAS 操作会比较 ......
算法 CAS

快速排序以及快速排序常用的三种算法

快速排序相比其他极大排序在效率和空间复杂度上都算是比较优得。并且在进行了三数取中优化以后,除了及其小的情况外,基本能保持logn的时间复杂度。 三数取中法;在一堆数据中随机取三个数,然后取其中间大小的数。 有了三数取中的基础以后,快速排序的key就可以用三数取中来完成了。 1:快速排序有三种常用的方 ......
算法 常用

QuHai互联科技 算法题部分

11、实现计算第n个斐波那契数 12、给定一个字符串编码规则,如输入字符串”Y3E12S!3”,字母后面的数字表示该字符重复几次,如果字符后没有数字则表示一个字符,最终输出转码后的字符串’YYYEEEEEEEEEEEES!!!’。试写出转码的函数,编程语言不限。 13、简述你所了解的两种或以上排序算 ......
算法 部分 QuHai 科技

扎实打牢数据结构算法根基,从此不怕算法面试系列之week01 02-09 测试算法时间复杂度性能的方式方法

#1、数组生成器 测试算法性能肯定不能自己手动声明创建数组了,在现代计算机上,对于O(n)级别的算法,都需要10W级别以上的数据才能看到性能,我们肯定不能手动声明10W个元素的数组吧? 所以,创建数组生成器。 这里,自己创建一个数组生成器——ArrayGenerator。 package com.m ......
算法 复杂度 数据结构 根基 性能

2022年中国大学生程序设计竞赛女生专场-比赛题解

比赛链接:Dashboard - 2022年中国大学生程序设计竞赛女生专场 - Codeforces A. 减肥计划(模拟) 模拟,如果队列第一个人体重是最大的了,则这个人的位置不会再变,直接输出即可。 #include <bits/stdc++.h> using namespace std; us ......
国大学 题解 专场 程序设计 女生

学习十大排序算法(1)——选择排序【实现方法c语言】

十大排序算法第一节——选择排序 复制代码直接滑到最后!!! 选择排序就是找到(最大或者)最小元素,放到最开始的位置,然后就是在没有排序的序列中找到最小的排在已经排好的序列之后,直至没有排数列排完。(自己的理解) 大概解释代码其中的细节:第6行中的sizeof的用法是求出括号里面的所占的字节数,比如s ......
算法 语言 方法

vue2源码-十、diff算法

diff算法 diff算法的特点就是平级比较,内部采用了双指针方式进行优化,优化了常见的操作。采用了递归比较的方式。 针对一个节点的diff算法 先拿出根节点来进行比较如果是同一个节点则比较属性,如果不是同一个节点则直接换成最新的即可。 同一个节点比较属性后,复用老节点 比较儿子 一方有儿子 一方没 ......
算法 源码 vue2 diff vue

福特-富克森算法

福特-富克森(Ford-Fulkerson)算法是一种求解最大流问题的经典算法,它的基本思想是通过不断地增广路径来找到最大流。 最大流问题通常是指在网络中找到从源点到汇点的最大流量,其中网络由若干条有向边组成,每条边都有一个容量,表示该边可以通过的最大流量。最大流问题的目标是找到一个流,使得从源点到 ......
算法

分而治之算法

分而治之算法(Divide and Conquer Algorithm)是一种基于递归的算法思想,将问题划分为若干个子问题,逐个解决子问题并将它们合并成原问题的解。 分而治之算法通常包括以下步骤: 分解:将原问题分解为若干个子问题,这些子问题的结构与原问题相同或类似,但规模更小。 解决:递归地解决每 ......
算法

ABC298Ex 树上计数 + 倍增 题解

思考如何将到 $u$ 距离短的和到 $v$ 距离短的节点分别处理出来。发现对于一次询问 $(u,v)$,可以将所有节点分成三类: 除 $u$ 和 $v$ 的 LCA 的子树外的所有节点。 将 $u$ 至 $v$ 的最短路径的最中间的边删掉后组成的两棵树中的其中一棵树中的所有节点。 不属于以上两类节点 ......
题解 ABC 298 Ex

CF1797E 线段树 + 倍增 题解

Preface 有趣的一道 ds,赛后不看题解做出来了。 Solution 首先有一个性质:$\varphi(x)$ 经过 $\mathcal{O}(\log x)$ 次迭代后变为 $1$。 证明: 若 $x$ 为奇数,$\varphi(x)=x\sum_{i=1}^{k}\frac{p_i-1}{ ......
线段 题解 1797E 1797 CF

Dijkstra的算法

Dijkstra算法是一种单源最短路径算法,用于在带有非负权重的图中,找到一个源节点到所有其他节点的最短路径。该算法的基本思想是通过贪心的方式逐步扩展当前已知的最短路径集合,直到找到源节点到所有其他节点的最短路径。 Dijkstra算法的具体步骤如下: 初始化:设置源节点到自己的距离为0,将源节点标 ......
算法 Dijkstra

兔子产子问题(递归算法)

#include<iostream>using namespace std;int f(int n){ if (n == 1 || n == 2) return 1; return f(n - 1) + f(n - 2);}int main(){ int i; for (i = 0; i < 30; ......
算法 兔子 问题

LeetCode-Go:一个使用 Go 语言题解 LeetCode 的开源项目

在中国的 IT 环境里,大多数场景下,学习算法的目的在于通过笔试算法题。 但算法书林林总总,有时候乱花渐欲迷人眼。 杜甫有诗云:读书破万卷,下笔如有神。不管选择哪本书,只要深入学习,分层次,逐层进阶,一定可以将算法攻克。 笔者强烈推荐一个 Github 开源项目 LeetCode-Go,你不仅可以把 ......
LeetCode 题解 LeetCode-Go 语言 项目

《算法竞赛进阶指南》 第五章 237. 程序自动分析

地址 https://www.acwing.com/problem/content/239/ 在实现程序自动分析的过程中,常常需要判定一些约束条件是否能被同时满足。 考虑一个约束满足问题的简化版本:假设 x1,x2,x3,… 代表程序中出现的变量, 给定 n 个形如 xi=xj 或 xi≠xj 的变 ......
算法 指南 程序 237

Atcoder题解:Agc018_f

首先观察这个奇怪的子树为 $1$ 或 $-1$ 的限制。 看不出来性质,润了。 我们不如直接把 $A$ 树和 $B$ 树拆开,变成两棵树,然后在树上留一下匹配的性质。 第一,我们对着样例构造一下,发现似乎有解的样例都有 $abs(X_i)\le 1$ 的解。 这就提示我们猜用 $-1,0,1$ 就够 ......
题解 Atcoder Agc 018

四种语言刷算法之对链表进行插入排序

力扣147. 对链表进行插入排序 1、C /** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ struct ListNode* inserti ......
算法 语言

十大排序算法

一、冒泡排序 public class BubbleSort implements IArraySort { @Override public int[] sort(int[] sourceArray) throws Exception { // 对 arr 进行拷贝,不改变参数内容 int[] a ......
算法

贪心算法基础及leetcode例题

#理论 **本质:**找到每个阶段的局部最优,然后去推导得到全局最优 **两个极端:**常识&&很难: 很多同学通过了贪心的题目,但都不知道自己用了贪心算法,因为贪心有时候就是常识性的推导,所以会认为本应该就这么做! 套路: 贪心没有套路,说白了就是常识性推导加上举反例 做题的时候,只要想清楚 局部 ......
例题 算法 leetcode 基础

【ACM算法竞赛日常训练】DAY16【奇♂妙拆分】【区区区间间间】【小AA的数列】数学 | 位运算 | 前缀和

DAY16共3题: 奇♂妙拆分(简单数学) 区区区间间间(单调栈) 小AA的数列(位运算dp) 🎈 作者:Eriktse 🎈 简介:19岁,211计算机在读,现役ACM银牌选手🏆力争以通俗易懂的方式讲解算法!❤️欢迎关注我,一起交流C++/Python算法。(优质好文持续更新中……)🚀 🎈 ......
数列 前缀 区间 算法 数学

AES算法 前端JavaScript加密 后端Java解密

CryptoJS https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js 中文文档 https://cryptojs.gitbook.io/docs/ var AES = function () { const ......
前端 算法 JavaScript Java AES

微信医保授权签名 PHP算法

最近在开发微信的时候、遇到了需要 秘钥签名的地方; 官方只提供了JAVA代码、让PHP的我一头雾水,踩过无数坑后终于签名通过、直接上签名函数; public function keyJiaMi($partnerSecret,$partnerId,$timestamp){ return hash_hm ......
医保 算法 PHP

2023-04-19 算法面试中常见的递归和回溯问题

递归和回溯 0 递归与回溯的异同 参考文章 递归与回溯 递归与回溯的理解 回溯和递归区别 比较 | | 递归 | 回溯 | | | | | | 定义 | 为了描述问题的某一状态,必须用到该状态的上一状态,而描述上一状态,又必须用到上一状态的上一状态……这种用自已来定义自己的方法,称为递归定义。形式如 ......
算法 常见 问题 2023 04

代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素。

#目录 一、基础知识 - 二分法解题思路 - 数组中删除的思路 二、题目一:704.二分查找 三、题目二:27.移除元素 #一、基础知识 1.二分法解题思路 要求数组必须是有序排列,仅需要根据题目的条件去确定搜索区间。 第一个关键点:区间的取值。 一般有左闭右闭,左闭右开,左开右闭三种,这个的选择不 ......
随想录 训练营 随想 算法 元素

选举算法汇总(redis、zookeeper、kafka)

1.redis 哨兵(sentinel)模式 背景:哨兵模式,节点类型包括master、slave、和sentinel,master-slave节点和主从模式的作用是相同的;多了sentinel节点提高服务的可用性和稳定性 触发原因:master(简称A节点)节点异常,当一个sentinel发现A节 ......
算法 zookeeper redis kafka

阿里笔试4.19 题解

T1 给定一个序列,问有多少个区间的众数次数>=k sol:考虑two-pointer。枚举左端点,寻找最小的右端点是的众数次数>=k 推导后发现需要支持以下功能 1.增加某一个数的出现次数 2.减少某一个数的出现次数 3.查询众数的出现次数(即出现次数最多的数字的出现次数) 这些功能可以抽象化可以 ......
题解 笔试 4.19 19

m基于ID3决策树算法的能量管理系统matlab仿真

1.算法描述 ID3算法是一种贪心算法,用来构造决策树。ID3算法起源于概念学习系统(CLS),以信息熵的下降速度为选取测试属性的标准,即在每个节点选取还尚未被用来划分的具有最高信息增益的属性作为划分标准,然后继续这个过程,直到生成的决策树能完美分类训练样例。 ID3算法最早是由罗斯昆(J. Ros ......
算法 能量 管理系统 matlab 系统

扎实打牢数据结构算法根基,从此不怕算法面试系列之008 week01 02-08 通过常见算法,对常见的时间复杂度做梳理

#1、线性查找法的复杂度 public static <E> int search(E [] data,E target){ for (int i = 0; i < data.length; i++) if (data[i].equals(target)) return i; return -1; ......
算法 常见 复杂度 数据结构 根基

GYM104081 部分题解

比赛链接:https://codeforces.com/gym/104081 目前就做了 8 题,里面还有 4 个水题…… 水题:ACEG,模拟题意即可,C 和 E 有一些细节。不想写题解了 F 首先目标是如何将这 9 个数分组,由于答案一定存在,考虑随机化,固定 $a_1 \in S_1$,然后随 ......
题解 部分 104081 GYM