AtCoder 的 DP 题目 - 题单 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
F - LCS(最大公共子序列)
#include <bits/stdc++.h>
#define int long long
using namespace std;
int dp[10100][10100];
string s1,s2;
char v[100000];
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>s1>>s2;
s1=" "+s1;
s2=" "+s2;
//v[0]=' ';
for(int i=1;i<s1.size();i++)
for(int j=1;j<s2.size();j++)
{
dp[i][j]=max(dp[i-1][j],dp[i][j-1]);
if(s1[i]==s2[j])
dp[i][j]=max(dp[i][j],dp[i-1][j-1]+1);
}
int i=s1.size()-1;
int j=s2.size()-1;
while(dp[i][j]>0)
{
if(s1[i]==s2[j])
{
v[dp[i][j]]=s1[i];
i--,j--;
}
else
{
if(dp[i][j]==dp[i-1][j]) i--;
else j--;
}
}
int k=strlen(v+1);
// cout<<k;
for(int i=1;i<=k;i++)
cout<<v[i];
// cout<<v;
// cout<<v[1];
}
P1287 盒子与球 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1020;
int f[N][N];
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int n,r,i,j;
cin>>n>>r;
f[0][0]=1;
for(i=1;i<=n;i++)
{
for(j=1;j<=r&&j<=i;j++)
{
f[i][j]=f[i-1][j-1]*j+f[i-1][j]*j;
}
}
cout<<f[n][r]<<'\n';
}
P5520 [yLOI2019] 青原樱 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)
#include <bits/stdc++.h>
#define int long long
using namespace std;
signed main()
{
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
int t,n,m,i,j,mod;
cin>>t>>n>>m>>mod;
int s=1;
for(i=n-m+1,j=1;j<=m;j++,i--)
s=s*i%mod;
cout<<s<<'\n';
}