牛客网小白月赛7-记录

本周做了小白月赛7,早就发现自己连小白都不算,蔡队出的题目真是毒瘤。A题一开始就wa300多发秀的飞起。

本人比较菜,做了6题,基本在思考为什么wa,无限改代码,头疼。

A、送分题。

表面送分,我没看代码,就看到输入一个整数,输出一个整数。上来直接字符串输入输出--wa,复制代码?递归超内存。把题目代码自己跑一下发现小于20180001都加上2017,大于等于的都是20182017。

#include<bits/stdc++.h>
//#include<iostream>
//#include<algorithm>
#define sc(x) scanf("%d",&x)
#define pr(x) printf("d",x)
typedef long long ll;

using namespace std;

int main(){
	ll a;
    cin>>a;
    if( a < 20180001 ){
        a = a + 2017;
    }
    else{
        a = 20182017;
    }
	cout<<a;
	
	return 0;
}

C、谁是神射手

就是算概率。这个很多符号打不出来就算了,百度也能搜到,牛客也有官方题解。算一下两边的概率作比较就可以了。

#include<bits/stdc++.h>

using namespace std;

int main(){
	int a1 , b1;
	cin>>a1>>b1;
	double a = (double)a1 / 100;
	double b = (double)b1 / 100;
	double pa = a / ( a + b - a * b );
	double pb = b * ( 1 - a ) / ( a + b - a * b );
	if( pa > pb ){
		cout<<"MWH";
	}
	else if( pa < pb ){
		cout<<"CSL";
	}
	else{
		cout<<"equal";
	}	
	return 0;
}

E、app的超能力

这题也不难,每n个变为一个加上去就行了,但是要考虑的是m==1&&n!=1还有n==1的特例。我在这里wa了很多次,最后才ac。

#include<bits/stdc++.h>
//#include<iostream>
//#include<algorithm>
#define sc(x) scanf("%d",&x)
#define pr(x) printf("d",x)

typedef long long ll;
 
using namespace std;
 
int main(){
    ll n , m;
    ll i , j;
    cin>>n>>m;
     
    if( m == 1 && n!= 1 ){
        cout<<"No";
    }
    else if( n == 1 ){
        cout<<"Yes";
    }
    else{
        ll cnt = n;
        while( cnt >= m ){      
            cnt = cnt / m + cnt % m ;
        }
        if( cnt == 1 ){
            cout<<"Yes";
        }
        else{
            cout<<"No";
        }
 
    }
 
     
 
    return 0;

}

F、bfs

表面bfs,实际上是瞎搞题,数据范围也不大,暴力也可以,stl有find函数也可以用。各种姿势过去,虽然我一开始段错误两发,用python3过的。python3也有find函数。

#include<bits/stdc++.h>
using namespace std;
 
int main()
{
    string s;
    cin>>s;
    for(int i=0;i<s.size();i++)
        s[i]=tolower(s[i]);
    int ans=s.find("bob");
    cout<<ans<<endl;
     
}

G、分苹果

扫描二维码关注公众号,回复: 5462916 查看本文章

这题一开始我就常规做法,但是一直wa了很多发,测了很多数据也过了可是就是不能ac,最后突然醒悟是一个01背包而已。容积为总质量的一半。重量价值也设为一样。

#include<bits/stdc++.h>
//#include<iostream>
//#include<algorithm>
#define sc(x) scanf("%d",&x)
#define pr(x) printf("d",x)
typedef long long ll;
 
using namespace std;
 
int main(){
    int T , M;
    int i , j;
    int w[1001] , v[1001] , f[10001];
    cin>>M;
//  fill( w , w + 1001 , 1 );
    int sum = 0;
    for(i = 1 ; i <= M; i++){
        cin>>v[i];
        w[i] = v[i];
        sum += v[i];
    }
    int arv = sum / 2;
    T = arv;
    for(i = 1 ; i <= M; i++){
        for(j = T ; j >= w[i]; j--){
            f[j] = max(f[j] , f[j - w[i]] + v[i]);
        }
    }
//  cout<<sum<<endl;
    f[T] = max( f[T] , sum - f[T] );
    cout<<sum - f[T]<<" "<<f[T];
     
    return 0;

}

I、建立文档。

一眼望过去还以为是什么线段树操作,小白赛应该也不会出这种。然后发现并没有想象中的那么难。可以用set维护记录,模拟题。我用的不是set,鉴于之前也有写过set的博客,这里放上set写的ac代码。

#include <bits/stdc++.h>
using namespace std;
 
int main()
{
    int n;
    scanf("%d", &n);
    char op[10];
    set<int> s;
    for (int i = 0; i < n; i++) s.insert(i + 1);
    while (n--)
    {
        scanf("%s", op);
        if (op[0] == 'N')
        {
            printf("%d\n", *s.begin());
            s.erase(s.begin());
        }
        else
        {
            static int x;
            scanf("%d", &x);
            if (s.find(x) == s.end())
            {
                puts("Successful");
                s.insert(x);
            }
            else
                puts("Failed");
        }
    }
}

来自菜鸡的记录。

猜你喜欢

转载自blog.csdn.net/wuhenglan/article/details/82725142