C++ 算法
文章平均质量分 58
算法是 C++ 非常重要的一部分
旺旺摇摇摇
这个作者很懒,什么都没留下…
展开
-
最短路径SPFA算法
讲解视频1讲解视频2画图工具。原创 2023-08-10 15:21:34 · 205 阅读 · 2 评论 -
农场派对 C++
deque,即双端队列(double ended queue),是一种可以在两端扩展或收缩的序列化容器。deque 是C++ 标准模板库的一部分,想要使用 deque,需要在程序中包含头文件 deque。原创 2023-08-10 11:29:05 · 272 阅读 · 1 评论 -
贪吃蛇(C++小游戏)
经过多次修改,bug应该也许大概差不多没有了。让你体验转圈的乐趣!原创 2023-08-08 11:26:59 · 138 阅读 · 1 评论 -
黑白棋游戏 c++
黑白棋游戏的棋盘由4×4方格阵列构成。棋盘的每一方格中放有1枚棋子,共有8枚白棋子和8枚黑棋子。这16枚棋子的每一种放置方案都构成一个游戏状态。在棋盘上拥有1条公共边的2个方格称为相邻方格。一个方格最多可有4个相邻方格。在玩黑白棋游戏时,每一步可将任何2个相邻方格中棋子互换位置。对于给定的初始游戏状态和目标游戏状态,编程计算从初始游戏状态变化到目标游戏状态的最短着棋序列。前四行是初始游戏状态,后四行是目标游戏状态。每行4个数分别表示该行放置的棋子颜色。输出文件,一行,是着棋步数n。原创 2023-08-04 16:49:41 · 426 阅读 · 1 评论 -
完美交换 C++
每一次交换都会形成“交换环”,而每个交换环最多只需要连个时间单位就能到正确的位置(数学,自己推理,多举例),所以只要计算是否有长度大于或等于2的交换环,若有输出2,若没有,输出1,若全部都是同一个数,输出0。题目中说的是一个人在一个时间单位中只能交换一次,而不是一个时间单位中只能有两个人互相交换。第2到N+1行:每行一个数Mi,表示从位置1到位置N,每个人的所拿礼物的完美值。注释掉的是检查的部分,可不看。第一行:N 表示游戏人数。第二行:最小交换所需时间。(别掉坑,要认真审题)原创 2023-08-04 16:40:58 · 678 阅读 · 3 评论 -
Eeny Meeny Moo
为了解决这个问题,德国的Ulm大学开发了一份意外事故计划,当发生意外事故的时候,先将第1个城市停电,然后再将第m+1个城市停电。在访问的过程中,对于已经停过电的城市不考虑,剩下的没停过电的城市每隔m个就要停一次电。例如:如果 n=17 并且 m=5,网络将按如下顺序断开:[1,6,11,16,5,12,2,9,17,10,4,15,14,3,8,13,7].你的任务是写一个程序,读入城市的数目,然后求出m值,m值是使第2个城市刚好在最后才被停电的最小整数。对于输入的每一行,输出满足上述条件的最小m值。原创 2023-08-04 16:22:07 · 65 阅读 · 0 评论 -
找礼物 C++
新年到了,突然间,就在那美丽的一霎那,你好友和你(K个人)的周围满是礼物,你发扬你帅气的风格,让你的好友先拿,但是每个人只能拿当前离自己最近的礼物[当然如果有并列的多个礼物离你的距离相等(精确到小数后四位,所有运算均为去尾),这些礼物就都属于这个人]。现在告诉你每个礼物的坐标,还有每个礼物是谁送的。要你找出你的礼物离你多远,你能拿到多少礼物,这些礼物是谁送的。输入时求出距离(dis),根据dis和姓名进行排序,然后模拟每个人可以拿到的礼物,最后输出可以得到的礼物的距离和数量,并循环输出送礼物的人名。原创 2023-08-04 16:11:46 · 200 阅读 · 0 评论 -
Integer Cards
用优先队列(小根堆)记录n个数,然后循环输入b和c,如果比最小的大,把top换掉,若比最小的小则进行下一次输入,因为把这个c换进去就得不到最小的总和了。由于要尽量把大的换进去,所以我们可以先输入完全部的数据,对b和c进行排序(按c的从大到小排序)然后大的换小的,当数据已经小于或等于所有数时,就退出,因为这是已经求出了最大值。用C_j替换写在每个选定卡片上的整数。求写在N张卡片上的整数在M次运算后的最大可能和。在第i张卡上,写入一个整数A_i。是人类的都知道,要尽量先把大的换进去。贪心算法,大的换小的。原创 2023-08-03 17:00:23 · 92 阅读 · 0 评论 -
抄本 c++
对于该序列的某个片段[al,al+1,。,ar]若该片段的首项为该片段中的最小值,末项为该片段中的最大值,则我们称这个片段是个正确的片段。给一个正整数数列,若数列首项为数列中所有数的最小值,末项为数列中的最大值,则我们称这是个正确的数列。例如,序列[1,3,2,4]和[1,2,1,2]是正确的,但序列[1,3,2]不是。对于给定的序列,请求出该序列至少需要被分成多少段,才能使得每个片段均为正确的片段。序列[2,3,1,1,5,1]可以分为三个正确的片段:[2,3]和[1,1,5]和[1]……原创 2023-08-03 11:15:40 · 93 阅读 · 0 评论 -
Blah数集
由于x>1,所以一定x原创 2023-08-02 15:53:03 · 464 阅读 · 0 评论 -
Sramoc问题 c++
K-1组成的自然数中能被M整除的最小数。给定 K、M,求Sramoc ( K,M )。例如 K=2,M=7的时候,Sramoc( 2 , 7 ) = 1001。一行,为两个整数K、M,两数之间有一个空格,满足2原创 2023-08-02 15:41:33 · 319 阅读 · 0 评论 -
排序工作量
那么我们再来看一下逆序对是怎么求的,在第三步之后,我们需要比较 4 和 5 的大小,因为 4 小于 5 ,又因为左半部分数组是有序(递增)的,所以左半部分剩下的所有元素均大于 4 ,也就是说左半部分剩下的所有数均可以和 4 构成逆序对,左半部分剩下元素 5 7 9 三个元素,所以对 4 而言,有三个逆序对(5,4)(7,4)(9,4),其余同理…3] = 2),说明还有一个数我们没有找到,我们是对区间 [1, 3] 求和,所以还有一个数应该比 3 大并且在 3 之前出现,所以这是一个逆序对,其他同理…原创 2023-08-01 16:21:51 · 129 阅读 · 1 评论 -
Nearest Common Ancestors(最近公共祖先)
一个结点x是一个结点y的祖先当且仅当结点x是在根和结点y的路径上。例如,结点4是结点16的祖先,结点10也是结点16的祖先。在其它例子中,结点2和3的最近公共祖先结点10,结点6和13的最近公共祖先是结点8,结点4和12的最近公共祖先是结点4。在最后的一个例子中,如果y是z的一个祖先,那么y和z的最近公共祖先是y。一个结点x被称做结点y和z的最近公共祖先当且仅当x是y和z的一个公共祖先且在y和z的所有公共祖先中是最近的。所以,结点16和7的最近公共祖先是结点4,因为结点4比结点8更接近结点16和7。原创 2023-06-02 21:01:49 · 102 阅读 · 0 评论 -
Candy Distribution 分糖果
Time limit : 2sec / Memory limit : 1024MBThere are N boxes arranged in a row from left to right. The i-th box from the left contains Ai candies.You will take out the candies from some consecutive boxes and distribute them evenly to M children.Such being th原创 2023-06-02 20:49:30 · 112 阅读 · 0 评论 -
Distance Queries(距离查询)
农民约翰的奶牛拒绝在跑他的马拉松,因为他选择的路径太长不适合奶牛们悠闲的生活方式。第二至M+1行,每行包括三个整数F1,F2,L和一个字符D,表示农场F1和F2之间的路径长度为L,D为’N’, ‘E’, ‘S’, 'W’中的一个,表示从F1到F2的方向。第一行包括两个整数N,M,N (2原创 2023-06-02 20:21:53 · 155 阅读 · 0 评论 -
石头剪刀布
题目描述石头剪刀布是常见的猜拳游戏。石头胜剪刀,剪刀胜布,布胜石头。如果两个人出拳一样,则不分胜负。一天,小A和小B正好在玩石头剪刀布。已知他们的出拳都是有周期性规律的,比如:“石头-布-石头-剪刀-石头-布-石头-剪刀……”,就是以“石头-布-石头-剪刀”为周期不断循环的。请问,小A和小B比了N轮之后,谁赢的轮数多?输入输出格式输入格式:输入包含三行。第一行包含三个整数:N,NA,NB,分别表示比了N轮,小A出拳的周期长度,小B出拳的周期长度。第二行包含NA个整数,表示小A出拳的规律。原创 2023-03-05 16:05:15 · 109 阅读 · 0 评论 -
删数问题 NOI994(贪心)
为了尽可能逼近目标,我们选取的贪心策略为:每一步总是选择一个使剩下的数最小的数字删去,即按高位到低位的顺序搜索,若各位数字递增,则删除最后一个数字;重复以上过程s次为止,剩下的数字串便是问题的解了。输入一个高精度的正整数N,去掉其中任意S个数字后剩下的数字按原左右次序组成一个新的正整数。编程对给定的N和S,寻找一种方案使得剩下的数字组成的新数最小。有些人说用char也可以,我认为不够方便,因为char没有计算机本身具有的删除的函数。每一次都要删掉第一个升序数列的最高峰,才能保证最后删完的数是最小的。....原创 2022-08-04 14:50:53 · 498 阅读 · 0 评论 -
汉诺塔 C++(递归实现)
【问题描述】有三根柱A、B、C,在A柱上有n块盘片,所有盘片都是大片在下面,小片放在大片上面。并依次编排好序号。先要将A上的n块盘片移动到C柱上,每次只能移动一片,而且在同一根柱子上必须保持上面的盘片比下面的盘片小,请输出移动方法。【输入说明】仅一个整数n(n≤20),表示A柱上的盘片数。【输出说明】输出盘片的移动步骤。【输入样例】3【输出样例】A-1-CA-2-BC-1-BA-3-CB-1-AB-2-CA-1-C本题是典型的递归程序设计题首先,我原创 2022-01-15 09:47:08 · 569 阅读 · 0 评论 -
小数背包问题
有一个背包,背包容量是M(0原创 2023-01-14 16:19:26 · 328 阅读 · 0 评论 -
完全背包问题
设有n种物品,每种物品有一个重量及一个价值。但每种物品的数量是无限的,同时有一个背包,最大载重量为M,今从n种物品中选取若干件(同一种物品可以多次选取),使其重量的和小于等于M,而价值的和为最大。第一行:两个整数,M(背包容量,M原创 2023-01-14 16:07:46 · 57 阅读 · 0 评论 -
生日礼物(01背包DP)
例如,有4个礼物:(3,5),(7,11),(8,8),(2,9),可以把3,7,8,2分配给妹妹,其余的给哥哥,价值差为:5+11+8+9-3-7-8-2=13;一对双胞胎兄妹同一天过生日,这一天,他们的朋友给他俩送来了礼物,每个人送的礼物都是2本书,一本给哥哥,一本给妹妹,但没有说明哪本是给妹妹的,哪本是给哥哥的,每本书都有自己的价值,为了避免冲突,让你来分配,要求使得两人所获得书本的价值和之间的差距尽可能的小。把每两本书的差价作为一件新的物品,s记录所有差价和,然后对sum的一半跑01背包。原创 2023-01-14 16:27:08 · 193 阅读 · 0 评论 -
分解质因数 C++
题目:分解质因数题目描述把一个合数分解成若干个质因数乘积的形式(即求质数的过程)叫做分解质因数。分解质因数(也称分解素因数)只针对合数。输入输出格式输入格式: 一个正整数n。输出格式: 将n分解成质因数乘积的形式输出。输入输出样例输入样例:36输出样例:36=2*2*3*3提示信息【数据范围】对于所有数据,2≤n≤20000。这道题最重要的是要明白不用判断是否是质数,因为若质数n未被整除,那么n的倍数(合数)一定也不能被整除,所以我们只要原创 2022-05-04 16:17:25 · 2355 阅读 · 0 评论 -
文件输入输出(详细介绍)+奖学金(例子)
比赛常用文件输入输出,有些人就会问:“什么是文件输入输出?”“文件输入输出怎么写?”其实文件件输入输出非常简单,一般分为两种。而最常用的莫过于小编讲的这种。此方式需用到头文件:结尾一定要写return 0,不写易出错!!!在此,给大家做一个示范。...原创 2022-08-03 14:00:58 · 145 阅读 · 1 评论 -
subset问题
CODE。原创 2023-01-14 16:33:51 · 302 阅读 · 0 评论 -
数字染色(贪心)
给出一个长度为n的序列a1,a2,a3,……,an,要求你使用最少的颜色对每个数染色。对于任何颜色都需要满足:染成该颜色的数都能被染成该颜色的最小数整除。每种颜色可以使用一次或多次。染成同一种颜色的所有元素不需要是连续的。请求出最少需要的颜色数量。比如[40,60,10]可以被染成同一种颜色,因为它们都可以被10整除。第二行n个正整数,表示序列的每个元素。第一行一个正整数n,表示序列长度。一个整数,表示至少需要的颜色数量。......原创 2022-08-08 14:47:45 · 883 阅读 · 0 评论 -
流感传染 C++ 递推
题目:流感传染每题提交次数限制: 无限制题目描述有一批易感人群住在网格状的宿舍区内,宿舍区为n*n的矩阵,每个格点为一个房间,房间里可能住人,也可能空着。在第一天,有些房间里的人得了流感,以后每天,得流感的人会使其邻居传染上流感,(已经得病的不变),空房间不会传染。请输出第m天得流感的人数。输入输出格式输入格式:第一行一个数字n,n不超过100,表示有n*n的宿舍房间。接下来的n行,每行n个字符,’.’表示第一天该房间住着健康的人,’#’表示该房间空着,’@’表示第一天该房原创 2022-05-04 16:03:17 · 1478 阅读 · 9 评论 -
rockers问题
你刚刚继承了流行的“破锣摇滚”乐队录制的尚未发表的N(1原创 2023-01-14 16:40:43 · 86 阅读 · 0 评论 -
维修栅栏——动态规划
题目描述小z最近当上了农场主!不过,还没有来得及庆祝,一件棘手的问题就摆在了小z的面前。农场的栅栏,由于年久失修,出现了多处破损。栅栏是由n块木板组成的,每块木板可能已经损坏也可能没有损坏。小z知道,维修连续m个木板(这m个木板不一定都是损坏的)的费用是sqrt(m)。可是,怎样设计方案才能使总费用最低呢?小z想请你帮帮。输入输出格式输入格式:输入文件的第一行包含一个整数n,表示栅栏的长度。第二行包含n个由空格分开的整数(长整型范围内)。原创 2023-03-15 16:52:36 · 230 阅读 · 2 评论 -
nuggets问题
看,”奶牛们说,“如果你只用一次能装3块、6块或者10块的三种包装盒包装麦香牛块,你就不可能满足一次只想买1、2、4、5、7、8、11、14或者17块麦香牛块的顾客了。劣质的包装意味着劣质的产品。给出包装盒的种类数N(1原创 2023-01-14 16:48:45 · 74 阅读 · 0 评论