02 2022 档案
摘要:题目: 此题目可转化为 01背包问题 dp[ i ] [ j ] [ l ] 表示i个精灵球、j点体力、l 个精灵时最多收复精灵的个数。 注意事项:开三维数组一定要贴着给的数据开,本题中开dp[1001][501][101],否则容易爆。 遍历范围: i:1~n j:1~m l:1~k w[l]:
阅读全文
摘要:题目: 此题题干又臭又长,直接看简化版。 鸣人的影分身(等级考试4级 2021-03 T3)等效于 把m个苹果分到n个盘子中,问有几种可能? dp[i][j]表示有i个盘子j个苹果时有多少种放法。 用递归的方法来计算dp[n][m]。 一、递归函数的出口 (1)盘子数量不断减少所以当n==1时ret
阅读全文
摘要:题目:最长上升子序列 II 给定一个长度为 N 的数列,求数值严格单调递增的子序列的长度最长是多少。 输入格式 第一行包含整数 N。 第二行包含 N个整数,表示完整序列。 输出格式 输出一个整数,表示最大长度。 数据范围 1≤N≤100000,−10e9≤数列中的数≤10e9 输入样例: 7 3 1
阅读全文
摘要:题目: 程序: #include<bits/stdc++.h> using namespace std; int n; string s1; void dfs(int l,int r) { if(l==n&&r==n) { cout<<s1; cout<<endl; return; } if(l<r
阅读全文
摘要:同志们,822题更优解他来啦! 经本人研究发现还可以用动态规划来写。 动态转移方程:dp[i][j]=dp[i][j-1]+dp[i-1][j];(因为只能向下或向右走所以可以从[i-1,j]和[i,j-1]来到[i,j]点) dp[i][j]:x值为i时,y值为j时最多有几种走到i,j点的可能。
阅读全文
摘要:题目: 先讲变量 n:右下角的x值 m:右下角的y值 ans:答案(有几种可能) a数组:用来存储向下和向右的动作。 x:所在的位置的x值 y:所在位置的y值 x1:下一步可以走到位置的x值 y1:下一步可以走到位置的y值 题型:经典dfs。 代码: #include<bits/stdc++.h>
阅读全文
摘要:题目: 数组意义: a字符数组:输入的数组一。 b字符数组:输入的数组二。 int 类型的t:存放strcmp(a,b)的结果。 那再说说思路,因为所以先统一为小写,再用strcmp就ok了。 上代码🐱🏍 #include <iostream> #include <cstring> #incl
阅读全文