- 博客(25)
- 收藏
- 关注
原创 Acwing827--双指针模板
唯一的区别就是我把add_in_right()写出来了,而题解就直接引用上面的add_in_left(),就是吧形参改变了。但我的疑问是难道调用函数时能自动调顺序?这不可能,我能想到的就是那个r[l[k]]是不能轻易的简化成k的,这里肯定有一些变量名代表的意义我不清楚。这里要注意双指针向左加和向右加一些操作上的顺序。再把那些r[l[k]]化简一下,就是k;上面是我对于题解的部分改动,下面是题解。
2024-09-16 20:06:42
312
原创 cf918 (div4)的F题的历程(第一次觉得之前接触了那么多排序方法是有用的)
然后看到归并排序,我说这个我知道,然后看到逆序对,没学过,去看了题解,就是在merge里有一个操作,merge的好处就是时间复杂度稳定还低,这个小操作按我一时半会儿的理解更像跟着merge走然后不断积累,算是递归吗?然后想了一下,要不先把遍历过的关键字排好序,用sort排,然后用二分upper_bound找,还是test3卡住了,感觉比n**2还大了突然想到,因为前面是一定有一层n套着的。, 当时看给我5秒,我说说不定能过,然后TLE了,是test3,已经破。首先最粗暴的方法就是双重遍历,当然是。
2024-08-29 15:54:25
649
原创 关于求数组中两部分是否相等问题可以考虑前缀和的思路
当之后你不记得标题由何而来时,请回顾codeforces round 918(div4)的F题。
2024-08-28 21:38:33
418
原创 区间dp的环处理——NOIP2006能量项链
有两种方法:一个是以任意一个节点为起点从而转换为链处理,当然每个节点都可以当作是起点。第二个则是复制原数组,若题干给定数组长度为n,则定义一个2n的dp数组和输入数组,再按照链处理,最后遍历dp[i][i + n]即可。
2024-08-26 10:44:48
204
原创 prim算法的框架(最小生成树)
void addedges(edgetype graph[maxn][maxn], int u, int v, edgetype w) //加边。//i == j时距离为0,否则为无穷大。i++) /////更新在访问的点与周边未被访问且有联系的点的最小距离。void initedges(edgetype graph[maxn][maxn], int n) //创建图。///////////////上述操作是为了找到未被访问并且离最小生成树的距离最小的点, 标记距离和下标。
2024-06-13 18:42:35
1028
原创 用Dijkstra模板时的方法
例如当给定一个坐标时(x, y),可以用x * number + y来表示这个坐标,然后建立一个数组,用坐标代表这个数。这样不仅让二维的表示法变成一维的表示法,还让目标值变小, 不至于时间复杂度太高。如果给定的顶点不是一个数或不是一个单独的字符,则需要转化。
2024-06-11 16:08:45
419
1
原创 Dijkstra的框架(最短路)
void dijkstra(edgetype graph[maxn][maxn], int n, int s, edgetype dist[maxn]) //n为实际定点数量,s为最开始的顶点。void initedges(edgetype graph[maxn][maxn], int n) //n为实际图的顶底数量,此函数的作用是初始化顶点之间的权值关系,inf代表两顶点之间无联系。if (dist[minindex] + dis < dist[i]) //更新其余顶点的最短路。
2024-06-09 02:15:41
476
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅