20220813牛客第八场

Longest Common Subsequence

题目大意:
给定n,m,p,x,a,b,c七个数,n是数组1的长度,m是数组2的长度,先给数组1依次赋值,再给数组2依次赋值。
赋值的值为x,每次赋值之前x都更新为(axx + b*x + c) mod p
问最后a与b中的最长公共子序列

input:
2
4 3 1024 1 1 1 1
3 4 1024 0 0 0 0

output:
0
3

解:
在两个数组中找到相同的值,那么两个数组后面所有的值都相同

#include<bits/stdc++.h>
using namespace std;

#define endl '\n'

#define int long long

int n, m, x, a, b, c, p;
unordered_map<int, int> map1;

void solve() {
    map1.clear();
    cin >> n >> m >> p >> x >> a >> b >> c;
    a %= p, b %= p, c %= p, x %= p;
    int i, j;
    for (i = 1; i <= n; i++) {
        x = (a * x % p * x % p + b * x % p + c) % p;
        if (map1.count(x) == 0) {
            map1[x] = i;
        }
    }
    int res = 0;
    for (j = 1; j <= m; j++) {
        x = (a * x % p * x % p + b * x % p + c) % p;
        if (map1.count(x) > 0) {
            i = map1[x];
            res = max(res, min(n - i + 1, m - j + 1));
        }
    }
    cout << res << endl;
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    int t;
    cin >> t;
    while (t--) {
        solve();
    }
}

其他的题目不是给我这种菜鸡做的

#ACM#
全部评论

相关推荐

孙艹肘:校招不给三方直接让实习我都去了,,主打一个在学校呆着也是闲着,不如出来实习一下
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务