admin管理员组文章数量:1437110
【今日三题】爱吃素(数学) / 相差不超过k的最多数(滑动窗口) / 最长公共子序列(一)(两个数组的dp)
爱吃素(数学)
- 爱吃素
代码语言:javascript代码运行次数:0运行复制这题不能直接判断 a乘以b,因为根据题目给的数据范围可能溢出,所以需要找到其特点。 如果a和b都是大于1的数,那它们相乘得到的数一定不是素数,因为根据素数的定义其只能被自身和1整除,因此 a乘以b 是素数只能是:a == 1且b是素数;或者b==1且a是素数。
#include <iostream>
#include <cmath>
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的最多数
#include <iostream>
#include <algorithm>
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)
- 最长公共子序列(一)
代码语言:javascript代码运行次数:0运行复制dp[i][j] 表示s1中 [0, i] 区间内和s2中 [0, j] 区间内的最长公共子序列的长度。
#include <iostream>
#include <string>
#include <vector>
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;
}
本篇文章的分享就到这里了,如果您觉得在本文有所收获,还请留下您的三连支持哦~
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025-05-03,如有侵权请联系 cloudcommunity@tencent 删除dpint数据数学数组本文标签: 今日三题爱吃素(数学)相差不超过k的最多数(滑动窗口)最长公共子序列(一)(两个数组的dp)
版权声明:本文标题:【今日三题】爱吃素(数学)相差不超过k的最多数(滑动窗口)最长公共子序列(一)(两个数组的dp) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/biancheng/1747409079a2695090.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论