HJ108 求最小公倍数(简单)(数论)
求最小公倍数_牛客题霸_牛客网 (nowcoder.com)
描述
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
数据范围:1≤𝑎,𝑏≤100000 1≤a,b≤100000
输入描述:
输入两个正整数A和B。
输出描述:
输出A和B的最小公倍数。
示例1
输入:
5 7
复制
输出:
35
复制
示例2
输入:
2 4
复制
输出:
4
复制
#include <iostream>
using namespace std;
long long gcd(long long a,long long b)
{
return b==0?a:gcd(b,a%b);
}
long long lcm(long long a,long long b)
{
return a/gcd(a,b)*b;
}
int main() {
long long a,b;
cin>>a>>b;
cout<<lcm(a,b);
}
// 64 位输出请用 printf("%lld")
NC95 数组中的最长连续子序列(简单)(滑动窗口,双指针)
数组中的最长连续子序列_牛客题霸_牛客网 (nowcoder.com)
描述
给定无序数组arr,返回其中最长的连续序列的长度(要求值连续,位置可以不连续,例如 3,4,5,6为连续的自然数)
数据范围: 1≤𝑛≤1051≤n≤105,数组中的值满足 1≤𝑣𝑎𝑙≤1081≤val≤108
要求:空间复杂度 𝑂(𝑛)O(n),时间复杂度 𝑂(𝑛𝑙𝑜𝑔𝑛)O(nlogn)
示例1
输入:
[100,4,200,1,3,2]
复制
返回值:
4
复制
示例2
输入:
[1,1,1]
复制
返回值:
1
复制
备注:
1≤𝑛≤1051≤n≤105
1≤𝑎𝑟𝑟𝑖≤1081≤arri≤108
int myhash[100000010];
class Solution {
public:
int MLS(vector<int>& arr) {
for(auto e:arr)
{
myhash[e]++;
}
int left=0,right=0;
int ret=0;
while(right<100000010)
{
if(myhash[right]>0) left=right;
else
{
right++;
continue;
}
while(myhash[right]>0)
{
ret=max(ret,right-left+1);
right++;
}
}
return ret;
}
};
字母收集(中等)(动态规划)
描述
有一个 𝑛∗𝑚n∗m 的矩形方阵,每个格子上面写了一个小写字母。
小红站在矩形的左上角,她每次可以向右或者向下走,走到某个格子上就可以收集这个格子的字母。
小红非常喜欢 “love” 这四个字母。她拿到一个 l 字母可以得 4 分,拿到一个 o 字母可以得 3 分,拿到一个 v 字母可以得 2 分,拿到一个 e 字母可以得 1 分。
她想知道,在最优的选择一条路径的情况下,她最多能获取多少分?
输入描述:
1≤𝑛,𝑚≤5001≤n,m≤500
接下来的 𝑛n 行 每行一个长度为 𝑚m 的、仅有小写字母构成的字符串,代表矩形方阵。
输出描述:
小红最大可能的得分。
示例1
输入:
3 2
ab
cd
ef
复制
输出:
1
复制
说明:
选择下、下、右)这条路径即可,可以收集到 acef 这四个字母各一次,获得 0+0+1+0=1 分。
示例2
输入:
2 3
lle
ove
复制
输出:
11
#include <iostream>
#include<vector>
#include<unordered_map>
using namespace std;
unordered_map<char,int> sec;
int main() {
sec['l']=4;
sec['o']=3;
sec['v']=2;
sec['e']=1;
int n,m;
cin>>n>>m;
vector<vector<char>> arr(n+1,vector<char>(m+1,'a'));
vector<vector<int>> dp(n+1,vector<int>(m+1));
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
cin>>arr[i][j];
}
}
//dp[0][0]=sec[arr[0][0]-'a'];
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
{
dp[i][j]=max(dp[i][j-1],dp[i-1][j])+sec[arr[i][j]];
}
}
cout<< dp[n][m];
}
// 64 位输出请用 printf("%lld")