首页 > 编程语言 >2022牛客寒假算法基础集训营2 签到题7题

2022牛客寒假算法基础集训营2 签到题7题

时间:2023-03-25 13:39:03浏览次数:38  
标签:return 签到 LL cin long 牛客 int 集训营 mod


1、C 小沙的杀球

  • 如果你能够杀球但不杀球,虽然回复了体力,但你后续可能会没有机会继续杀球,并且杀球次数相同,那么回复的体力是相同的,所以在同等条件下,我们应该尽可能多的杀球
  • 不开long long 会爆炸
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
    LL x, a, b;  cin>>x>>a>>b;
    string s;  cin>>s;
    LL cnt = 0;
    for(char ch : s){
        if(ch=='1' && x>=a){
            x -= a;  cnt++;
        }else{
            x += b;
        }
    }
    cout<<cnt<<"\n";
    return 0;
}

2、K-小沙的步伐

  • 依照题意,如果是5就不动,不是5的话对非5以外的点添加一次次数的同时对5添加一次即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int a[200];
int main(){
    string s;  cin>>s;
    for(char ch : s){
        if(ch!='5')a[ch-'0']++, a[5]++;
    }
    for(int i = 1; i <= 9; i++){
        printf("%d ", a[i]);
    }
    return 0;
}

3、E-小沙的长路

  • 对于最长路的最小值,我们考虑,如果图上有环,那么我们肯定能尽可能多的走环,这样的话我一定会比我不走环更长,所以我们构造的图要尽可能的没环。在没环的情况下,我们只会经过每个点各一次,所以总长度是n-1
  • 对于最长路的最大值,我们考虑尽可能的将每一条路都走遍,我们可以理解为对一个完全图进行删边,我们需要删尽可能少的边,从而使他能够从头走到尾,也就是构造出一个欧拉回路
    又由欧拉回路的定义可知,我们需要将每个点的出入度控制为偶数即可组成欧拉回路,所以奇偶特判即可。
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
int main(){
    LL n;  cin>>n;
    cout<<n-1<<" "<<(n%2==1? n*(n-1)/2 : n*(n-1)/2-n/2+1);
    return 0;
}

4、H-小沙的数数

  • 由于在二进制拆位最后同位情况下如果存在不止一个一,那么异或之后的贡献一定小于我们的费用,所以我们要保证对于每一位的个数要么是0,要么是1,这样的话才能保证a[^]=a[+]
  • 随后我们发现对于每一位来说,他们均不相互干扰,那么他们可能产生的情况便都是n种,所以我们只需要求二进制下m有多少个1,随后求

    标签:return,签到,LL,cin,long,牛客,int,集训营,mod
    From: https://blog.51cto.com/gwj1314/6149343

相关文章