目录
B-学生分组_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
D-区间问题1_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
E-哥德巴赫猜想_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
G-爬楼梯_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
H-区间问题2_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
I-小美想打音游_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
J-平方根_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)编辑
K-小美想游泳_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
B-学生分组_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
思路:
找到超出的数,离两个边界的最值即可
代码:
#include<iostream>
#define int long long
using namespace std;
const int N = 1e6 + 10;
int a[N];
int mod = 1000000007;
void slove()
{
int n,sum=0;
cin>>n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
sum += a[i];
}
int l, r;
cin >> l >> r;
if (sum<l*n || sum>r*n)
{
cout << -1 << "\n";
return;
}
int minn = 0, maxx = 0;
for (int i = 1; i <= n; i++)
{
if (a[i] < l)
minn += (l - a[i]);
else if(a[i]>r)
maxx += (a[i] - r);
}
cout << max(minn, maxx) << "\n";
}
signed main()
{
int t=1;
//cin >> t;
while (t--)
{
slove();
}
}
D-区间问题1_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
思路:
数据范围小,直接模拟即可
代码:
#include<iostream>
#define int long long
using namespace std;
const int N = 1e5 + 10;
int a[N];
int sum[N];
void slove()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
int q;
cin >> q;
while (q--)
{
int c, l, r, d, x;
cin >> c;
if (c == 1)
{
cin >> l >> r >> d;
for (int i = l; i <= r; i++)
a[i] += d;
}
if (c == 2)
{
cin >> x;
cout << a[x] << "\n";
}
}
}
signed main()
{
int t=1;
//cin >> t;
while (t--)
{
slove();
}
}
E-哥德巴赫猜想_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
思路:
模拟,枚举
代码:
#include<iostream>
#define int long long
using namespace std;
const int N = 1e6 + 10;
int a[N];
int mod = 1000000007;
int judge(int x)
{
if (x <= 1)
return 0;
else
{
for (int i = 2; i * i <= x; i++)
{
if (x % i == 0)
return 0;
}
}
return 1;
}
void slove()
{
int n;
cin >> n;
int flag = 0;
for (int i = 1; i < n; i++)
{
if (judge(i) == 1)
{
for (int j = 1; j < n; j++)
{
if (judge(j) == 1 && judge(n - i - j) == 1)
{
cout << i << " " << j << " " << n - i - j << "\n";
flag = 1;
break;
}
}
}
if (flag == 1)
break;
}
if (flag == 0)
cout << "-1\n";
}
signed main()
{
int t=1;
cin >> t;
while (t--)
{
slove();
}
}
G-爬楼梯_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
思路:
简单dp
代码:
#include<iostream>
#define int long long
using namespace std;
const int N = 1e6 + 10;
int a[N];
int mod = 1000000007;
void slove()
{
int n;
cin >> n;
a[1] = 1;
a[2] = 2;
a[3] = 4;
for (int i = 4; i <= n; i++)
{
a[i] = (a[i-1]+a[i-2]+a[i-3])%mod;
}
cout << a[n];
}
signed main()
{
int t=1;
//cin >> t;
while (t--)
{
slove();
}
}
H-区间问题2_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
思路:
ST表或者线段树都可以,ST表更简单但只适合不会改变的情况
代码:
#include<iostream>
#include<algorithm>
#include<cmath>
#define int long long
using namespace std;
const int N = 2e6 + 10;
int a[N];
int f[N][21],n;
int mod = 1000000007;
inline int read()
{
char c=getchar();int x=0,f=1;
while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();} //快读模板
return x*f;
}
void ST_create()
{
int k = log2(n)+1;
for (int j = 1; j <= k; j++)
for (int i = 1; i <= n - (1 << j) + 1; i++)//n-2^j+1
f[i][j] = max(f[i][j - 1], f[i + (1 << (j - 1))][j - 1]);
}
void slove()//st表
{
n=read();
for (int i = 1; i <= n; i++)
f[i][0]=read();
ST_create();
int q;
cin >> q;
while (q--)
{
int l, r;
l=read(),r=read();
int k = log2(r - l + 1);
cout << max(f[l][k], f[r - (1 << k) + 1][k])<<"\n";
}
}
signed main()
{
int t=1;
//cin >> t;
while (t--)
{
slove();
}
}
I-小美想打音游_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
思路:
取中位数即可
代码:
#include<iostream>
#include<algorithm>
#define int long long
using namespace std;
const int N = 1e6 + 10;
int a[N];
int mod = 1000000007;
void slove()
{
int n;
cin >> n;
for (int i = 1; i <= n; i++)
cin >> a[i];
sort(a + 1, a + 1 + n);
int mid;
if (n % 2 == 0)
mid = n / 2;
else
mid = n / 2 + 1;
int sum = 0;
for (int i = 1; i <= n; i++)
{
sum += abs(a[mid] - a[i]);
}
cout << sum+1 << "\n";
}
signed main()
{
int t=1;
//cin >> t;
while (t--)
{
slove();
}
}
J-平方根_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)![](https://i-blog.csdnimg.cn/direct/a697c2edf16e49cb882e744b3bb15c95.png)
思路:
简单开根号
代码:
#include<iostream>
#include<cmath>
#define int long long
using namespace std;
void slove()
{
int n;
cin >> n;
int a=sqrt(n);
cout << a << "\n";
}
signed main()
{
int t;
cin >> t;
while (t--)
{
slove();
}
}
K-小美想游泳_河南萌新联赛2024第(五)场:信息工程大学 (nowcoder.com)
思路:
创建图,跑一下
代码:
#include <iostream>
#include<vector>
#include<queue>
using namespace std;
#define int long long
int mod = 1e9 + 7;
vector<pair<int, int>> g[10005];
vector<int> dis(10005, 1e9),vis(10005, 0);
void slove()
{
int n, m; cin >> n >> m;
while (m--)
{
int a, b, c;
cin >> a >> b >> c;
g[a].push_back({ b,c });
g[b].push_back({ a,c });
}
int s, t;
cin >> s >> t;
priority_queue<pair<int, int>> q;
dis[s] = 0;
q.push({ 0, s });
while (!q.empty())
{
auto [d, u] = q.top();
q.pop();
for (auto [v, w] : g[u])
{
if (dis[v] > max(dis[u], w))
{
dis[v] = max(dis[u], w);
q.push({ -dis[v],v });
}
}
}
cout << dis[t];
}
signed main()
{
int t = 1;
//cin>>t;
while (t--)
{
slove();
}
}