ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

牛客小白月赛37

2021-08-27 23:02:55  阅读:228  来源: 互联网

标签:题意 int sum 37 long 牛客 小白月赛 using include


蒟蒻能写几道水题题解吧

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;
}

标签:题意,int,sum,37,long,牛客,小白月赛,using,include
来源: https://www.cnblogs.com/guiyou/p/15195511.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有