牛客小白月赛37

Posted 归游

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客小白月赛37相关的知识,希望对你有一定的参考价值。

蒟蒻能写几道水题题解吧

A

根据题意模拟,都还活着就加上两人攻击力和,同时小于等于0,直接跳出,还有一方存活加上10*攻击力退出

#include<cstdio>
#include<cstring>
#include<iostream>
 
using namespace std;
int a,b,h,k;
long long ans=0;
int main(){
    cin>>a>>h>>b>>k;
    while(a||b){
        ans+=(a+b);
        h-=b;k-=a;
        if(h<=0 && k<=0) break;
        if(h<=0){ans+=b*10;break;}
        if(k<=0){ans+=a*10;break;}
    } cout<<ans<<endl;return 0;
}

D

读懂题意就很好做

建立一个后缀和数组,顺便记录位置

然后建立一个ans数组
记录sum[n-k+1~n]-sum[n+1]的满足感羞耻度和起始位置(起始位置即i-k+1)
再记录sum[i-k+1]-sumi

再按照题意排序即可

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,k;
const int maxn=1e5+10;
struct node{
	long long a,b;
}e[maxn];
struct nod{
	long long a,b,p;
}sum[maxn],ans[maxn];
bool cmp(nod x,nod y){//按照题意写cmp函数
	if(x.a!=y.a) return x.a>y.a;
	if(x.b!=y.b) return x.b<y.b;
	return x.p<y.p;
}
int main(){
	ios::sync_with_stdio(0); 
	cin>>n>>k;
	for(int i=1;i<=n;++i) cin>>e[i].a;
	for(int i=1;i<=n;++i) cin>>e[i].b;
	for(int i=n;i>=1;--i){//后缀数组
		sum[i].a=sum[i+1].a+e[i].a;
		sum[i].b=sum[i+1].b+e[i].b;
		sum[i].p=i;
	}int top=0;
	for(int i=0;i<k;++i){//记录sum[n-k+1~n]-sum[n+1]的满足感羞耻度和起始位置(起始位置即i-k+1)

		ans[++top].a=sum[n-i].a-sum[n+1].a;
		ans[top].b=sum[n-i].b-sum[n+1].b;
		ans[top].p=n-i;
	}
	for(int i=n-1;i-k+1>=1;--i){//再记录sum[i-k+1]-sum[i](k<=i<=n)

		ans[++top].a=sum[i-k+1].a-sum[i+1].a;
		ans[top].b=sum[i-k+1].b-sum[i+1].b;
		ans[top].p=i-k+1;
	}
	sort(ans+1,ans+1+top,cmp);
	cout<<ans[1].p<<endl;
	return 0;
}

F

(乱提一嘴)其实如果涂完有点像国际象棋的棋盘,左上角为黑色,右下角也为黑色,共64个格子
但是这道题的格子数=n*m

两个人轮着涂,采取最优策略,两个人都不会涂到相同颜色旁边,除非迫不得已
因为小红先手
当格子数为奇数的时候小红赢
当格子数为偶数的时候小紫赢

#include<cstdio>
#include<cstring>
#include<iostream>
 
using namespace std;
int n,m;
int main(){
    cin>>n>>m;
    if((long long)(n*m)%2) cout<<"akai";
    else cout<<"yukari";
    return 0;
}

J

读入
输出时忽略最后三个字符即可

#include<cstdio>
#include<cstring>
#include<iostream>

using namespace std;
string s;
int main(){
    getline(cin,s);
    int len=s.length()-3;
    for(int i=0;i<len;++i) cout<<s[i];
    return 0;
}

以上是关于牛客小白月赛37的主要内容,如果未能解决你的问题,请参考以下文章

牛客小白月赛37 I 加减

牛客小白月赛37

牛客小白月赛37部分题解

牛客小白月赛37 E.紫妹永不服输(构造)

牛客小白月赛#69(A-E)

牛客小白月赛2 总结