> 活动地址:CSDN21天学习挑战赛
D. Gargari and Permutations题意:1900难度的dp题,给定k个长度为n的数字排列,找到最长的公共子序列的长度。 思路: 1.属于经典dp问题,最长公共子序列。复杂度在O(n^2) 2.记录每个串数字所在的位置;p[i][a[i][j]]=j
3.对比第二个之后的排列,满足排列1中的数字的相对位置关系,方向应一致不满足则无法进行更新长度 4.f[i]表示截止到i的最长公共徐磊长度。
#include
#define int long long
#define endl '\n'
#define IOS ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)
using namespace std;
const int N=5e5+5;
const int mod=1e9+7;
int n,k,a[15][1005],p[15][1005],f[1005];
signed main()
{
IOS;
cin>>n>>k;
for(int i=1;ia[i][j],p[i][a[i][j]]=j;
}
for(int i=1;i>s;
int g=0;
for(int i=0;ic;
c=-c;
int x,y;
int d=exgcd(a,b,x,y);
x=c/d*x;
y=c/d*y;
cout
关注
打赏