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

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

时间:2024-02-21 12:22:04浏览次数:25  
标签:std int long 2024 牛客 solve 数组 集训营 define

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

比赛地址

A.柠檬可乐

思路:

简单的模拟,按照题目描述判断大小即可

Code

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

void solve(){
	int a,b,k;
	cin>>a>>b>>k;
	if(a>=k*b) cout<<"good";
	else cout<<"bad";
	
	
}

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

}

B.左右互博

思路

讨厌鬼和小甜妹都是采用的最佳策略,这里我认为最佳策略就是每次分裂都必须有一个1,这样我们就保证了其中一个是无法继续分裂的,因此我们只要将所有不为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];
        ans+=(a[i]-1);
    }
    if(ans%2){
        cout<<"gui"<<endl;

    }
    else{
        cout<<"sweet"<<endl;
        
    }

    
}

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

}

C.冬眠

思路

按理说模拟即可,大家可以去试试,后续补题有点发懒了,所以就没有认真看看

Code

#include<bits/stdc++.h>

using namespace std;
const int N = 110;
int n,m,x,y  ; 
char a[N][N];
int p,q;
int op[110] , z[110];

int  main()
{
    cin >> n >> m >> x >> y;
    for(int i = 1 ; i <= n ; i ++) 
    {
        for(int j = 1 ; j <= m ; j ++)   
        {
            cin >> a[i][j];
        }
    }
    cin >> p >> q;
    for(int i = 1 ; i <= q ; i++) cin >> op[i] >> z[i];
    while(p --)
    {
        for(int i = 1 ; i <= q ; i ++)
        {
            if(op[i] == 1)
            {
                for(int j = m ; j >= 1 ; j --) a[z[i]][j+1] = a[z[i]][j];
                a[z[i]][1] = a[z[i]][m+1];
            }
            if(op[i] == 2)
            {
                for(int j = n ; j >= 1 ; j --) a[j+1][z[i]] = a[j][z[i]];
                a[1][z[i]] = a[n+1][z[i]];
            }
        }
    }
    cout<<a[x][y];
}

D.守恒

思路

数组a可以进行任意次操作,因为是一个数+1,一个数-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);
    for(int i=1;i<=n;i++) cin>>a[i];
    int ans=0;
    for(int i=1;i<=n;i++){
        ans+=a[i];
    }
    int res=0;
    if(n==1){
        cout<<1<<endl;
        return ;

    }
    else{
        // int up1=sqrt(ans)+1;
        for(int i=1;;i++){
            if(ans/i<n){
                break;
            }
            if(ans%i==0){
                res++;
            
            }
        }
    }

    cout<<res<<endl;
    
}

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

}

E.漂亮数组

思路

这应该是一个贪心题,我们如何去找是k的倍数的一个子数组呢,事实上这一步就需要用到前缀和思想,我们将给定的数组进行前缀和处理,方便后续的使用,之后我们找到两个前缀和余数相同的地方,那么以这两个位置中间的子数组就是一个漂亮数组,但是我们需要保证的是靠左的那个位置应该是要比我们之前已经分好的位置要大,不然也会影响到之前我们分好的数组,这里我用的map,但是用set也是可以的

Code

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

void solve(){
    int n,k; cin>>n>>k;
    std::vector<int> a(n+1);
    std::vector<int> s(n+1,0);
    std::map<int, int> mp;
    mp[0]=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        s[i]=s[i-1]+a[i];
    }
    int ans=0;
    int pre=-1;

    for(int i=1;i<=n;i++){
        if(mp.count(s[i]%k)&&mp[s[i]%k]>=pre){
            ans++;
            pre=i;
        }
        mp[s[i]%k]=i;
    }
    cout<<ans<<endl;
    
}

signed main(){

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

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

相关文章

  • 2024年十大磁力搜索引擎排名下载教程-JAVA
    磁力技术相对比较顶尖的几大磁力厂商推荐使用磁力导航  www.okeyl.com随着互联网的发展,搜索引擎已经成为人们日常生活中必不可少的工具之一。每当我们想查找信息时,我们都会去使用搜索引擎。然而,在众多的搜索引擎中,哪些才是真正有用的呢?下面我们就来探讨一下搜索引擎前十排名。......
  • [WC/CTS2024] 水镜
    [WC/CTS2024]水镜不知道大家还记不记得这样一件事情:当我们要证明一个数列\(\{a_n\}\)单调递增时,只需证\(a_i<a_{i+1}\)。这是我场上的核心思路:如果要说明二元组\((u,v)\)合法,只需使得其中每相邻两项都递增。注意到这题的\(L\)是我们自己定的,所以这里就有一个思路:......
  • 刷题记录_2024寒假2/19~2/21
    P4287[SHOI2011]双倍回文考虑马拉车,但是我不会马拉车怎么办,考虑PAM我们在记录一般的fail之外再记录一个trans指针指向小于等于当前节点长度一半的最长回文后缀然后枚举每个节点#include<bits/stdc++.h>usingnamespacestd;chars[2000001];intlen[2000001],trans[2000......
  • 【2024-02-08】连岳摘抄
    23:59保只要你心中有爱,坚定不移的爱,全心全意的爱,你就能够克服很多乱七八糟的人生难题。                                                 ——罗伯特麦卡蒙当父母老......
  • 【2024-02-07】连岳摘抄
    23:59年意其实不在任何其他地方,它原本就在你的心里,也在所有人的心里。年意不过是一种生活的情感、期望和生机。而年呢?就像一盏红红的灯笼,一年一度把它迷人地照亮。                                   ......
  • 中国医疗健康行业2023年关键词盘点及2024年趋势展望
    经历了爆发式、跨越式发展之后,中国医药和医疗健康产业迈入新的发展阶段。2022年,受到资本市场整体下行、医药医疗行业增长放缓等因素影响,医疗健康领域的投融资回归理性,企业估值加速去泡沫化,市场开始自我梳理和审视。中国医药健康赛道创新趋势如何?敬请关注本文关于启明创投主管合伙......
  • 【2024-02-05】就想一起
    20:00失败并非总是错误的,它可能是我们在当时所能做的最好选择。真正的错误是停止尝试。                                                 ——斯金纳母亲昨晚,再次表达......
  • 【2024-02-06】连岳摘抄
    23:59要胆大,更要心细。保持心情快乐,骑着马去会会命运。                                                 ——托尔金一个男人40多岁,你也认识20多年了,评价依然是“非......
  • 面试题2024
    1.美团真题1 - 给定场景,说说你的测试用例设计思路2.美团真题2 - 登录场景session原理及测试注意事项Session的原理主要涉及客户端和服务器之间的交互过程:用户提交登录信息:当用户在登录页面输入用户名和密码,并点击登录按钮时,浏览器会发送一个HTTP请求到服务器(向服务器发送登......
  • 云原生周刊:在 Kubernetes 集群中使用通配符证书 | 2024.2.19
    开源项目推荐kube-fledgedkube-fledged是一个KubernetesOperator,用于直接在Kubernetes集群的工作节点上创建和管理容器映像的缓存。它允许用户定义图像列表以及这些图像应缓存(即拉取)到哪些工作节点上。因此,应用程序Pod几乎立即启动,因为不需要从注册表中提取映像。kube-f......