Logo lxn 的博客

博客

20230917普及组模拟赛题解

...
lxn
2025-12-01 12:57:44

本文章由 WyOJ Shojo 从洛谷专栏拉取,原发布时间为 2023-09-17 19:28:54

T1:

最大公约数与最小公倍数。注意数据范围,要用$long long$ .

#include <bits\/stdc++.h>
using namespace std;
long long gcd(long long a,long long b)
{
    if(b==0) return a;
    else return gcd(b,a%b);
}
long long lcm(long long a,long long b)
{
 return a*b\/gcd(a,b);
}
int main()
{
	long long a,b,c,i;
	cin>>a>>b>>c;
	i=lcm(a,b);
	cout<<lcm(i,c);
	return 0;
 } 

T2:

\/*细节
判定无解
本题中答案为 
0
0 不代表无解,如

1 0
0 114514
有解且答案为 0.
因此可以将 
ans 预设为 −1,程序结束时ans 若仍为 −1 则无解。*\/
#include<bits\/stdc++.h>
#define N 1000001
using namespace std;
typedef long long ll;
ll n,k,x[N],ans=-1;
bool flag;
int main(){
    cin>>n>>k;
    for(ll i=1,a,b;i<=n;i++){
        cin>>a>>b;
        x[a]+=b;
    }
    for(ll i=0;i<N-k;i++){
        if(!(x[i]&&x[i+k])||(k==0&&x[i]<2))continue;
        if(k==0)ans=max(ans,x[i]*i);
        else ans=max(ans,min(x[i+k],x[i])*(2*i+k));
    }
    if(ans==-1)cout<<"NO"<<endl;
    else cout<<ans<<endl;
    return 0;
}

T3

#include<bits\/stdc++.h>
#define ll long long
#define endl '\n'
using namespace std;
const int N=2e5+10;
struct node{
	int k,id;
}a[N];
int n,b[N],c[N],ft[N],bk[N];
bool cmp(node x,node y){
	return x.k<y.k;
}
int main(){
	
	cin>>n;
	for(int i=1;i<=n+1;i++) cin>>a[i].k,a[i].id=i;
	for(int i=1;i<=n;i++) cin>>b[i];
	sort(a+1,a+n+2,cmp);
	sort(b+1,b+n+1);
	for(int i=1;i<=n;i++) ft[i]=max(ft[i-1],max(0,a[i].k-b[i]));
	for(int i=n;i>=1;i--) bk[i]=max(bk[i+1],max(0,a[i+1].k-b[i]));
	for(int i=1;i<=n+1;i++) c[a[i].id]=i;
	for(int i=1;i<=n+1;i++) cout<<max(ft[c[i]-1],bk[c[i]])<<' ';
	return 0;
}

T4:P6394 樱花,还有你

题目来源:P6394 樱花,还有你

评论

暂无评论

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。