- 博客(6)
- 收藏
- 关注
原创 HDU 7136(2021ccpc重赛)Jumping Monkey 题解
题目链接 Jumping Monkey Problem Description There is a tree with n nodes and n−1 edges that make all nodes connected. Each node i has a distinct weight ai. A monkey is jumping on the tree. In one jump, the monkey can jump from node u to node v if and only if a
2021-10-12 16:18:52
352
原创 IncDec Sequence(差分)
IncDec Sequence(差分) 题目链接 题目 给定一个长度为 n 的数列 a1,a2,…,an,每次可以选择一个区间 [l,r],使下标在这个区间内的数都加一或者都减一。 求至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列可能有多少种。 输入格式 第一行输入正整数 n。 接下来 n 行,每行输入一个整数,第 i+1 行的整数代表 ai。 输出格式 第一行输出最少操作次数。 第二行输出最终能得到多少种结果。 数据范围 0<n≤105, 0≤ai<
2021-08-11 11:12:13
363
原创 离散化(模板)
离散化本质上可以看作一种哈希,离散化操作之后,可以保证一组数据在经过处理之后,其相对位置并没有发生变化。 即:当给出的数据自身,因为过大或者类型无法匹配无法作为数组下标,且影响最终结果的只有数据间的相对大小关系时,我们可以将原来的数据按照从大到小编号来处理问题,即离散化。 用来离散化的可以是大整数、浮点数、字符串等等。 例题:Acwing802.区间和 假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。 现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c。 接下来,进行 m 次询问,每
2021-07-28 20:21:31
225
原创 字符串哈希(模板)
字符串哈希就是将一个字符串通过一定方式转化成一个数据,便于与其他字符串进行比较是否相同。 要将一个字符串s转化成一个数字,我们可以通过进制转化方式进行,即将一个字符串转化位P进制数(这里的P一般取131或13331)如: char s[] = {'a','b','c','d'}; //则该字符串即为 abcd 左边为高位,右边为低位,转为P进制数 ans(ans初始值为0)即可表示为 for(int i = 0 ;i < strlen(s);i++) ans = ans * P + s[i]; 同
2021-07-18 00:42:07
832
原创 c++STL基本用法
## **vector<变量>,变长数组,倍增思想** vector<int> a(10,3); 容量为10的向量,其中元素均为3 size() 返回元素个数 empty() 判空 clear() 清空 front()/back() 第一个/最后一个元素 push_back()/pop_back() 向最后插入一个元素/删除最后一个数 begin()/end() 迭代器 支持比较运算(按字典.
2021-07-17 20:43:01
246
原创 图的最短路和最小生成树
最短路径 Dijkstra 算法 令S={源点s + 已经确定了最短路径的顶点Vi} 对任一未收录的顶点V,定义dist[V]为s到V的最短路径长度,但该路径仅经过S中的顶点。 若路径是按照递增(非递减)的顺序生成的,则 1.真正的最短路径必须只经过S中的顶点。 2.每次从未收录的顶点中选一个dist最小的收录。 3.增加一个V进入S,可能影响另外一个w的dist值! 伪代码如下: void Dijkstra(Vertex s) { while(1){ V = 未收录顶点中dist最
2021-02-28 20:27:51
212
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅