- 博客(40)
- 收藏
- 关注
原创 解决 ubuntu 终端中文输出乱码
7.再点终端(T)选项,设定字符编码,就有GB2312了,选择他就ok了。2.按F10或把鼠标放到终端的最上面,也就是调出终端的菜单栏;6.然后在弹出的窗口中选择简体中文编码就好了,GB2312。4.在选择 设定字符编码。5.选择 添加或删除。
2024-06-04 09:18:56
871
原创 蓝桥杯B组C++省赛——飞机降落(DFS)
:因为如果不判断的话,当u>num时(也就是找到飞机能正常降落的步骤),返回return 并不是直接退出,而是到了num-1层,然后相当于是递归回去,最后到了第0层,因为没有判断,所以直接接着往下走,返回false。也就是说,不加判断整个程序返回的是第0层的结果false。而我们之前一般的dfs之所以不加判断是因为在n>num的时候直接把结果输出来了,就算递归回去也不影响。
2024-04-04 23:18:56
2993
1
原创 [蓝桥杯 2019 省赛 AB] 完全二叉树的权值
思路:根据题意,我们不难发现:这道题的节点是按照树的层数进行输入的。而我们又知道,对于一个 x 层的完全二叉树,其每层的节点数除最后一层外均为 2^n−1,其中 n 为层数,且从 1 开始。那么,我们就可以一边输入一遍查找,每次判断一下输入的数是不是这一层的最后一个节点。如果有多个深度的权值和同为最大,请你输出其中最小的深度。对于所有评测用例,$1 \le N \le 10^5$,$0 \le |A_i| \le 10^5$。第二行包含 $N$ 个整数 $A_1,A_2, \cdots, A_N$。
2024-03-31 22:54:40
882
原创 迷宫—BFS 牛客
'W' 代表墙壁,是不能进入的位置,除了墙壁以外的地方都可以走。而这个地方的正解是你先去K处拿到钥匙,再去开门到终点,你会发现会重复走,所以就不是一个bfs能解决的了的事!而且,此迷宫的四周 (最上面的一行、最下面的一行、最左边的一列以及最右边的一列) 都会是墙壁。接下来的H行代表迷宫,每行有一个长度恰为W的字串,此字串只包含`'S'`, `'E'`, `'W'`, `'D '`, `'K'`, `'.'`这几种字元。迷宫的四周(最上面的一行、最下面的一行、最左边的一列以及最右边的一列) 都会是 'W'
2024-03-25 23:06:25
1710
1
原创 蓝桥杯B组C++省赛 全球变暖【bfs】
由于全球变暖导致了海面上升,科学家预测未来几十年,岛屿边缘一个像素的范围会被海水淹没。具体来说如果一块陆地像素与海洋相邻(上下左右四个相邻像素中有海洋),它就会被淹没。:此题采用bfs算法,找到每个岛屿的最大连通块,看是否四周都有陆地,有的话就不会被淹没,而被标记过得点就不用再以它为起点寻找连通块了。其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。请你计算:依照科学家的预测,照片中有多少岛屿会被完全淹没。照片保证第1行、第1列、第N行、第N列的像素都是海洋。以下N行N列代表一张海域照片。
2024-03-22 14:17:15
576
1
原创 蓝桥杯算法练习系统—金属采集(树形dp)
人类在火星上发现了一种新的金属!这些金属分布在一些奇怪的地方,不妨叫它节点好了。一些节点之间有道路相连,所有的节点和道路形成了一棵树。一共有 n 个节点,这些节点被编号为 1~n。人类将 k 个机器人送上了火星,目的是采集这些金属。这些机器人都被送到了一个指定的着落点, S 号节点。每个机器人在着落之后,必须沿着道路行走。当机器人到达一个节点时,它会采集这个节点蕴藏的所有金属矿。当机器人完成自己的任务之后,可以从任意一个节点返回地球。当然,回到地球的机器人就无法再到火星去了。
2024-03-21 20:56:03
547
原创 牛客—数字组合 (DP,01背包)
个数,可选可不选,求出有多少种方法可以让选的数的和刚好等于。对于这种选不选,凑数问题可以考虑。个数中找出若干数,他们和为。背包 ,看一下 数据范围。
2024-03-21 20:48:51
189
原创 蓝桥算法练习系统—卡勒沃夫之弱水路三千(提高型)(拓扑排序)
卡勒沃夫在这个不朽的夜话中搜集出了某人零散的历任女友资料,为了强迫某人将他出的题目的标程交出,现在卡勒沃夫需要一个能将这些零散信息整合起来的程序。在卡勒沃夫充满文学杀伤力的声音中,身处紫荆2号楼202B的四位远近高低各不同的室友纷纷回忆起了各自波澜起伏的过去,并对长在百草园,邻有百花谷的现状表达了各自的见解。在这里我们假装诅咒某人不会同时被两个或两个以上mm泡,某个mm抛弃了某人后不会再吃回头草,同时卡勒沃夫深邃的洞察力使得他收集到了充足的信息以确定某人女友的先后顺序。在小数据组中出现的人物不超过13个。
2024-03-21 20:43:00
432
原创 蓝桥杯算法练习系统—士兵排队问题 拓扑排序
有N个士兵(1≤N≤26),编号依次为A,B,C,…,队列训练时,指挥官要把一些士兵从高到矮一次排成一行,但现在指挥官不能直接获得每个人的身高信息,只能获得“P1比P2高”这样的比较结果(P1、P2∈A,B,C,…,Z,记为 P1>P2),如”A>B”表示A比B高。请编一程序,根据所得到的比较结果求出一种符合条件的排队方案。(注:比较结果中没有涉及的士兵不参加排队)
2024-03-17 12:56:16
447
原创 蓝桥杯算法练习系统—作物杂交【第十一届】【省赛】【C组】
我开始想到是用二维数组存储,定义一个足够大的数组int hybrid[2005][2005],存储所有杂交方 案,如A + B->C,转换为hybrid[A][B] = C. 但是使用这种存储方案的的话,我想不到该如何去得到一种种子的最短杂交时间,因为目标种子 是数组所存的值,我们需要的是通过目标种子的标号能够得到能够杂交出该种子的所有杂交方 案!第 4 至 K+3 行,每行包含 3 个整数 A,B,C,表示第 A 类作物和第 B 类作物杂交可以获得第 C 类作物的种子。作物杂交是作物栽培中重要的一步。
2024-03-16 18:09:12
614
1
原创 关于用max,min函数超时的情况—算法小Tips
在这个代码中,我在每个能被7整除的区间都进行了一次max判断,本来就是O(n2)的复杂度,可能有很多被7整除的情况,都要进入 if((sum[j]-sum[i-1])%7==0){今天在做这道题的时候,有了一点对一些题max函数min函数就会超时的思考,不是每道题都这样,但也可以是个做题小tips;很明显,我把没有比之前最大值大的数直接pass掉,不进入是否被7整除的区间判断,从而减小了处理次数。中进行max比较,从而加大了处理次数,这道题也是超时了。
2024-03-16 15:46:50
405
原创 Qt按回车键实现确定/发送按钮功能
/就会响应到上面函数第三个参数:ui->pushButton_send这个按键原本已有的按键响应函数,当光标在lineEdit上时,输入完毕直接按回车键(大/小都可以),请各位根据自己的槽函数名更改其中相应的代码。构造函数中,添加如下代码。//等于点击该按钮。
2024-03-15 22:50:01
1760
原创 蓝桥算法练习系统—密码锁 BFS爆搜
你获得了一个据说是古代玛雅人制作的箱子。你非常想打开箱子看看里面有什么东西,但是不幸的是,正如所有故事里一样,神秘的箱子出现的时候总是会挂着神秘的锁。根据你所搜集的情报,这个锁在上面存在某连续四个数字是“2012”的时候会自动打开。比如,如果原来有 5 个数字 02120,在一次交换以后你就可以得到 20120,01220,02210 或者 02102。把前两个数字交换以后,锁上的数字是 20120,其中存在连续四个数字2, 0, 1, 2,因此锁会打开。你只需要输出一个数字,即你至少需要的交换次数。
2024-03-14 17:53:11
472
原创 蓝桥算法练习系统—方格取数 DP
某人从图的左上角的A 点(1,1)出发,可以向下行走,也可以向右走,直到到达右下角的B点(N,N)。在走过的路上,他可以取走方格中的数(取走后的方格中将变为数字0)。输入的第一行为一个整数N(表示N*N的方格图),接下来的每行有三个整数,前两个表示位置,第三个数为该位置上所放的数。设有N*N的方格图(N<=10),我们将其中的某些方格中填入正整数,而其他的方格中则放入数字0。此人从A点到B 点共走两次,试找出2条这样的路径,使得取得的数之和为最大。只需输出一个整数,表示2条路径上取得的最大的和。
2024-03-14 15:12:04
377
原创 蓝桥杯练习系统—瓷砖铺放 dfs
首先看数据范围 n ≤10 很容易想到暴力搜索。题意就是给你一个数 让你求有多少种方法通过 只使用1 和 2来凑出。可以抽象为一棵树树顶是n。从 n开始往下走,每次都有两个分支一 个是减去1一个是减去2,走到底之后只有刚好减完了才算一种方法。有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法?输出一个数,代表所有不同的瓷砖铺放方法的总数。编程用递归的方法求解上述问题。只有一个数N,代表地板的长度。
2024-03-14 14:56:59
810
原创 蓝桥练习系统—K好数
如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。输出一个整数,表示答案对1000000007取模后的值。对于50%的数据,K
2024-03-14 14:50:21
358
原创 Nowcoder.兔子的区间密码 ——位运算性质 异或性质
比如给了区间[2,5] 那么就有2 3 4 5这些数,其中 2 xor 5=7最大 所以密码就是7。兔子立马解开了密室的门,发现门外还是一个门,而且数字越来越大,兔子没有办法了,所以来求助你。可爱的兔子摸索了好久,发现密室里的两个数字是表示的是一个区间[L,R]而密码是这个区间中任意选择两个(可以相同的)整数后异或的最大值。00011=00100-1 小性质。只有解开密码,才能够出去。
2024-03-12 23:34:14
569
原创 AcWing 830. 单调栈 运用c++STL stack容器 实现单调栈
给定一个长度为 N 的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出 −1。
2024-03-05 21:27:26
411
原创 一些算法小技巧tips-提醒
string->int:int stoi(string str) int->string: string to_string(int i) 同理有stof,atoi(char*->int)if(find(vc.begin(), vc.end(), 0)!=vc.end());//序列式容器可以通过algorithm库中find函数查找,未找到返回尾迭代器。// string类成员函数:未找到返回string::npos。主要由最近刷L1和L2的天梯赛往年真题得出的小技巧汇总。
2024-03-05 19:56:59
390
原创 经典树形DP—小红树上染色问题
当以x为父亲节点的树不染红色的方案数是--子树i染红色的方案*自身(一直更新自身所延伸的子树的方案数) 乘法原理。当以x为父亲节点的树染红色的方案数是--子树i染红色的方案*自身+子树i不染红色的方案*自身。很显然这是一个树形DP问题。直接先后序遍历整棵树。
2024-03-04 23:33:23
625
1
原创 关于C++ STL中的find()函数和count()函数的复杂度
因为容器STL采用是map和set内部是红黑树实现的。因此map和set内部的find函数查找时间复杂度是O(logn).vector内部没有find函数,采用的是algorithm的find函数。map::find 和 set::find。是线性的,最坏情况是O(n).能用find就先用find吧。朴素的查找方法,O(n).count函数的复杂度。
2024-02-18 22:51:15
1580
原创 AcWIng 901 滑雪 记忆化搜索
给定一个 R 行 C 列的矩阵,表示一个矩形网格滑雪场。矩阵中第 i 行第 j 列的点表示滑雪场的第 i 行第 j 列区域的高度。一个人从滑雪场中的某个区域内出发,每次可以向上下左右任意一个方向滑动一个单位距离。当然,一个人能够滑动到某相邻区域的前提是该区域的高度低于自己目前所在区域的高度。在给定矩阵中,一条可行的滑行轨迹为 24−17−2−1。在给定矩阵中,最长的滑行轨迹为 25−24−23−…−3−2−1,沿途共经过 25 个区域。
2024-01-30 18:14:13
402
1
原创 可丽的难题 可丽的数学 (题解)
来源:牛客网现在可丽输入一个长度为 n 的 01 串表示一个二进制数。如果这个数可以被 3 整除,就输出 YES,否则就输出 NO。
2024-01-30 17:58:32
411
1
原创 函数指针与回调函数 初学
则pro=func;其中函数名传的是函数的地址,传入pro函数指针中。假如已经有一个函数void func(int a,string s);形如 void (*pro)(int,string);能完成和func函数内一样的功能。函数指针适用场景——回调函数;再调用pro(a,s);
2023-12-10 16:18:55
326
原创 sizeof() ,strlen(), length() ,size() 函数
*a.length()**计算字符串(string)变量的函数 ,字符数组不可以 ,计算长度也不包括“\0”适用范围:(1)字符串(2)字符、整型等各种数组,(3)int、flooat类型占的字节数。关于siazeof(a)、strlen(a)、a.length()、a.size()**sizeof()**返回一个对象或者类型所占的内存字节数(获取内存空间的大小)a.size()是string类定义的一个返回字符串大小的函数。适用范围:(1)字符串%s(2)字符数组。注意:计算长度不包括“\0”
2023-12-10 15:26:27
351
原创 洛谷P1824 进击的奶牛
Farmer John 建造了一个有 $N$($2 \leq N \leq 10 ^ 5$) 个隔间的牛棚,这些隔间分布在一条直线上,坐标是 $x _ 1, x _ 2, \cdots, x _ N$($0 \leq x _ i \leq 10 ^ 9$)。他的 $C$($2 \leq C \leq N$)头牛不满于隔间的位置分布,它们为牛棚里其他的牛的存在而愤怒。第 $2 \sim N+1$ 行:每行一个整数,表示每个隔间的坐标。第 $1$ 行:两个用空格隔开的数字 $N$ 和 $C$。
2023-08-22 11:24:47
63
1
原创 杂项111111111
在这个示例中,循环将遍历字符串 "Hello" 中的字符,并逐个打印,直到遇到空字符。for(auto [key,val]:v)cout
2023-08-21 15:46:40
53
1
原创 AcWing 4122. 字符串转换
定一个由小写字母构成的字符串 S。再给定一个由若干个的小写字母按排序构成的字符串 FF。现在,你可以对字符串 S 进行字符转换操作。每次选中其中一个字符(即某个小写字母),将其转换为一个按照字母顺序与其相邻(上一个或下一个)的小写字母。例如,c 可以转换为 b 或 d。额外的,我们将按照循环顺序考虑字母,即我们认为 a 的上一个字母为z,z 的下一个字母为 a。请问,至少需要进行多少次操作,可以使得字符串 S 中的每个字母都出现在字符串 FF 中。
2023-07-13 16:30:22
116
1
原创 近期的小方法以及回顾
符号 & 表明 x 是一个引用变量,能让接下来的代码能够修改数组的内容,而第一种语法不能。回文字符串的话直接用reverse(s.begin(),s.end())函数判断即可。是C++ STL(标准模板库)中容器的一个成员函数,它用于删除容器的最后一个元素。使用unique之后,数组是=1 2 3 4 5 7 8 9(最后三个是随机数组)只能用于那些支持在尾部删除元素的容器。要删除这些容器中的元素,需要使用特定的成员函数,如。这些支持在尾部删除元素的 STL 容器。而unique函数返回的是7的下标。
2023-07-07 13:51:29
50
1
原创 数字序列1
来源:牛客网给定一个长度为 nnn 序列 {a}\{a\}{a},对序列 {a}\{a\}{a} 进行任意排列之后得到新的数组 {b}\{b\}{b},求满足 i∈[1,n],ai≠bii \in [1,n],a_i \neq b_ii∈[1,n],ai=bi 的 iii 最多可能个数。
2023-07-06 15:30:57
100
1
原创 近期的方法与注意事项
编写程序,读入一行英文(只包含字母和空格,单词间以单个空格分隔),将所有单词的顺序倒排并输出,依然以单个空格分隔。所以,它们的区别在于它们的类型和用法不同。本题可以把字符串转化成数字(秒),转化的方式可以通过遍历,用强制类型转换,每。可以读入字符串中的空格。不可以读入字符串中的空格 ,遇到空格或者回车就结束。如果你第一个输入的就是空格回车和换行那么cin是会自动忽略并等待输入的。需要注意的是,cin读一个字符串的时候是不读空格,回车和换行的。的缩写,意思是个人的最好成绩。秒),中间用空格隔开。
2023-05-23 18:57:49
56
1
原创 最近的方法与注意事项
run方法中的代码就是线程要运行的代码,运行完毕以后,就不会再次运行,其方法本身并不是无限循环的。而while(true)是为了让run方法中的代码不断重复的运行,也就是让线程不停的运行,便于查看效果。当然,while(true)并不是run()方法必须的,如果线程的run()部分只需要执行一次,则不需要嵌套while(true)循环。由于是比较整数的大小,所以可以通过比较字符串的大小,高位数字的大小可以直接放在前面,又如:n=4时,4个整数7,13,4,246联接成的最大整数为:7424613。
2023-05-16 21:40:56
53
1
原创 最近刷题学到的一些常用的小方法
设有一数int N;即可完成。如果要求同时要求输入一行n,第二行是再输入n个数,并且题目思路要用循环解决如果是输入一个数,后面再连续输入数,不同行依旧如此}即可!!帮助牛牛计算 1+(1+2)+(1+2+3)+...+(1+2+3+...+n)如图中程序所示,如果sum2在最前面赋初值,那么在第二个for循环中,sum2会一直累加前面累加过的值,若输入n=4;则结果变成了1+((1)+1+2)+(1+(1+2)+1+2+3)+(1+(1+2)+(1+2+3)+1+2+3+4)=35。
2023-04-11 22:51:01
74
2
原创 作为菜鸡在近期c语言学习中一些 忘记的语法 和 以前不知道的语法
printf("不大于它的最大整数为: %d\n", floor_num);printf("不小于它的最小整数为: %d\n", ceil_num);floor是地板的意思,所以floor函数是取比小数小的最接近这个小数的整数,如。%8d是要输出的整数占用8个字符,如果输出123,则会在123前面增加5个空格。ceil是天花板的意思,所以ceil函数是取比小数大的最接近这个小数的整数,如。如果输出的整数占用8个字符以上,则%8d的限制不起作用,会原样输出这个数。例如,要输出'4 % 2 = 0',则。
2023-04-01 21:11:51
152
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人