二月份ABC类题解

记录遇见的解除或未解出的、现阶段能看懂理解的,有价值的题目。
比赛网址:

https://vjudge.net/contest/358184#overview
https://vjudge.net/contest/358926#overview

1A.Petya and Java

按数字串长度和大小输出名称

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include <string>
using namespace std;
int main() {
	string  a;
	cin>>a;
	int n=a.size();//嗯。
	if(n<3||n==3&&a<="127") cout<<"byte"<<endl;
	else if(n<5||n==5&&a<="32767") cout<<"short"<<endl;
	else if(n<10||n==10&&a<="2147483647") cout<<"int"<<endl;
	else if(n<19||n==19&&a<="9223372036854775807") cout<<"long"<<endl;
	else cout<<"BigInteger"<<endl;
	return 0;
}

1B.Petya and Countryside

针对一个数列,题目的意思其实就是求出以某个数为中心,向左右逐渐下降的最长距离。做法是穷举,以每个数作为中心点,然后求出其最长距离,再比较找出一个最大值即可。
挺有代表性的一道题,对菜b的我启发蛮大的

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<stdlib.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include <string>
using namespace std;
int a[10001];
int main() {
	int i,n,j,maxm=-1;
	cin>>n;
	for(i=0;i<n;i++) cin>>a[i];
	for(i=0;i<n;i++){
		int m=i;int l=1;
		for(j=m-1;j>=0;j--){
			if(a[j]>a[m]) break;
			l++;
			m--;//对比数和下一位必须紧紧跟随。
		}
		m=i;//别忘了回来
		for(j=m+1;j<n;j++){
			if(a[j]>a[m]) break;
			l++;
			m++;
		}
		maxm=max(maxm,l);
	}
	cout<<maxm<<endl;
	return 0;
}

1C.Petya and File System (代补)

2A.Rank List

输入对应第i行解决问题的个数和总惩罚时间
输出rank榜上与输入组排名相同的组的数量。

没有那么简单,也够水了。以得分制统计,并让做对题得分占比重较大。

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<cmath>
using namespace std;
 
int main()
{
	int n, k, A[50], i, con=0, a, b;
	scanf("%d %d",&n,&k);
	for(i=0; i<n; i++)
	{
		scanf("%d %d",&a,&b);
		A[i]=a*50-b;
	}
	sort(A,A+n);
	for(i=0; i<n; i++)
	{	
		if(A[i]==A[n-k])
		{
			con++;
		}
	}
	printf("%d\n",con);
	return 0;
}

2B、2C代补

3C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值