- 博客(9)
- 收藏
- 关注
原创 C/C++ 输入方式(重点是字符串中含空格的输入)
缺点:输入 “I love China” 回车结束输入,输出结果为love China。cin.getline()函数可以同cin.get()函数类似,也可接收空格,遇回车结束输入。缺点:只能输入没有空格的字符串,当输入中含有空格,则只能输出空格之前的字符。可以无限读取,以回车结束读取,C语言中的函数,在C++中运行会产生bug。cin是C++中最常用的输入语句,当遇到空格或者回车键即停止。cin.get()函数可以接收空格,遇回车结束输入。缺点:回车并未结束输入,需回车两次才能结束输入。
2024-03-16 16:08:32 1384
原创 简单博弈论
所谓采取最优策略是指,若在某一局面下存在某种行动,使得行动后 对面面临必败局面,则优先采取该行动。同时,这样的局面被称为必败。在有向图游戏中,对于每个节点 x,设从 x 出发共有 k 条有向边,分别到达节点 y1,y2,……定义有向图游戏 G,它的行动规则是任选某个有向图游戏 Gi,并在 Gi 上行动一步。NIM 博弈属于公平组合游戏,但城建的棋类游戏,比如围棋,就不是公平组合游戏。特别地,整个有向图游戏 G 的 SG 函数值被定义为有向图游戏起点 s 的 SG 函数值,即 SG(G) = SG(s)。
2023-12-11 22:43:29 343
原创 数学(常用算法模板)
所以,一个式子:ax + by = c 有解,则 c 为 a b 的最大公因数的倍数。有一个式子:ax + by = d;其中,d 为 a b 的最大公因数。对于这样一个式子,可以求得一组( x0 y0 )使得式子成立;
2023-12-09 11:21:47 1444
原创 搜索与图论
一个序列,包含图中所有的点;在这个序列中,排在后面的点,不会有指向排在前面节点的出边。且这个序列不是唯一的。dfs(深度优先搜索):一条路走到黑。沿着一条路一直搜索,直到走不通时,再进行回溯。bfs(广度优先搜索):像波纹一样层层向外扩展。每层搜索完全后,在进行下一层的搜索。
2023-12-05 23:14:13 638 1
原创 C++ STL基本用法
不支持 lower_bound()/upper_bound(), 迭代器的++, --begin()/end() ++, -- 返回前驱和后驱,时间复杂度 O(logn)lower_bound(x) 返回大于等于x的最小的数的迭代器。upper_bound(x) 返回大于x的最小的数的迭代器。erase() 输入的参数是pair或者迭代器。和上面类似,增删查改的时间复杂度是O(1)insert() 插入的数是一个pair。count() 返回某一个数的个数。set(k, v) 把第k位变成v。
2023-12-01 23:38:06 1628 1
原创 前缀和与差分(模板)
核心操作:给以 (x1,y1) 为左上角,(x2,y2)为右下角的子矩阵中的所有数 a[i,j],加上C;2,构造差分矩阵 b[][], 使得 a[][] 是 b[][] 的二维前缀和;公式:sum(L,R) = a(R) - a(L-1)2,(x1,y1), (x2,y2) 这一子矩阵中所有树的和该如何计算。等价于:b[x1,y1] += C,;公式:a[i] += a[i-1]核心操作:将 a[L ~ R] 全部加上C,;等价于:b[L] += C,初始化:a0 = 0;1,给定二维数组 a[][]?
2023-10-25 18:00:09 65
原创 分治思想(快速排序、归并排序及扩展)模板
由于各个子问题与原问题形式相同,只是规模较小而已,而当子问题划分得足够小时,就可以用简单的方法解决。1.分解:将要解决的问题分解为若干个规模较小、相互独立、与原问题形式相同的子问题。1.将整个区间一分为二( [l,r] -> [l,mid] [mid+1,r] )2.左边所有数left = tmp。3.合并:按原问题的要求,将子问题的解逐层合并构成原问题的解。2.递归排序 [l,mid] 和 [mid+1,r]思想:将一个较大的问题分解成若干个较小的问题,分而治之。
2023-10-15 18:35:31 96 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人