算法
A_box_of_yogurt
A_box_of_yogurt
展开
-
信息奥赛一本通 最低通行费 (1287) 题解
信息奥赛一本通 最低通行费 (1287) 题解代码:#include <bits/stdc++.h>int n, d[128][128][2];int dp(int r, int c) { if(d[r][c][1]) return d[r][c][1]; if(r > 1 && c > 1) return d[r][c][1] = std::min(dp(r - 1, c), dp(r, c - 1)) + d[r][c][0]; if(r >原创 2021-03-19 17:10:08 · 468 阅读 · 0 评论 -
信息奥赛一本通 三角形最佳路径问题 (1288) 题解
信息奥赛一本通 三角形最佳路径问题 (1288) 题解时间限制: 1000 ms内存限制: 65536 KB题目描述如下所示的由正整数数字构成的三角形:7 3 8 8 1 0 2 7 4 4 4 5 2 6 5从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,和最大的路径称为最佳路径。你的任务就是求出最佳路径上的数字之和。注意:路径上的每一步只能从一个数走到下一层上和它最近的下边(正下方)的数或者右边(右下方)的数。输入第一行为三角形高度1原创 2021-03-19 16:24:25 · 368 阅读 · 0 评论 -
信息奥赛一本通 怪盗基德的滑翔翼 (1286) 题解
信息奥赛一本通 怪盗基德的滑翔翼 (1286) 题解时间限制: 1000 ms内存限制: 65536 KB题目描述怪盗基德是一个充满传奇色彩的怪盗,专门以珠宝为目标的超级盗窃犯。而他最为突出的地方,就是他每次都能逃脱中村警部的重重围堵,而这也很大程度上是多亏了他随身携带的便于操作的滑翔翼。有一天,怪盗基德像往常一样偷走了一颗珍贵的钻石,不料却被柯南小朋友识破了伪装,而他的滑翔翼的动力装置也被柯南踢出的足球破坏了。不得已,怪盗基德只能操作受损的滑翔翼逃脱。假设城市中一共有N幢建筑排成一条线,每幢建原创 2021-03-18 19:32:04 · 574 阅读 · 0 评论 -
信息奥赛一本通 最大上升子序列和 (1285) 题解
信息奥赛一本通 最大上升子序列和 (1285) 题解时间限制: 1000 ms内存限制: 65536 KB题目描述一个数的序列b_ib\_ib_i,当b_1<b_2<...<b_Sb\_1<b\_2<...<b\_Sb_1<b_2<...<b_S的时候,我们称这个序列是上升的。对于给定的一个序列(a_1,a_2,...,a_N)(a\_1,a\_2,...,a\_N)(a_1,a_2,...,a_N),我们可以得到一些上升的子序列(a_i1,a_原创 2021-03-18 19:30:08 · 252 阅读 · 0 评论 -
信息奥赛一本通 摘花生 (1284) 题解
信息奥赛一本通 摘花生 (1284) 题解时间限制: 1000 ms内存限制: 65536 KB题目描述Hello Kitty想摘点花生送给她喜欢的米老鼠。她来到一片有网格状道路的矩形花生地(如下图),从西北角进去,东南角出来。地里每个道路的交叉点上都有种着一株花生苗,上面有若干颗花生,经过一株花生苗就能摘走该它上面所有的花生。Hello Kitty只能向东或向南走,不能向西或向北走。问Hello Kitty最多能够摘到多少颗花生。输入第一行是一个整数TTT,代表一共有多少组数据。1≤T≤10原创 2021-03-18 19:27:46 · 490 阅读 · 0 评论 -
信息奥赛一本通 登山 (1283) 题解
信息奥赛一本通 登山 (1283) 题解代码:#include <bits/stdc++.h>using namespace std;int n, ans = 0, d[1024][3];void dp_1(int x) { if(x == n + 1) return; d[x][1] = 1; for(int i = x - 1; i > 0; --i) if(d[x][0] > d[i][0] && d[x][1] <= d[i][1])原创 2021-03-18 19:25:15 · 429 阅读 · 0 评论 -
信息奥赛一本通 最长上升子序列 (1281) 题解
信息奥赛一本通 最长上升子序列 (1281) 题解时间限制: 1000 ms内存限制: 65536 KB题目描述一个数的序列b_ib\_ib_i,当b_1<b_2<...<b_Sb\_1 < b\_2 < ... < b\_Sb_1<b_2<...<b_S的时候,我们称这个序列是上升的。对于给定的一个序列(a_1,a_2,...,a_N)(a\_1,a\_2,...,a\_N)(a_1,a_2,...,a_N),我们可以得到一些上升的子序列(a_原创 2021-03-18 19:21:52 · 281 阅读 · 0 评论 -
信息奥赛一本通【例9.10】机器分配 (1266) 题解
信息奥赛一本通【例9.10】机器分配 (1266) 题解时间限制: 1000 ms内存限制: 65536 KB题目描述总公司拥有高效设备M台,准备分给下属的N个分公司。各分公司若获得这些设备,可以为国家提供一定的盈利。问:如何分配这M台设备才能使国家得到的盈利最大?求出最大盈利值。其中M≤15,N≤10。分配原则:每个公司有权获得任意数目的设备,但总台数不超过设备数M。输入第一行有两个数,第一个数是分公司数N,第二个数是设备台数M;接下来是一个N*M的矩阵,表明了第 I个公司分配 J台机器的盈原创 2021-03-18 19:19:50 · 461 阅读 · 0 评论 -
信息奥赛一本通 【例9.9】最长公共子序列 (1265) 题解
信息奥赛一本通 【例9.9】最长公共子序列 (1265) 题解时间限制: 1000 ms内存限制: 65536 KB题目描述一个给定序列的子序列是在该序列中删去若干元素后得到的序列。确切地说,若给定序列X=<x_1,x_2,…,x_m>X=<x\_1,x\_2,…,x\_m>X=<x_1,x_2,…,x_m>,则另一序列Z=<z_1,z_2,…,z_k>Z=<z\_1,z\_2,…,z\_k>Z=<z_1,z_2,…,z_k>是原创 2021-03-18 19:17:33 · 334 阅读 · 0 评论 -
信息奥赛一本通【例9.8】合唱队形 (1264) 题解
信息奥赛一本通【例9.8】合唱队形 (1264) 题解代码:#include <bits/stdc++.h>using namespace std;int n, ans = 2147483647, d[128][3];void dp_1(int x) { if(x == n + 1) return; d[x][1] = 1; for(int i = x - 1; i > 0; --i) if(d[x][0] > d[i][0] && d[x][1]原创 2021-03-18 19:14:23 · 342 阅读 · 0 评论 -
信息奥赛一本通【例9.6】挖地雷 (1262) 题解
信息奥赛一本通【例9.6】挖地雷 (1262) 题解时间限制: 1000 ms内存限制: 65536 KB题目描述在一个地图上有nnn个地窖(n≤200n≤200n≤200),每个地窖中埋有一定数量的地雷。同时,给出地窖之间的连接路径,并规定路径都是单向的,且保证都是小序号地窖指向大序号地窖,也不存在可以从一个地窖出发经过若干地窖后又回到原来地窖的路径。某人可以从任意一处开始挖地雷,然后沿着指出的连接往下挖(仅能选择一条路径),当无连接时挖地雷工作结束。设计一个挖地雷的方案,使他能挖到最多的地雷。原创 2021-03-15 18:11:04 · 799 阅读 · 0 评论 -
信息奥赛一本通【例9.5】城市交通路网 (1261) 题解
信息奥赛一本通【例9.5】城市交通路网 (1261) 题解时间限制: 1000 ms内存限制: 65536 KB题目描述下图表示城市之间的交通路网,线段上的数字表示费用,单向通行由A->E。试用动态规划的最优化原理求出A->E的最省费用。如图:求v1到v10的最短路径长度及最短路径。输入第一行为城市的数量N;后面是N*N的表示两个城市间费用组成的矩阵。输出A->E的最省费用。输入样例100 2 5 1 0 0 0 0 0 00 0 0原创 2021-03-15 18:07:29 · 544 阅读 · 0 评论 -
信息奥赛一本通【例9.7】友好城市 (1263) 题解
直接上代码:#include <bits/stdc++.h>using namespace std;struct c{int a, b, l;} d[5005];bool cmp(c num1, c num2) {return num1.a < num2.a;}int n, ans = 0;void dp(int x) { if(!x) return; d[x].l = 1; for(int i = x + 1; i <= n; ++i) if(d[x].b &原创 2021-03-15 18:02:29 · 288 阅读 · 0 评论 -
因式分解(DFS) - 题解
因式分解(DFS) - 题解将大于1的自然数N进行因式分解,满足 N=a1∗a2......∗amN = a_1 * a_2......*a_mN=a1∗a2......∗am 编一个程序,对任意的自然数N,求N的所有形式不同的因式分解方案总数。例如,N=12,共有8种分解方案,分别是:12=1212=1212=1212=6∗212=6*212=6∗212=4∗312=4*312=4∗312=3∗412=3*412=3∗412=3∗2∗212=3*2*212=3∗2∗212=2∗612原创 2021-03-12 21:10:29 · 1086 阅读 · 1 评论 -
信息奥赛一本通 【例9.4】拦截导弹(Noip1999) (1260) 题解
【例9.4】拦截导弹(Noip1999) (1260)时间限制: 1000 ms内存限制: 65536 KB题目描述某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。输入导弹依次飞来的高度(雷达给出的高度数据是不大于30000的正整数,导弹数不超过1000),计算这套系统最多能拦截多原创 2021-03-10 21:25:10 · 280 阅读 · 0 评论 -
zipper-题解 DFS搜索算法
zipper-题解(DFS搜索算法)题目描述天顶星人使用量子纠缠技术传送信息,量子纠缠超越了我们生活的四维时空,不受四维时空的约束,其传输信息的速度至少比光速快10000倍。换句话说,即使传送双方远在宇宙的两端,信息也可以瞬间到达。但天顶星人传送的信息有真有假,判断真假的方式是对三个字符串进行验证,即给三个字符串,判断第三个字符串是否由前两个字符串的一部分序列顺序组成,例如字符串A为“cat”,字符串B为“tree”,字符串C为”tcraete”,字符串C由字符串A和B组成,则信息为真。输入格式第一原创 2021-03-09 21:24:52 · 224 阅读 · 0 评论 -
滑雪-题解 DFS搜索算法
滑雪-题解(DFS搜索算法)题目描述Michael喜欢滑雪这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长底滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11 10 9一个人可以从某个点滑向上下左右相邻四个点之一,当且仅当高度减小。在原创 2021-03-09 21:02:43 · 271 阅读 · 0 评论 -
信息奥赛一本通-动态规划 1259:【例9.3】求最长不下降序列
信息奥赛一本通-动态规划 1259:【例9.3】求最长不下降序列【题目描述】设有由n(1≤n≤200)n(1\leq n\leq 200)n(1≤n≤200)个不相同的整数组成的数列,记为:b(1)、b(2)、……、b(n)b(1)、b(2)、……、b(n)b(1)、b(2)、……、b(n)若存在i1<i2<i3<…<iei_1<i_2<i_3< … < i_ei1<i2<i3<…<ie 且有b(i1)<=b(i2)&原创 2021-03-08 21:13:27 · 474 阅读 · 0 评论 -
动态规划
动态规划知识总结(Dynamic Programming)理解动态规划基本思路适用情况关键点动态规划解题步骤动态规划与分治的联系和区别相同点区别实现方法子问题性质动态规划与贪心的联系与区别联系区别理解动态规划基本思路动态规划在查找有很多重叠子问题的情况的最优解时有效。它将问题重新组合成子问题。为了避免多次解决这些子问题,它们的结果都逐渐被计算并被保存,从简单的问题直到整个问题都被解决。因此,动态规划保存递归时的结果,因而不会在解决同样的问题时花费时间。动态规划只能应用于有最优子结构的问题。最优子结构原创 2021-03-07 21:06:49 · 136 阅读 · 0 评论