![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法练习
文章平均质量分 79
武当王也123
这个作者很懒,什么都没留下…
展开
-
2019年第十届蓝桥杯省赛B组试题J — 灵能传输
在看题之前,可以对我们先看一下视频讲解更容易理解:https://www.bilibili.com/video/av47356111大概是5分钟开始到30分钟讲解;1.分析题目条件题中允许对高阶圣堂武士进行的变换操作是 a[ i - 1 ] += a[ i ],a[ i + 1 ] += a[ i ],a[ i ] = - a[ i ] ,i 属于 [2 , n-1]需要通过若干次变换操作,得到最小的 max{ | a[ i ] | }这个变换操作很复杂,不易求解。2.前缀和形式尝试转原创 2021-03-24 22:22:46 · 288 阅读 · 0 评论 -
POJ1011题解(dfs+减枝)
POJ1011题解(dfs+减枝,好理解一点)题意:n根不同长度的小棍,拼成若干长棍,要这些长棍的长度相等,并且小棍刚好用完,问拼成长棍的最短长度是?思路:首先考虑搜索的方向,最短,那肯定是从最短的情况开始递增,最短的可能情况那肯定就是最长的的单个棍子,所以首先把这些小棍排序,从大到小,并计算这些棍子总和,拼成的长棍的长度从最长的小棍开始搜索,搜索的过程也是判断,用总和除以这个长度得到应该拼成的长棍个数,递归搜索判断小棍之间能否相组合成满足这么多个长度相等的长棍。在搜索过程中 注意四个地方可以剪枝(效原创 2020-12-22 11:36:28 · 1319 阅读 · 1 评论 -
POJ3262 Protecting the Flowers
POJ3262 Protecting the Flowers(贪心的水题)Protecting the FlowersTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 3575 Accepted: 1465DescriptionFarmer John went to cut some wood and left N (2 ≤ N ≤ 100,000) cows eating the grass, as usual. When原创 2020-12-18 11:45:38 · 130 阅读 · 0 评论 -
P1219 [USACO1.5]八皇后 Checker Challenge
P1219 [USACO1.5]八皇后 Checker Challenge题目描述一个如下的 6 \times 66×6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。上面的布局可以用序列 2 4 6 1 3 5 来描述,第 ii 个数字表示在第 ii 行的相应位置有一个棋子,如下:行号 1 2 3 4 5 6列号 2 4 6 1 3 5这只是棋子放置的一个解。请编一个程序找出所有棋子放置的解。并把它们以上面的序原创 2020-12-15 11:55:04 · 252 阅读 · 0 评论 -
回文数(牛客练习赛71)题解
题目描述Froggy 分别给出 10 个数码的出现次数,你需要找到一个由这些数码组成的最小的数,满足:1. 这个数是回文的。2. 不能有前导 0。注:假设这个数字长度是 LL,那么这个数是回文的当且仅当对于任意的 i\in [1,L]i∈[1,L],第 ii 位的数码和第 L-i+1L−i+1 位的数码相同。快来帮帮 Froggy 吧!输入描述:一行 10 个自然数,分别表示数码 0\sim 90∼9 的出现次数。输出描述:如果无解,只输出 “-1”。(不含引号)否则,输出一个数表示最小原创 2020-10-10 10:58:24 · 1034 阅读 · 2 评论 -
[HNOI2004]宠物收养所(简单理解,用set写的)
题目描述最近,阿Q开了一间宠物收养所。收养所提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。每个领养者都希望领养到自己满意的宠物,阿Q根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领养的宠物的特点值a(a是一个正整数,a < 2^31),而他也给每个处在收养所的宠物一个特点值。这样他就能够很方便的处理整个领养宠物的过程了,宠物收养所总是会有两种情况发生:被遗弃的宠物过多或者是想要收养宠物的人太多,而宠物太少。1. 被遗弃的宠物过多时,假若到来一个领养者,这个领养者希原创 2020-10-06 20:06:34 · 290 阅读 · 0 评论 -
P2678 跳石头(简单题解)
题目背景一年一度的“跳石头”比赛又要开始了!题目描述这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 N 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走 M 块岩石(不能移走起点和终点的岩石)。输入格式第一行包含三个整数 L,N,M,原创 2020-10-05 17:29:02 · 608 阅读 · 0 评论 -
P1163 银行贷款(题目的题解,易理解)
P1163 银行贷款题目描述当一个人从银行贷款后,在一段时间内他(她)将不得不每月偿还固定的分期付款。这个问题要求计算出贷款者向银行支付的利率。假设利率按月累计。输入格式三个用空格隔开的正整数。第一个整数表示贷款的原值,第二个整数表示每月支付的分期付款金额,第三个整数表示分期付款还清贷款所需的总月数。输出格式一个实数,表示该贷款的月利率(用百分数表示),四舍五入精确到0.1%0.1%。输入输出样例输入1000 100 12输出2.9这道题是一道典型的二分题思路:这道题主要就是在那原创 2020-10-04 18:00:59 · 2780 阅读 · 2 评论 -
P1873 砍树(简单二分)
P1873 砍树题目描述伐木工人米尔科需要砍倒M米长的木材。这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林。不过,米尔科只被允许砍倒单行树木。米尔科的伐木机工作过程如下:米尔科设置一个高度参数H(米),伐木机升起一个巨大的锯片到高度H,并锯掉所有的树比H高的部分(当然,树木不高于H米的部分保持不变)。米尔科就行到树木被锯下的部分。例如,如果一行树的高度分别为20,15,10和17,米尔科把锯片升到15米的高度,切割后树木剩下的高度将是15,15,10和15,而米原创 2020-09-28 20:30:47 · 293 阅读 · 0 评论 -
P1102 A-B 数对(详解,可以过AC)
P1102 A-B 数对题目描述出题是一件痛苦的事情!相同的题目看多了也会有审美疲劳,于是我舍弃了大家所熟悉的 A+B Problem,改用 A-B 了哈哈!好吧,题目是这样的:给出一串数以及一个数字 CC,要求计算出所有 A - B = CA−B=C 的数对的个数(不同位置的数字一样的数对算不同的数对)。输入格式输入共两行。第一行,两个整数 N, CN,C。第二行,NN 个整数,作为要求处理的那串数。输出格式一行,表示该串数中包含的满足 A - B = CA−B=C 的数对的个数。输原创 2020-09-27 17:02:52 · 1699 阅读 · 0 评论 -
牛客练习赛70 B.拼凑(题解)
牛客练习赛70 B.拼凑(题解)题目描述牛牛还是很喜欢字符串"puleyaknoi"。牛牛有T个超长超长的字符串,不过这次他更懒了,他希望直接在字符串中看见他喜欢的字符串。如果一个子串中含有一个子序列是”puleyaknoi“,那么他就把这个子串称作好的子串。牛牛是个懒人,他不喜欢看太长的子串,那样他会觉着眼镜很累。你能帮他求出对于每个字符串,最短的好的子串的长度是多少吗?如果没有,请输出-1。输入描述:第一行一个T表示数据组数接下来T行每行一个字符串(保证字符串只含小写字母)输出描述原创 2020-09-26 18:40:29 · 240 阅读 · 0 评论 -
牛客练习赛70(A-重新排列 )
牛客练习赛70(A-重新排列 )这道题做了一晚上都没过,之后看到了大佬的代码,受益良多O(∩_∩)O题目描述牛牛有个很喜欢的字符串”puleyaknoi“。 牛牛有T个很长很长的字符串,他很喜欢把字符串中的子串(连续的某段)打乱,并且按照自己的喜好重新排列。 如果牛牛能把一段重新排列出他喜欢的字符串,他就会把这个子串称作:喜欢的子串。 牛牛是个懒人,他不喜欢对太长的子串进行重排,那样他会觉着眼镜很累。 你能帮他求出对于每个字符串,最短的喜欢的子串的长度是多少吗?原创 2020-09-25 23:24:00 · 467 阅读 · 0 评论 -
A计划 HDU - 2102(题解)
A计划 HDU - 2102(题解)可怜的公主在一次次被魔王掳走一次次被骑士们救回来之后,而今,不幸的她再一次面临生命的考验。魔王已经发出消息说将在T时刻吃掉公主,因为他听信谣言说吃公主的肉也能长生不老。年迈的国王正是心急如焚,告招天下勇士来拯救公主。不过公主早已习以为常,她深信智勇的骑士LJ肯定能将她救出。现据密探所报,公主被关在一个两层的迷宫里,迷宫的入口是S(0,0,0),公主的位置用P表示,时空传输机用#表示,墙用表示,平地用.表示。骑士们一进入时空传输机就会被转到另一层的相对位置,但如果被转到原创 2020-09-25 17:48:05 · 558 阅读 · 0 评论 -
(bfs)连连看(hdu1175),HDU 1253 胜利大逃亡(三维数组+bfs),HDU 1495 非常可乐(BFS+模拟)
连连看(hdu1175)“连连看”相信很多人都玩过。没玩过也没关系,下面我给大家介绍一下游戏规则:在一个棋盘中,放了很多的棋子。如果某两个相同的棋子,可以通过一条线连起来(这条线不能经过其它棋子),而且线的转折次数不超过两次,那么这两个棋子就可以在棋盘上消去。不好意思,由于我以前没有玩过连连看,咨询了同学的意见,连线不能从外面绕过去的,但事实上这是错的。现在已经酿成大祸,就只能将错就错了,连线不能从外围绕过。玩家鼠标先后点击两块棋子,试图将他们消去,然后游戏的后台判断这两个方格能不能消去。现在你的任务就原创 2020-09-24 20:43:33 · 134 阅读 · 0 评论 -
逃离迷宫 (HDU - 1728)题解
逃离迷宫 (HDU - 1728)题解给定一个m × n (m行, n列)的迷宫,迷宫中有两个位置,gloria想从迷宫的一个位置走到另外一个位置,当然迷宫中有些地方是空地,gloria可以穿越,有些地方是障碍,她必须绕行,从迷宫的一个位置,只能走到与它相邻的4个位置中,当然在行走过程中,gloria不能走到迷宫外面去。令人头痛的是,gloria是个没什么方向感的人,因此,她在行走过程中,不能转太多弯了,否则她会晕倒的。我们假定给定的两个位置都是空地,初始时,gloria所面向的方向未定,她可以选择4个方原创 2020-09-23 22:36:24 · 1194 阅读 · 0 评论 -
N皇后问题(HDU - 2553 )
N皇后问题(HDU - 2553 )在N*N的方格棋盘放置了N个皇后,使得它们不相互攻击(即任意2个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成45角的斜线上。你的任务是,对于给定的N,求出有多少种合法的放置方法。Input共有若干行,每行一个正整数N≤10,表示棋盘和皇后的数量;如果N=0,表示结束。Output共有若干行,每行一个正整数,表示对应输入行的皇后的不同放置数量。Sample Input1850Sample Output19210解题思路:回溯法+递原创 2020-09-22 19:16:51 · 325 阅读 · 0 评论 -
hdu 1242 Rescue (BFS+优先队列)
hdu 1242 Rescue (BFS+优先队列)题意一个地图中,给定起点和终点,上下左右走,每走一步花1个单位时间,遇到怪,需要杀死怪,额外花1个单位时间,求从起点到终点最少花多少分钟。解题思路:主要思路是广度优先搜索,但因为其中有怪,需要额外花时间,那么对于队列里面的每个节点(保存x,y坐标和当前所用时间),要想最少花时间,那么每次在队头取出的元素应该是队列里面所用时间最少的,所以应该用优先队列。(我最开始就就是一直没有优先队列,就一直答案不太对,看了别人的代码才用最优队列,才过)#inc原创 2020-09-21 21:42:39 · 245 阅读 · 0 评论 -
牛客练习赛69 A.时间复杂度 ,B - 划分
牛客练习赛69 A.时间复杂度题目描述DK 想出一道超级没有素质的题DK 给了你一个标准的时钟,初始时间在 12:00每分钟分针会顺时针转动 6°,而时针会顺时针转动 0.5°DK 想知道,t 分钟后,时针和分针的较小夹角的大小是多少由于这题超级没有素质,所以你需要将答案四舍五入到整数输入描述:第一行一个整数 n,表示数据组数第 2 ~ n+1行,每行一个整数 t,意义见题目描述输出描述:输出n行,每行一个整数,表示答案示例1输入2180360123输出90180原创 2020-09-18 21:00:51 · 155 阅读 · 0 评论 -
1086 背包问题 V2(多重背包模板题,好多人说正常写的都过不去,但我的过去了,可能是平台不一样,测试少吧运气运气)
1086 背包问题 V2(多重背包)有N种物品,每种物品的数量为C1,C2…Cn。从中任选若干件放在容量为W的背包里,每种物品的体积为W1,W2…Wn(Wi为整数),与之相对应的价值为P1,P2…Pn(Pi为整数)。求背包能够容纳的最大价值。输入第1行,2个整数,N和W中间用空格隔开。N为物品的种类,W为背包的容量。(1 <= N <= 100,1 <= W <= 50000)第2 - N + 1行,每行3个整数,Wi,Pi和Ci分别是物品体积、价值和数量。(1 <=原创 2020-09-17 16:24:51 · 111 阅读 · 0 评论 -
hdu 1881简单01背包(我是例子没看懂看了好久才看懂,有没有一起的O(∩_∩)O哈哈~)
毕业bgTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem Description每年毕业的季节都会有大量毕业生发起狂欢,好朋友们相约吃散伙饭,网络上称为“bg”。参加不同团体的bg会有不同的感觉,我们可以用一个非负整数为每个bg定义一个“快乐度”。现给定一个bg列表,上面列出每个bg的快乐度、持续长度、bg发起人的离校时间,请你安排一系列bg的时间使得自己可以获得最大的快原创 2020-09-17 15:51:29 · 123 阅读 · 0 评论 -
~scanf的~
~是按位取反scanf的返回值是输入值的个数如果没有输入值就是返回-1-1按位取反结果是0while(~scanf("%d", &n))就是当没有输入的时候退出循环原创 2020-09-15 21:24:12 · 106 阅读 · 0 评论 -
动态背包问题(HDU 2546 饭卡, 钱币兑换问题,Bone Collector题解)
题目描述Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem Description电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及原创 2020-09-14 22:30:19 · 190 阅读 · 0 评论 -
折线分割平面题解(HDU - 2050)
HDU 2050折线分割平面Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 17289 Accepted Submission(s): 11937Problem Description我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可原创 2020-09-11 15:08:26 · 299 阅读 · 0 评论 -
一只小蜜蜂 HDU2044
链接:http://acm.hdu.edu.cn/showproblem.php?pid=2044题目思路:观察题目看出,蜂房其实是连续的自然数,但是每个数字 N与 N-1、N-2两个数字相邻由于蜜蜂只能爬向右侧相邻的蜂房,所以移动方向可以是向右、向右下、向右上 (第三个容易想不到)要想到达 N,前一步必须到达 N-1或 N-2,那么到达 N的路线数 = 到 N-1的路线数 + 到 N-2的路线数,借此能联想到斐波那契数列:f(n)=f(n-1)+f(n-2)因为斐波那契数列增长迅速,因此定义数据原创 2020-09-11 11:41:27 · 80 阅读 · 0 评论 -
hdu1207(汉诺塔II)
首先讲一下汉诺塔的经典例子(推荐看-正月点灯笼的视频)一、经典汉诺塔有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动,设移动次数为F(n)设F[n]表示将n个盘从按规则从X柱移到Z柱至少需要移动的次数。当n=1时,F[n]=1;当n>1时,将移动盘之的过程分为三步:1)将A柱上的n-1个盘依靠Z柱移到Y柱上,这个需要F[n-1]步;2)将原创 2020-09-09 15:29:31 · 330 阅读 · 1 评论 -
Ignatius and the Princess III HDU - 1028的题解(两种解题)
递归函数的声明为int split(int n, int m),其中n为要划分的正整数,m是划分中最大的正整数。4 = 4;4 = 3 + 1;4 = 2 + 2;4 = 2 + 1 + 1;4 = 1 + 1 + 1 + 1;5=5;5=4+1;5=3+2;5=3+1+1;5=2+2+1;5=2+1+1+1;5=1+1+1+1+1;算法的基本思想如下:将计算过的值存储在备忘录(数组)中,下次使用时直接调用,不再重复计算;当n=0或者m=0时,存储0并返回;(因为没有存在划分的原创 2020-09-09 11:32:01 · 89 阅读 · 0 评论 -
母牛的故事 HDU - 2018和超级楼梯 HDU - 2041
超级楼梯 HDU - 2041有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?Input输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。Output对于每个测试实例,请输出不同走法的数量Sample Input223Sample Output12只需要举几个例子:1;12 :1 13: 1 2 1 1 14:1 1 1 11 1 21 2原创 2020-09-08 22:43:51 · 96 阅读 · 0 评论 -
大数-精度问题(N的阶乘 mod P,C++ 大数相乘算法,ACM 1715 大菲波数)
N的阶乘 mod P输入N和P(P为质数),求N! Mod P = ? (Mod 就是求模 %)例如:n = 10, P = 11,10! = 36288003628800 % 11 = 10Input两个数N,P,中间用空格隔开。(N < 10000, P < 10^9)Output输出N! mod P的结果。Sample Input10 11Sample Output10运用公式:ab%p=(a%p)(b%p)%p怎么推出来:(a+b)%m=(a%m+b%m)%m我原创 2020-09-05 17:26:51 · 568 阅读 · 0 评论 -
How many Fibs?(poj 2413)大数斐波那契的问题
http://acm.sdut.edu.cn:8080/vjudge/contest/view.action?cid=259#problem/CDescriptionRecall the definition of the Fibonacci numbers:f1 := 1f2 := 2fn := fn-1 + fn-2 (n >= 3)Given two numbers a and b, calculate how many Fibonacci numbers are in the ra原创 2020-09-03 16:59:59 · 165 阅读 · 0 评论 -
大明A+B(大数相加)细节出错,看了俩小时
HDU - 1753Problem Description话说,经过了漫长的一个多月,小明已经成长了许多,所以他改了一个名字叫“大明”。这时他已经不是那个只会做100以内加法的那个“小明”了,现在他甚至会任意长度的正小数的加法。现在,给你两个正的小数A和B,你的任务是代表大明计算出A+B的值。Input本题目包含多组测试数据,请处理到文件结束。每一组测试数据在一行里面包含两个长度不大于400的正小数A和B。Output请在一行里面输出输出A+B的值,请输出最简形式。详细要求请见Sample原创 2020-08-30 15:48:00 · 102 阅读 · 0 评论 -
ACM-大数加法
ACM-大数加法(用数组实现)这里的逆序的原因是加法的顺序要从各位开始的所以要从后往前算(个人理解)阶乘的逆序数组也是一样的#include <iostream>#include <algorithm>#include <cstring>using namespace std; typedef long long ll;int a[1010],b[1010],c[1010];int len;string s1,s2; int main(){ cin原创 2020-07-14 15:04:42 · 178 阅读 · 0 评论 -
ACM-N的阶乘(大数运算)
ACM-N的阶乘(大数运算)这个题暴力是肯定不行,算到20多就炸了,这个题给的范围到10000所以,这个题运用到大数运算我们用数组a来存储数据的每一位,用digit来表示当前的位数。 并初始化digit=1,a[0]=1;n=2 a[0]=2n=3 a[0]=6n=4 a[0]=4 a[1]=2n=5 a[0]=0 a[1]=2 a[2]=1…(num来表示进位的关系)看到以上的数据肯定能明白 关键是怎么实现的呢存储的数据是从个位开始存储的,只需要temp=a[0]*i+n原创 2020-07-13 22:52:50 · 355 阅读 · 0 评论