Acwing第 50 场周赛【完结】

https://www.acwing.com/activity/content/competition/problem_list/1779/

4416. 缺少的数【签到】

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int n,m,t;
int a[N];
map<int,int>mp;
int main(void)
{
    
     
	cin>>n;
	for(int i=1;i<=n;i++) cin>>a[i],mp[a[i]]++;
	int ans=1;
	for(int i=1;i<=n;i++) if(mp[i]==0) ans=i; 
	cout<<ans;
	return 0;
}

4417. 选区间【思维】

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
const int N=1e5*5+10;
int n,m,a[N],b[N];
int main(void)
{
    
    
    int l1=1e9,r1=-1e9;
    int l2=-1e9,r2=1e9;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
    
    
        cin>>a[i]>>b[i];
        l1=min(l1,b[i]);
        l2=max(l2,a[i]);
    }
    cin>>m;
    for(int i=1;i<=m;i++)
    {
    
    
        cin>>a[i]>>b[i];
        r1=max(r1,a[i]);
        r2=min(r2,b[i]);
    }
    cout<<max({
    
    r1-l1,l2-r2,0});
    return 0;
}

4418. 选元素【DP】

在这里插入图片描述

#include<bits/stdc++.h>
using namespace std;
const int N=210;
typedef long long int LL;
LL f[N][N],a[N];//f[i][j] 前i个里选j个,且选i
int main(void)
{
    
    
    int n,k,m; cin>>n>>k>>m;
    memset(f,-0x3f,sizeof f);
    f[0][0]=0;
    for(int i=1;i<=n;i++) cin>>a[i];
    for(int i=1;i<=n;i++)
    {
    
    
        for(int j=1;j<=m;j++)
        {
    
    
            for(int u=max(0,i-k);u<i;u++) 
                f[i][j]=max(f[i][j],f[u][j-1]+a[i]);
        }
    }
    LL res=-1;
    for(int i=n-k+1;i<=n;i++) res=max(res,f[i][m]);
    cout<<res;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_46527915/article/details/124854963
今日推荐