Henry学C++
文章平均质量分 90
Zhqi HUA
同济大学计算机系在读
展开
-
从⌈AcWing3752⌋看数位dp
给定一个整数K和一个长度为N的字符串S。已知,字符串S是由前K个小写字母组成。NSK由于满足条件的字符串数量可能很大,所以输出对10e97取模后的答案。第一行包含整数T,表示共有T组测试数据。每组数据第一行包含两个整数N和K。第二行包含一个长度为N的由小写字母组成的字符串S。每组数据输出一个结果,每个结果占一行。结果表示为Case #x: y,其中x为组别编号(从 1 开始),y为对1097取模后的答案。原创 2023-08-08 15:40:56 · 123 阅读 · 0 评论 -
贪心算法理论解
贪心算法,顾名思义就是贪得当前情况下的最优解(局部最优解),在某些情况下,每次的选择如果都依赖于前面的依次选择而不受后续操作的影响,局部最优解组成全局最优解(最优子结构),就可以用贪心法求解。...原创 2022-07-20 23:48:55 · 343 阅读 · 0 评论 -
排序与检索(归并/快排/二分)
说到排序,学过STL的应该知道sort/stable_sort(后者可以使相同值的元素位置不改变,所以更“稳定”)。如果使用现成的排序函数,当然可以用选择排序/冒泡排序,但是其运算复杂度是极高的(O(n^2)),相对高效的排序算法有归并排序/快速排序和二分查找。...原创 2022-07-19 23:31:52 · 198 阅读 · 0 评论 -
路径寻找问题(状态空间搜索)
ACM学习笔记DAY18路径寻找问题(状态空间搜索)和上一小节的回溯法有很大的不同回溯法有明确的限制条件,只需找出满足条件下的一个解/所有解,也就是说这个相对明确的限制条件是回溯法得以“终止深究而回溯”的判定标准;而状态空间搜索就要模糊的多,一般是要找到一个从初始状态到终止状态的最优路径,而不是像回溯法一样找一个符合要求的解,而且“最优”是同类间的比较而非某些限制条件所规定。...原创 2022-07-15 23:56:37 · 424 阅读 · 0 评论 -
简单枚举 / 枚举排列
来到《算法竞赛入门经典》第七章《暴力枚举法》,提出的是暴力“列举”出所有可能性并一一试验的方法。目录1 简单枚举2 枚举排列2.1 生成1~n的排列2.2 生成可重集的排列2.3 解答树2.4 下一个排列简单枚举就是枚举一些例如整数、子串的简单类型。但是如果拿到题目直接上手枚举,可能会导致枚举次数过多(甚至引起TLE)。因此在枚举前先要进行分析。比如例题 除法(Division,Uva 725):对于这道题大多数人的思路是直接对abcde和fghij进行0~9的枚举,但是这样会导致枚举次数过多。所以可以从两原创 2022-07-10 23:08:50 · 1612 阅读 · 0 评论 -
图论 Graph theory
DFS种子填充,BFS最短路树,拓补排序,欧拉回路,表达式树,有根树,最短路(Dijkstra / Bellman-ford / Floyd-Warshall),最小生成树(Kruskal),并查集和树不同,图(Graph)结构常用来存储逻辑关系为“多对多”的数据。原创 2022-07-07 23:37:57 · 551 阅读 · 1 评论 -
树和二叉树 (Tree & Binary Tree)
二叉树是一种特殊的数据结构,以树为基础,每个节点有且只有两个子节点。二叉树(Binary Tree)要么为空,要么由根节点(root)、左子树(left subtree)和右子树(right subtree)组成,而左右子树分别也都是二叉树;计算机内的树“倒置”——根在上,叶子在下。树和二叉树唯一的区别是每个节点不一定只有两棵子树 。不管是树还是二叉树,每个非根节点都有一个父节点(father)原创 2022-07-04 23:04:59 · 1032 阅读 · 0 评论 -
简单介绍C++大整数类
比如字符串是字符“1234”的组合,通过上述步骤var中得到的是真正int型1234。众所周知有符号的int型最大数据为2147483647(一共10位),所以取BASE为8位,且代码保证进入vector的数据都小于BASE,所以一定不会超限。,作用是将string类型的第一个元素值返回,达到的是一个将C++风格字符串转换为C风格的字符数组的效果。,表示取出原字符串中下标从start开始的长度为n的子字符串,返回值同样是string。同理,取WIDTH为8保证了每一次只录入长度≤8的数据,小于int。原创 2022-07-02 21:28:00 · 1840 阅读 · 0 评论 -
STL常用容器及算法介绍
STL指的是C++标准模板库(Standard Template Library),本文介绍常用算法及容器。原创 2022-06-29 17:25:22 · 1585 阅读 · 3 评论 -
C方式格式化输入输出(自行复习用)
格式字符分为两种基本格式字符和附加格式字符。d,i带符号的十进制形式整数(符号带-,整数不带+)o八进制无符号形式输出整数(不带前导0,因为只输出最基本的内容)x,X十六进制无符号形式输出整数(不带前导0x)u十进制无符号形式输出整数c字符形式输出(一个字符)s输出一个字符串f以小数形式输出浮点数e,E以指数形式输出浮点数(科学计数法)g,G在 f , e 中选择宽度较短的形式输出浮点数int m = 10;//输出:10 12 a 10。原创 2022-02-11 14:46:19 · 4052 阅读 · 0 评论 -
C/C++字符数组的输入输出方式详解(自行复习用)
字符是C/C++读入数据最主要的类型。本篇将介绍单个字符数组/多个字符串及二维数组的输入输出方式与相关函数。原创 2022-02-09 22:55:48 · 19356 阅读 · 2 评论 -
C/C++常用字符串处理函数详解 及 手动替代实现(自行复习用)
当字符串中有多个尾零,一般只处理到第一个尾零部分处理函数中,n超过截取串的总串长,就取整串返回值:strlen / strcmp 系列为整型数;strcpy / strcat 系列为字符数组(包括部分处理的衍生函数)原创 2022-02-08 17:39:49 · 1105 阅读 · 1 评论