📅 2021-05-27发表🕰️ 2025-06-15更新📁 学习记录⌛ 2 分钟读完 (大约277个字)Qt八数码问题,人工智能课的任务罢了用Qt做的八数码问题,人工智能课的作业罢了学习了A*搜索,启发式搜索效率比之前学的盲目搜索高多了。但是怎么构造启发函数还是很难的,需要一点数学基础,当然也要脑子好。 这次的启发式函数f(x) = g(x) + h(x) ,其中g(x)是当前搜索的深度,这就像是dijkstra了,总是能保证在当前深度上是最优的。h(x)是用曼哈顿距离表示当前状态与目标状态的位置坐标差的和,因此这部分就可以让搜索的过程有预测,可以用贪心的方式进行选择。达到目标状态时,g(x)为深度而h(x)为0,因此通过前一部分可以保证此时是最优解。 💡 阅读更多
📅 2021-04-21发表🕰️ 2025-06-15更新📁 刷题笔记⌛ 3 分钟读完 (大约379个字)洛谷P2404 自然数的拆分问题洛谷 P2404 自然数的拆分问题 题目描述任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。现在给你一个自然数n,要求你求出n的拆分成一些数字的和。每个拆分后的序列中的数字从小到大排序。然后你需要输出这些序列,其中字典序小的序列需要优先输出。 输入格式输入:待拆分的自然数n。 输出格式输出:若干数的加法式子。 输入输出样例输入 #1 17 输出 #1 12345678910111213141+1+1+1+1+1+11+1+1+1+1+21+1+1+1+31+1+1+2+21+1+1+41+1+2+31+1+51+2+2+21+2+41+3+31+62+2+32+53+4 说明/提示用回溯做。。。。 n\le 8n≤8 💡 阅读更多
📅 2021-04-21发表🕰️ 2025-06-15更新📁 刷题笔记⌛ 5 分钟读完 (大约699个字)洛谷P1160 队列安排洛谷 P1160 队列安排 题目描述一个学校里老师要将班上NN个同学排成一列,同学被编号为1\sim N1∼N,他采取如下的方法: 先将11号同学安排进队列,这时队列中只有他一个人; 2-N2−N号同学依次入列,编号为i的同学入列方式为:老师指定编号为i的同学站在编号为1\sim (i -1)1∼(i−1)中某位同学(即之前已经入列的同学)的左边或右边; 从队列中去掉M(M<N)M(M<N)个同学,其他同学位置顺序不变。 在所有同学按照上述方法队列排列完毕后,老师想知道从左到右所有同学的编号。 输入格式第11行为一个正整数NN,表示了有NN个同学。 第2-N2−N行,第ii行包含两个整数k,pk,p,其中kk为小于ii的正整数,pp为00或者11。若pp为00,则表示将ii号同学插入到kk号同学的左边,pp为11则表示插入到右边。 第N+1N+1行为一个正整数MM,表示去掉的同学数目。 接下来MM行,每行一个正整数xx,表示将xx号同学从队列中移去,如果xx号同学已经不在队列中则忽略这一条指令。 输出格式11行,包含最多NN个空格隔开的正整数,表示了队列从左到右所有同学的编号,行末换行且无空格。 输入输出样例输入 #1复制 123456741 02 11 0233 输出 #1复制 12 4 1 说明/提示样例解释: 将同学22插入至同学11左边,此时队列为: 2 121 将同学33插入至同学22右边,此时队列为: 2 3 1231 将同学44插入至同学11左边,此时队列为: 2 3 4 12341 将同学33从队列中移出,此时队列为: 2 4 1241 同学33已经不在队列中,忽略最后一条指令 最终队列: 2 4 1241💡 阅读更多
📅 2021-04-12发表🕰️ 2025-06-15更新📁 刷题笔记⌛ 10 分钟读完 (大约1444个字)洛谷P2168 荷马史诗 洛谷P2168 荷马史诗 题目背景追逐影子的人,自己就是影子 ——荷马 题目描述Allison 最近迷上了文学。她喜欢在一个慵懒的午后,细细地品上一杯卡布奇诺,静静地阅读她爱不释手的《荷马史诗》。但是由《奥德赛》和《伊利亚特》 组成的鸿篇巨制《荷马史诗》实在是太长了,Allison 想通过一种编码方式使得它变得短一些。 一部《荷马史诗》中有 nn 种不同的单词,从 11 到 nn 进行编号。其中第 ii 种单词出现的总次数为 w_iw**i。Allison 想要用 kk 进制串 s_is**i 来替换第 ii 种单词,使得其满足如下要求: 对于任意的 1\leq i, j\leq n1≤i,j≤n ,i\ne ji=j ,都有:s_is**i 不是 s_js**j 的前缀。 现在 Allison 想要知道,如何选择 s_is**i,才能使替换以后得到的新的《荷马史诗》长度最小。在确保总长度最小的情况下,Allison 还想知道最长的 s_is**i 的最短长度是多少? 一个字符串被称为 kk 进制字符串,当且仅当它的每个字符是 00 到 k-1k−1 之间(包括 00 和 k-1k−1 )的整数。 字符串 str1str1 被称为字符串 str2str2 的前缀,当且仅当:存在 1 \leq t\leq m1≤t≤m ,使得 str1 = str2[1..t]str1=str2[1..t]。其中,mm 是字符串 str2str2 的长度,str2[1..t]str2[1..t] 表示 str2str2 的前 tt 个字符组成的字符串。 输入格式输入的第 11 行包含 22 个正整数 n, kn,k ,中间用单个空格隔开,表示共有 nn 种单词,需要使用 kk 进制字符串进行替换。 接下来 nn 行,第 i + 1i+1 行包含 11 个非负整数w_iw**i ,表示第 ii 种单词的出现次数。 输出格式输出包括 22 行。 第 11 行输出 11 个整数,为《荷马史诗》经过重新编码以后的最短长度。 第 22 行输出 11 个整数,为保证最短总长度的情况下,最长字符串 s_is**i 的最短长度。💡 阅读更多
📅 2021-04-12发表🕰️ 2025-06-15更新📁 刷题笔记⌛ 6 分钟读完 (大约840个字)洛谷P1072 Hankson的趣味题洛谷P1072 Hankson的趣味题 题目描述Hanks 博士是 BT(Bio-Tech,生物技术) 领域的知名专家,他的儿子名叫 Hankson。现在,刚刚放学回家的 Hankson 正在思考一个有趣的问题。 今天在课堂上,老师讲解了如何求两个正整数 c_1c1 和 c_2c2 的最大公约数和最小公倍数。现在 Hankson 认为自己已经熟练地掌握了这些知识,他开始思考一个“求公约数”和“求公倍数”之类问题的“逆问题”,这个问题是这样的:已知正整数a_0,a_1,b_0,b_1a0,a1,b0,b1,设某未知正整数 xx 满足: 1. xx 和 a_0a0 的最大公约数是 a_1a1; 2. xx 和 b_0b0 的最小公倍数是 b_1b1。 Hankson 的“逆问题”就是求出满足条件的正整数 xx。但稍加思索之后,他发现这样的 xx 并不唯一,甚至可能不存在。因此他转而开始考虑如何求解满足条件的 xx 的个数。请你帮助他编程求解这个问题。 输入格式第一行为一个正整数 nn,表示有 nn 组输入数据。接下来的nn 行每行一组输入数据,为四个正整数 a_0,a_1,b_0,b_1a0,a1,b0,b1,每两个整数之间用一个空格隔开。输入数据保证 a_0a0 能被 a_1a1 整除,b_1b1 能被 b_0b0 整除。 输出格式共 nn 行。每组输入数据的输出结果占一行,为一个整数。 对于每组数据:若不存在这样的 xx,请输出 00,若存在这样的 xx,请输出满足条件的 xx 的个数; 输入输出样例输入 #1复制 1232 41 1 96 288 95 1 37 1776 输出 #1复制 126 2💡 阅读更多
📅 2021-04-12发表🕰️ 2025-06-15更新📁 刷题笔记⌛ 6 分钟读完 (大约870个字)洛谷P1140 相似基因洛谷P1140 相似基因 题目背景大家都知道,基因可以看作一个碱基对序列。它包含了44种核苷酸,简记作A,C,G,TA,C,G,T。生物学家正致力于寻找人类基因的功能,以利用于诊断疾病和发明药物。 在一个人类基因工作组的任务中,生物学家研究的是:两个基因的相似程度。因为这个研究对疾病的治疗有着非同寻常的作用。 题目描述两个基因的相似度的计算方法如下: 对于两个已知基因,例如AGTGATGAGTGATG和GTTAGGTTAG,将它们的碱基互相对应。当然,中间可以加入一些空碱基-,例如: 这样,两个基因之间的相似度就可以用碱基之间相似度的总和来描述,碱基之间的相似度如下表所示: 那么相似度就是:(-3)+5+5+(-2)+(-3)+5+(-3)+5=9(−3)+5+5+(−2)+(−3)+5+(−3)+5=9。因为两个基因的对应方法不唯一,例如又有: 相似度为:(-3)+5+5+(-2)+5+(-1)+5=14(−3)+5+5+(−2)+5+(−1)+5=14。规定两个基因的相似度为所有对应方法中,相似度最大的那个。💡 阅读更多
📅 2021-04-12发表🕰️ 2025-06-15更新📁 刷题笔记⌛ 10 分钟读完 (大约1515个字)洛谷P1126 机器人搬重物洛谷P1126 机器人搬重物 题目描述机器人移动学会(RMI)现在正尝试用机器人搬运物品。机器人的形状是一个直径1.61.6米的球。在试验阶段,机器人被用于在一个储藏室中搬运货物。储藏室是一个 N \times MN×M 的网格,有些格子为不可移动的障碍。机器人的中心总是在格点上,当然,机器人必须在最短的时间内把物品搬运到指定的地方。机器人接受的指令有:向前移动11步(Creep);向前移动2步(Walk);向前移动33 步(Run);向左转(Left);向右转(Right)。每个指令所需要的时间为11 秒。请你计算一下机器人完成任务所需的最少时间。 输入格式第一行为两个正整数N,M(N,M \le 50)N,M(N,M≤50),下面NN行是储藏室的构造,00表示无障碍,11表示有障碍,数字之间用一个空格隔开。接着一行有44个整数和11个大写字母,分别为起始点和目标点左上角网格的行与列,起始时的面对方向(东EE,南SS,西WW,北NN),数与数,数与字母之间均用一个空格隔开。终点的面向方向是任意的。 输出格式一个整数,表示机器人完成任务所需的最少时间。如果无法到达,输出-1−1。 💡 阅读更多
📅 2021-04-12发表🕰️ 2025-06-15更新📁 刷题笔记⌛ 8 分钟读完 (大约1274个字)洛谷P2678 跳石头洛谷 P2678 跳石头 题目背景一年一度的“跳石头”比赛又要开始了! 题目描述这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有 NN 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。 为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走 MM 块岩石(不能移走起点和终点的岩石)。 输入格式第一行包含三个整数 L,N,ML,N,M,分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。保证 L \geq 1L≥1 且 N \geq M \geq 0N≥M≥0。 接下来 NN 行,每行一个整数,第 ii 行的整数 D_i( 0 < D_i < L)D**i(0<D**i<L), 表示第 ii 块岩石与起点的距离。这些岩石按与起点距离从小到大的顺序给出,且不会有两个岩石出现在同一个位置。 输出格式一个整数,即最短跳跃距离的最大值。 输入输出样例输入 #1 12345625 5 2 2111417 21 输出 #1 14💡 阅读更多
📅 2021-04-12发表🕰️ 2025-06-15更新📁 刷题笔记⌛ 7 分钟读完 (大约1083个字)洛谷P1873 砍树洛谷 P1873 砍树 题目描述伐木工人米尔科需要砍倒M米长的木材。这是一个对米尔科来说很容易的工作,因为他有一个漂亮的新伐木机,可以像野火一样砍倒森林。不过,米尔科只被允许砍倒单行树木。 米尔科的伐木机工作过程如下:米尔科设置一个高度参数H(米),伐木机升起一个巨大的锯片到高度H,并锯掉所有的树比H高的部分(当然,树木不高于H米的部分保持不变)。米尔科就行到树木被锯下的部分。 例如,如果一行树的高度分别为20,15,10和17,米尔科把锯片升到15米的高度,切割后树木剩下的高度将是15,15,10和15,而米尔科将从第1棵树得到5米,从第4棵树得到2米,共得到7米木材。 米尔科非常关注生态保护,所以他不会砍掉过多的木材。这正是他为什么尽可能高地设定伐木机锯片的原因。帮助米尔科找到伐木机锯片的最大的整数高度H,使得他能得到木材至少为M米。换句话说,如果再升高1米,则他将得不到M米木材。 输入格式第1行:2个整数N和M,N表示树木的数量(1<=N<=1000000),M表示需要的木材总长度(1<=M<=2000000000) 第2行:N个整数表示每棵树的高度,值均不超过1000000000。所有木材长度之和大于M,因此必有解。 输出格式第1行:1个整数,表示砍树的最高高度。 输入输出样例输入 #1 125 204 42 40 26 46 输出 #1 136 💡 阅读更多
📅 2021-04-07发表🕰️ 2025-06-15更新📁 刷题笔记⌛ 8 分钟读完 (大约1237个字)洛谷P1080 国王游戏洛谷 P1080 国王游戏 题目描述恰逢 HH国国庆,国王邀请nn 位大臣来玩一个有奖游戏。首先,他让每个大臣在左、右手上面分别写下一个整数,国王自己也在左、右手上各写一个整数。然后,让这 nn 位大臣排成一排,国王站在队伍的最前面。排好队后,所有的大臣都会获得国王奖赏的若干金币,每位大臣获得的金币数分别是:排在该大臣前面的所有人的左手上的数的乘积除以他自己右手上的数,然后向下取整得到的结果。 国王不希望某一个大臣获得特别多的奖赏,所以他想请你帮他重新安排一下队伍的顺序,使得获得奖赏最多的大臣,所获奖赏尽可能的少。注意,国王的位置始终在队伍的最前面。 输入格式第一行包含一个整数nn,表示大臣的人数。 第二行包含两个整数 aa和 bb,之间用一个空格隔开,分别表示国王左手和右手上的整数。 接下来 nn行,每行包含两个整数aa 和 bb,之间用一个空格隔开,分别表示每个大臣左手和右手上的整数。 输出格式一个整数,表示重新排列后的队伍中获奖赏最多的大臣所获得的金币数。 输入输出样例输入 #1复制 123453 1 1 2 3 7 4 4 6 输出 #1复制 12💡 阅读更多
📅 2021-04-07发表🕰️ 2025-06-15更新📁 刷题笔记⌛ 4 分钟读完 (大约566个字)洛谷P2201 数列编辑器洛谷 P2201 数列编辑器 题目描述小Z是一个爱好数学的小学生。最近,他在研究一些关于整数数列的性质。 为了方便他的研究,小Z希望实现一个叫做“Open Continuous Lines Processor”的数列编辑器。 一开始,数列编辑器里没有数字,只有一个光标。这个数列编辑器需要支持五种操作。 • I x 在当前光标前插入数字 x。 • D 删除当前光标前的数字。 • L 光标向前移动一个数字。 • R 光标向后移动一个数字。 • Q k 设光标之前的数列是{a1,a2,……,an},输出第k位及之前最大的前缀和,保证k≤n。 输入格式第一行包含一个数字 N ,表示操作的个数。 接下来包含 N 行,每行包含一条命令。 输出格式对于每个Q k 命令,输出一个整数表示这个操作的答案。 输入输出样例输入 #1复制 1234567898I 2I -1I 1Q 3LDRQ 2 输出 #1复制 1223 说明/提示【数据规模】 对于 50% 的数据,N ≤ 1000; 对于 80% 的数据,N ≤ 100000; 对于 100% 的数据,N ≤ 1000000,插入的数字绝对值大小不会超过 1000。 💡 阅读更多
📅 2021-04-07发表🕰️ 2025-06-15更新📁 刷题笔记⌛ 5 分钟读完 (大约778个字)洛谷P1367 蚂蚁洛谷P1367 蚂蚁 题目描述有许多蚂蚁在一根无限长的木棍上,每一只蚂蚁都有一个初始位置和初始朝向(任意两只蚂蚁的初始位置不同)。蚂蚁们以每秒一个单位的速度向前移动,当两只蚂蚁相遇时,它们会掉头(掉头时间忽略不计)。现给出每只蚂蚁的初始位置和初始朝向,请你计算出它们在t秒后的位置和朝向。 输入格式第一行,两个空格隔开的整数n,t(代表蚂蚁数n和时间t) 第2~n+1行每行两个整数,第i+1行代表第i只蚂蚁的初始位置ai(ai的绝对值在1000000以内)及初始朝向bi(bi=1时蚂蚁朝右,bi=-1时蚂蚁朝左) 输出格式n行,每行两个整数,第i行代表t秒后第i只蚂蚁的位置及朝向(-1表示朝左,1表示朝右,0表示正在转向中) 输入输出样例输入 #1复制 123454 11 15 13 -1 10 1 输出 #1复制 12342 06 12 011 1 说明/提示【数据范围】 对于40%的数据,n<=100 对于80%的数据,n<=10000,t<=1000 对于100%的数据,n<=100000,t<=100000 💡 阅读更多