- 博客(6)
- 收藏
- 关注
原创 c++提升速度
原理是利用get/put char的极快速度,把一个整型变量转换成一堆字符,用getchar/putchar进行输入输出。(1).数组可以转化成vector, vector的时间比同等大小的数组时间上快了很多倍。所以在需要以下技巧,当然还有很多,因为我能力有限,先介绍这些。首先,当你写了一份程序,可时间却慢如蜗牛,接下来这几个方法,让你速度直接起飞。题目 给出n个数和一个数k,问是否有一种方法,使这些数中其中两个数的和是k。一个程序的核心就是算法,当时间过长,需考虑换算法。对于n较大,无法解决。
2024-10-03 21:58:22 273
原创 算法学习笔记(1)并查集
其实,并查集的大概思路就是对于每一组,选出一个老大,查询时,看看两个数的老大是否相同就可以了。合并时,让一个老大臣服于另一个老大,这样,两个组的人都有共同的老大了。第二个,由于每次合并,需要查一下根,下一次又查一下根。(让高度大的树的根成为高度小的树的根的父亲,有效避免退化)这是第一个优化的地方。加入这两种优化后并查集效率极高,所有操作都是O(a(n)),a(n)这个函数比logn还快!合并1和4所在的组(这里的1的所在的组并不是1单个数,是【1,3】这个大组)然后,合并了1和3所在的一组。
2024-05-02 21:05:21 272
原创 挑战,用4种方法做a+b问题
(2)高精度方法,就是模拟竖式的过程,一般用数组进行,可是我胆小包天,直接不转存了,干脆用字符串做。(3)dijkstra,建一个图,3个顶点2个边,边权是a和b,求最远的两个点之间的最短距离。当然,方法还有很多,平方分割,线段树.....,我是个小学生,只有这么多啦。(4)最小生成树算法。(由于prim自认为比较简单,所以这里用prim)
2024-05-02 10:38:31 147 1
原创 codeforces 41B
本题是给出n天的一只股票的价格(第i天时股价为ai),你目前手上有b元钱。选择在一天买入,并在后面的一天中卖出,但你只能买卖一次(可以买多股,比如你有6元,今天股价为3元,你可以买6/3=2股,卖出时,你的钱数就是 买的股数*卖出时的股价)。那你的钱将从b变成(b/x)*y+b%x。最大差值最大是10-6=4,可只能买一股,卖出后是10元。可如果选 1,3进行买卖,你却能得到(6/1)* 3+6%1=18元,可见不仅与差值有关,也与买股数的相关。一开始有人可能会想,求一下最大差值都就行了,是错的。
2024-05-01 22:06:48 131 2
原创 codeforces 20C
由于数据范围到了2e5。只好用dijkstra。可dijkstra只能求起点到所有点的最短路。1到v的最短路可以求了,如何求路径呢?这里有一个路径还原的方法,就是记录每个节点到一的最短路中,此节点的前一个结点。求好后写一个循环,每次去他的前一个结点,到一路径还原就完成了。这题就是一个带权无向图,求节点1到节点v的最短路,输出路径即可。题目保证不出现负边。这是本小学生地一次发题解,建议丝滑连招。1.不开longlong见祖宗!2.v很大,存边权别用数组!
2024-05-01 20:10:35 184
C++ MC(交互简易版)
2024-09-17
游戏,游戏基础系统,好玩,用来玩的
2024-09-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人