通用的换根DP做法

学习了一下换根DP,主要是根据一下两位大佬的博客学习的~严格鸽Seaway-Fu题目练习:P3478 [POI2008] STA-StationAC代码:#include <bits/stdc++.h>using namespace std;typedef long long LL;co
算法 刷题 2023年03月08日 403次浏览

概率与期望在算法中的常见模型

  期望和概率还是十分重要的模块,就稍微学习并记录一下hh。1、常用的知识1.1、概率的巧妙转换1.2、期望用概率表示举例应用:  注意应用场景为求次数的期望,别乱用~2、随机游走2.1、链式  一条长度为 nnn 的链,从一端走到另一端的期望时间。  分析方式: 定义 E(x)E(x)E(x) 表
算法 刷题 2023年03月08日 553次浏览

莫队算法

学习了一下莫队算法,ORZ  莫队,是莫涛发明的一种解决区间查询等问题的离线算法,基于分块思想,复杂度为O(nn)O(n\sqrt{n})O(nn​)。本文只涉及普通莫队。  一般来说,如果可以在 O(1)O(1)O(1)时间内从 [l,r][l, r][l,r] 的答案转移到 [l−1,r][l
算法 2023年03月06日 475次浏览

C++中priority_queue存储结构体时重载操作符的说明

priority_queue中存储结构体时,需要自定义比较规则,比较绕,这里记录一下。作为大根堆使用时priority_queue<int> heapstruct Seg{int l, r, v; bool operator< (const & t) const{
算法 2023年03月05日 479次浏览

数位DP板子

——该板子来自凌乱之风,风神的总结~,ORZ
算法 2023年03月04日 427次浏览

关于set和multiset自带的lower_bound和upper_bound

lower_bound(a.begin(), a.end(), x):查找大于等于x的第一个位置,返回的是迭代器。upper_bound(a.begin(), a.end(), x):查找大于x的第一个位置,返回的是迭代器。C++对set容器使用二分查找时,不能用上面的两个属于alogrithm库的
算法 2023年03月03日 365次浏览

并查集之——单链表式并查集

普通并查集(树状): p[i]表示节点i的父节点,i所在树的根节点是代表元素。单链表式并查集(单链表状)时间复杂度 O(m元素值域+n)O(m_{元素值域}+n)O(m元素值域​+n)元素值域​+n) ,空间复杂度不同问题不一样。p [ i ] p[i]p[i] 表示 i ii 在单链表形式并查集中
算法 2023年03月02日 571次浏览

单源最短路和最长路总结

单源最短路和最长路一共分为(1) 加法最短路(2) 加法最长路(3) 乘法最短路(4) 乘法最长路套用最短路和最长路就能求啊,所以SPFA当然可以求,SPFA的正确性是基于它的松弛操作,所以自然是可以求乘积最小值和乘积最大值的。考虑Dij为什么不一定行,因为Dij的最短路算法是贪心的,它贪心的选最小
算法 2023年02月27日 346次浏览

关于逆序对

逆序对一般可以用归并排序来做一般的求逆序对如下:给定一个长度为 n的整数数列,请你计算数列中的逆序对的数量。逆序对的定义如下:对于数列的第 iii 个和第 jjj 个元素,如果满足 i<ji<ji<j 且 a[i]>a[j]a[i]>a[j]a[i]>a[j],则
算法 2023年02月07日 403次浏览

0/1分数规划

最近入门了 0/1 分数规划,于是写篇博客纪念分数规划是一项不常用到的(但还蛮实用的)算法,一般来讲就是求一个最优比率。分数规划的简单介绍分数规划顾名思义就是求一个分数表达式的最大(小)值。比如说有 n 个物品,每个物品有两个权值 a 和 b ,然后让你选出任意件数(但可能会有限制)的物品,使得两个
算法 2023年01月06日 504次浏览