【今日三题】爱吃素(数学) / 相差不超过k的最多数(滑动窗口) / 最长公共子序列(一)(两个数组的dp)

头像
⭐️个人主页:@小羊
⭐️所属专栏:每日两三题
很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~

动图描述

目录

    • 爱吃素(数学)
    • 相差不超过k的最多数(滑动窗口)
    • 最长公共子序列(一)(两个数组的dp)


爱吃素(数学)

  • 爱吃素

【今日三题】爱吃素(数学) / 相差不超过k的最多数(滑动窗口) / 最长公共子序列(一)(两个数组的dp)_第1张图片

这题不能直接判断 a乘以b,因为根据题目给的数据范围可能溢出,所以需要找到其特点。
如果a和b都是大于1的数,那它们相乘得到的数一定不是素数,因为根据素数的定义其只能被自身和1整除,因此 a乘以b 是素数只能是:a == 1且b是素数;或者b==1且a是素数。

#include 
#include 
using namespace std;

using ll = long long;

bool isprime(ll n)
{
    if (n < 2) return false;
    for (int i = 2; i <= sqrt(n); i++)
    {
        if (n % i == 0) return false;
    }
    return true;
}

int main()
{
    ll t, a, b;
    cin >> t;
    while (t--)
    {
        cin >> a >> b;
        if (a == 1 && isprime(b) || b == 1 && isprime(a)) cout << "YES" << endl;
        else cout << "NO" << endl;
    }
    return 0;
}

相差不超过k的最多数(滑动窗口)

  • 相差不超过k的最多数

【今日三题】爱吃素(数学) / 相差不超过k的最多数(滑动窗口) / 最长公共子序列(一)(两个数组的dp)_第2张图片

#include 
#include 
using namespace std;

const int N = 2e5 + 1;
int n, k, res;
int arr[N];

int main()
{
    cin >> n >> k;
    for (int i = 0; i < n; i++) cin >> arr[i];
    sort(arr, arr + n);
    for (int l = 0, r = 0; r < n; r++)
    {
        while (arr[r] - arr[l] > k)
        {
            l++;
        }
        res = max(res, r - l + 1);
    }
    cout << res << endl;
    return 0;
}

最长公共子序列(一)(两个数组的dp)

  • 最长公共子序列(一)

【今日三题】爱吃素(数学) / 相差不超过k的最多数(滑动窗口) / 最长公共子序列(一)(两个数组的dp)_第3张图片

dp[i][j] 表示s1中 [0, i] 区间内和s2中 [0, j] 区间内的最长公共子序列的长度。

#include 
#include 
#include 
using namespace std;

int n, m;
string s1, s2;

int main()
{
    cin >> n >> m;
    cin >> s1 >> s2;
    s1 = " " + s1;
    s2 = " " + s2;
    vector<vector<int>> dp(n + 1, vector<int>(m + 1));
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= m; j++)
        {
            if (s1[i] == s2[j]) dp[i][j] = dp[i - 1][j - 1] + 1;
            else dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
        }
    }
    cout << dp[n][m] << endl;
    return 0;
}

本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~

头像

你可能感兴趣的:(每日两三题,算法)