题解列表

筛选

数的划分(dp)

解题思路:动态规划状态方程:dp[i][j]:表示数字i,被分解为j份的方案总数因为分解的每一份不能为空,则先将每一份都分配1,剩余数值为i-j,再将i-j分为1份,2份,...,j份。即dp[i][j]=dp[i-j][1]+dp[i-j][2]+...+dp[i-j][j]又dp[i-1][j-1

时间复杂度O(n)的算法

摘要:解题思路:注意事项:参考代码:#include<bits/stdc++.h>using namespace std;#define maxn 100010//−100000≤ Ai ≤100000ty……

3050: 最长上升子序列(线性dp)

题目描述:给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。解题思路:线性dp1.状态表示:所有以i结尾的严格单调上升的子序列的长度的集合(MAX)2.状态计算:只需要判断在严格单调上升的前提下,枚举以倒数第二个元素为结尾的上升子序列长度和加上第i个元素的长度求一个最大值就行。

2751: 超级玛丽游戏

先别走,不妨试一下代码有没有打错```cpp#includeusingnamespacestd;intmain(){cout

2922: 合影效果

```cpp#include#include#includeusingnamespacestd;typedefstructM{strings;floath;}S;boolcmp(Sa,Sb){if(a.s!=b.s)returna.s>b.s;elseif(a.s==b.s&&a.s=="male")

2924: 明明的随机数

摘要:```cpp #include using namespace std; void QS(int a[],int l,int r) { if(l>=r) retur……

2912: 最长平台

摘要:```cpp #include using namespace std; int main() { int n,count=1,max=1,a[1001]; cin>>n;……

2914: 铺地毯

```cpp#includeusingnamespacestd;structTan{intg,k,a,b,c,d;};boolIn_tan(structTan*tan,intx,inty){intt=0;if(xc&&x>=tan->a)t++;if(y>=tan->b&&yd)t++;if(t==2

题解 2900: 螺旋加密

摘要:解题思路:用a数组螺旋填写,b数组记录字符串代表的数字,d数组表示数字对应的五位二进制,c数组用来标记是否填写过。注意事项:利用了位运算参考代码:#include <algorithm>#includ……