首页 > 编程语言 >2024牛客寒假算法基础集训营5

2024牛客寒假算法基础集训营5

时间:2024-02-21 19:44:19浏览次数:38  
标签:std int long 2024 牛客 solve using 集训营 define

2024牛客寒假算法基础集训营5

比赛链接

赛时出了五题,被自己不严谨的思维害惨了,之后的题晚几天再补,要开学了

A.mutsumi的质数合数

思路

既不是质数也不是合数恐怕非1莫属了吧

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin()+1,x.end()

void solve(){
	int n; cin>>n;
	std::vector<int> a(n+1);
	int ans=0;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		if(a[i]!=1){
			ans++;
		}

	}
	cout<<ans<<endl;
	
	
}

signed main(){
	ios::sync_with_stdio(false); cin.tie(nullptr);
	int t=1;
	// cin>>t;
	
	while(t--){
		solve();
	}
	return 0;

}

C.anon的私货

思路

感觉这题没多少需要特别注意的地方,一定要记住在两个数中间插入0两边的数都会受到影响的

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
#define all(x) x.begin()+1,x.end()

void solve(){
    int n; cin>>n;
    int ans=0;

    std::vector<int> a(n+2,0);
    std::vector<int> s(n+2,0);
    for(int i=1;i<=n;i++){
        cin>>a[i];
        // s[i]=s[i-1]+a[i];
    }
    int res=0;
    int l=0;
    a[n+1]=1e18;
    a[0]=1e18;
    for(int i=1;i<=n+1;i++){
        int minn=min(a[i],a[i-1])-1;
        ans+=minn;
        a[i]-=minn;
        a[i-1]-=minn;
        
    }
    // for(int i=1;i<=n;i++){
    //     cout<<s[i]<<" ";
    // }
    
    cout<<ans<<endl;


    // cout<<ans<<endl;

    
       
}

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);

    int t=1;
    while(t--){
        solve();
    }
    return 0;

}

I.rikki的最短路

思路

就是一个简单的模拟,这题还是比较简单的,但是我写的比较复杂,应该是有更好的解决办法

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long

void solve(){
	int t,a,k; cin>>t>>a>>k;
	if(t>=0&&a>=0){
		if(a<=t){
			cout<<t<<endl;
			return ;
		}
		else{
			cout<<(t+(a-t)*2)<<endl;
			return ;
		}

	}
	else if(t>=0&&a<=0){
		if(abs(a)<=k){
			cout<<(abs(a)*2+t)<<endl;
			return ;
		}
		else{
			cout<<(t+(t+abs(a))*2)<<endl;
			return ;
		}
	}
	else if(t<=0&&a>=0){
		if(a<=k){
			cout<<(abs(t)+abs(a)*2)<<endl;
			return ;
		}
		else{
			cout<<(abs(t)+(a-t)*2)<<endl;
			return ;
		}
	}
	else if(t<=0&&a<=0){
		if(t<a){
			cout<<abs(t)<<endl;
			return ;
		}
		else{
			cout<<(t-a)*2+abs(t)<<endl;
			return ;
			
		}
	}
	
}

signed main(){
	// int t1=1; cin>>t;
	int t1=1;

	while(t1--) solve();
	return 0;

}

L.anon的星星

思路

判断局数,当我们减去星星数的绝对值之后,我们就会发现剩下的机场一定是一胜一负抵消掉的,所以只需要判断(n-x)%2是不是零就行,这里一开始我是直接模拟,想的巨麻烦,也wa了一次

Code

#include <bits/stdc++.h>
using namespace std;
// using i64 = long long;
#define int long long

void solve(){
    int n,x;
    cin>>n>>x;
    int ans=n-abs(x);
    if(ans%2){
        cout<<-1<<endl;
        return ;
    }    
    else{
        if(x<=0){
            cout<<ans/2<<" "<<ans/2+abs(x)<<endl;
            return ;
        }
        else{
            cout<<ans/2+x<<" "<<ans/2<<endl;
            return ;
            
        }
    }
}

signed main() {
    std::ios::sync_with_stdio(false);
    std::cin.tie(nullptr);
    
    int t;
    // std::cin >> t;
    t=1;

    
    while (t--) {
        solve();
    }
    
    return 0;
}

M.mutsumi的排列连通

思路

这个不难想要么是没办法分成两个连通块,要么一定可以在两次删除中出现至少两个连通块,(可惜我用map时候不小心把其中一个判断写错了,我醉了,自己搞反了可恶),我们可以用map存储下标,然后判断两个相同数字的位置,如果差小于等于1且不在两边(不在两边是位置相同的情况)是可以一次切成的

Code

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
int a[N],b[N];
void solve(){
	int n;
	cin>>n;
	std::map<int, int> mp1,mp2;

	for(int i=1;i<=n;i++){
		cin>>a[i];
		mp1[a[i]]=i;

	}
	bool f=false;
	for(int i=1;i<=n;i++){
		cin>>b[i];
		mp2[b[i]]=i;
		if(abs(mp2[b[i]]-mp1[b[i]])<=1){
			if(mp1[b[i]]==mp2[b[i]]&&i==1) continue;
			if(mp1[b[i]]==mp2[b[i]]&&i==n) continue;
			
			f=true;
		}
	}
	if(n==1){
		cout<<-1<<endl;
		return ;

	}
	if(n==2){
		if(mp1[a[1]]==mp2[a[1]]){
			cout<<-1<<endl;
			return ;
			
		}
	}
	if(f){
		cout<<1<<endl;
		return ;
	}
	else{
		cout<<2<<endl;
		
	}

	// std::map<int, int> mp1,mp2;


	
}
signed main(){
	int t=1; 
	cin>>t;


	while(t--) solve();
	return 0;

}

标签:std,int,long,2024,牛客,solve,using,集训营,define
From: https://www.cnblogs.com/du463/p/18026084

相关文章

  • 2024初三年后集训模拟测试3
    前言比赛链接难度不好说,感觉是东拼西凑的题,但是除了\(T1\)都不简单。\(T1~100pts:\)贪心+四边形不等式。\(T2~70pts:\)读假题了,是最大\(w_i\)不是固定\(w_i\),做法是二分答案+DP,不过需要单调队列优化,不会这玩意儿赛后学了好久\(qwq\)。但是读假题了还能拿......
  • weblogic CVE-2024-20931分析
    weblogic12.2.1.4.0安装我的环境:ubuntu22.04+weblogic12.2.1.4.0+jdk8(注:weblogic不支持OpenJDK)jdk下载安装:https://www.oracle.com/cn/java/technologies/downloads/archive/weblogic下载安装:https://www.oracle.com/middleware/technologies/weblogic-server-install......
  • 2024年!vscode和clangd的配置
    前言Ubuntu20系统下,使用vscode和clangd来进行代码补全和拼写检查.安装vscode直接从Ubuntu的应用商店下载vscode.安装clangd$sudoaptinstallclangd安装vscode插件-clangdvscode安装clangd插件不需要对clangd插件进行配置.不需要对clangd插件进......
  • 【CVE-2024-21626】容器逃逸漏洞修复
    哈喽大家好,我是咸鱼。好久不见,最近有一个很火的CVE——runc容器逃逸漏洞。年前的时候我们已经在测试环境进行了相关操作打算年后线上进行修复。因为今天咸鱼才开工,所以文章也就拖到了现在......
  • 2024-02-21 js 工具类(一行代码)
    1.获取浏览器Cookie的值constcookie=name=>`;${document.cookie}`.split(`;${name}=`).pop().split(';').shift();cookie('_ga');//Result:"GA1.2.1929736587.1601974046"2.将RGB转换为十六进制constrgbToHex=(r,g,b)=>&......
  • 20240221总结
    P4311士兵占领考虑先把棋盘放满,判掉无解,并把问题转化为拿走最多的棋子。这个问题就一眼最大流了,对于行和列分别建M,N个节点,源点向行节点连流量为该行最多可删个数的边,列节点向汇点连该列最多可删个数的边,对于每个可放士兵的(i,j),从行节点i向列节点j连一条流量为1的边,跑最大流......
  • 2024.2.21 LGJ Round
    A你在平面上有\(n\)个点,你每次可以从一个点跳到其右下或左上任意的点,|对每个点\(i\),求所有点到\(i\)至少跳多少次的和。点的坐标值域为\(M=2500\)。\(n\le2.5e5\).我们先考虑某个点,到所有点跳多少次。首先右下,左上都是跳一次即可。我们先考虑右上的点怎么办。我们一定......
  • 2024年2月中国数据库排行榜:PolarDB夺魁首登顶,TiDB攀升回探花
    银装素裹覆大地,春意初醒待来临。2024年2月墨天轮中国数据库流行度榜单出炉,表现最亮眼的无疑是PolarDB,其自23年7月以来一路高歌猛进,此次更是一举夺魁,彰显了云原生数据库的蓬勃发展态势,OceanBase、TiDB紧接拿下榜眼探花。榜单前十中,开源与商业平分秋色、各家数据库乘云直上,你追我赶......
  • 2024牛客寒假算法基础集训营4
    2024牛客寒假算法基础集训营4比赛地址A.柠檬可乐思路:简单的模拟,按照题目描述判断大小即可Code#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineall(x)x.begin()+1,x.end()voidsolve(){ inta,b,k; cin>>a>>b>>k; if(a>=k*b)cout<<&qu......
  • 2024年十大磁力搜索引擎排名下载教程-JAVA
    磁力技术相对比较顶尖的几大磁力厂商推荐使用磁力导航  www.okeyl.com随着互联网的发展,搜索引擎已经成为人们日常生活中必不可少的工具之一。每当我们想查找信息时,我们都会去使用搜索引擎。然而,在众多的搜索引擎中,哪些才是真正有用的呢?下面我们就来探讨一下搜索引擎前十排名。......