- 博客(9)
- 收藏
- 关注
原创 vector应用与函数
vector动态数组应用及函数vector动态数组是c++中一个常用的容器 它相比于c语言中的数组 多了很多功能方便了使用vector头文件使用vector 首先要添加vector头文件#include <vector>vector的创建(1)可以创建各种类型的vector动态数组 :整形,浮点型,字符型,对象类,字符串型都可以创建方法也是类似的 vector<int> ivec; //保存int类型的动态数组 vector<string&g
2021-08-03 09:23:15
230
原创 bfs双向广搜
双向BFS假设每次决策数量是 K,那么如果直接BFS,最坏情况下的搜索空间是 K10,非常大,所以会TLE或者MLE。如果采用双向BFS,则可以把搜索空间降到 2K5。BFS的扩展方式是:分别枚举在原字符串中使用替换规则的起点,和所使用的的替换规则。如图可以发现单向到后面有很多点是跟终点没有交集的每次搜索一层都会指数上升从两边搜索可以使指数减一倍双向光搜一般用在最小步数模型中,因为最小步数一般都是指数级别的,而最短路中一般不会太大,根据题意即可。while 判断条件是两个队列必须都不为
2021-07-25 18:02:50
226
原创 2021牛客暑期多校训练营1
A题意Alice和Bob玩游戏 两堆石头从一堆中一堆拿a(a>0),另一堆拿a的整数倍(可为0)Alice先手 最优策略最后谁赢思路先暴力打表10分钟求出所有解 然后预处理代码#include<iostream>using namespace std;const int N = 5010;int n;int f[N][N];int a[N];void solve(int x, int y) { int t = 1; for(int i = 1;
2021-07-18 12:17:07
179
原创 Codeforces Round #730 (Div. 2)
Codeforces Round #730 (Div. 2)A思路::GCD(a,b)=GCD(a−b,b) if a>b因为 a-b是不变的所以最大公因数 为 a-b 特别a == b时 无限大最小步数 选离a最近的公因数倍数即可代码#include<iostream>#include<cmath>using namespace std;typedef long long ll;ll n, m; int main() { int tes
2021-07-10 18:26:50
134
原创 缩点Tarjan
解释缩点,就是把一张有向有环图中的环缩成一个个点,形成一个有向无环图1.dfn和low的含义tarjan算法有两个核心数组:dfn和low,同样也需要一个栈,辅助存储强连通分量。dfn是“时间戳”,dfn[i]说明i点在什么时间被遍历的。low[i]是i可回溯到的最早时间戳的点的时间戳(见下面对low值的计算),默认值为dfn[i],举个例子:如果i到j有一条路径,j到i也有一条路径,那么就使max(low[i],low[j])=min(low[i],low[j])max(low[i],low[j])
2020-09-21 16:30:25
1914
原创 一个有趣的题目:并查集反集
本博客由南昌理工学院ACM集训队播出 赞助了大大的西瓜题目连接首先你要会并查集这道题用到了一个有趣的思想:反集就是在原数据的基础上乘2也就是再作一个集合,多出来的n~~2*n作为辅助答案 #include<iostream> using namespace std; int a[2010]; int n, m; int findd(int x) { // 查找模板 return x == a[x] ? x : a[x]=findd(a[x]); } void merg
2020-08-15 17:34:53
896
1
原创 字符串算法——AC自动机讲解
本博客由南昌理工学院ACM集训队赞助播出 教练要求AC自动机文字说明本算法需要先掌握字典树和KMP算法后再来学习如果没学过其中的任意一种,请先去学习再来用我见过的大佬引用:AC自动机简单来说就是Tire Tree + 看毛片 KMP,也就是在树上看毛片 KMPAC自动机用来解决多模式串匹配,也就是给好几个子串,一个很长很长的母串,让你处理一些问题,比如什么子串出现的次数或种类之类的。先用字典树建立树,然后用fail指针将子串串起来,和KMP中的next数组很像,我们定义fail数组,fai
2020-08-08 15:53:50
334
2
原创 c++ 树状数组三种方法
树状数组初识树状数组树状数组用的是树结构的思想(也就是树型逻辑结构),而不是真正的“树形结构”,(换句话说,从某种意义上,树状数组跟树其实没有特别大的关系)树状数组支持的操作:区间和、区间异或和、区间乘积和RMQ(显然,支持的操作都具有交换律)2.单点修改和区间修改。 树状数组的优点:树状数组的维护是(logn)的,并且查询、修改是O(1)。 树状数组被称为树的原因:维护以(logn),而这个log底是2;就是二进制表示法,也就是二叉树上数据之间的特殊逻辑关系。还是不懂的人可以结合下面的图理
2020-07-31 00:01:40
1914
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人