其他分享
首页 > 其他分享> > 【20欢乐年末赛】

【20欢乐年末赛】

作者:互联网

【20欢乐年末赛】@TOC

zhb的英语作业

贫穷的zhb

zhb带大家买手办

混元zhb

打工人zhb

zhb的英语作业~~~~
众所周知,zhb的英语非常非常差,甚至一看见英文单词就头痛,zhb的英语老师给他留了一项作业,想让他求出一个字符串中最长的连续出现的字符,以及它出现的次数,如果这样的字符不止一个,则输出第一个。zhb的英语马上就要挂科了,你能帮他完成这项任务吗?

输入

第一行一个整数N,表示测试数据的组数。
每组数据占一行,包含一个不含空白字符的字符串,字符串长度不超过200。

输出

共一行,输出最长的连续出现的字符机器出现次数,中间用空格隔开.

样例输入

2
aaaaabbbbbcccccccdddddddddd
abcdefghigk

样例输出 Copy

d 10
a 1

/*首先要注意是连续一串字符找最长,,所以可以用一个循环去写。
还有就是要控制边界,用char a[],更好来控制,反正string a再控制边界无法编译
*/

#include<iostream>
#include<string>
#include<cstring>
using namespace std;
char s[205];
int main()
{
	int n,t,maxn=0,e;
	char w;
	cin>>n;
	while(n--)
	{
		t=0;int g=0;
		maxn=0;
		cin>>s;
		e=strlen(s);
		s[e]='1';w=s[0];//控制边界,给w赋值以防不进入循环
		for(int i=0;i<e;i++)
		{
			*if(s[i]==s[i+1])*
			{
				t++;
			}
			*else*
			{
				if(t>maxn)
				{
					maxn=t;
					w=s[i];
				}
				t=0;//一定要注意写在if的外面
			}
		}
		cout<<w<<" "<<maxn+1<<endl;//maxn要加一
	}
}

贫穷的zhb
题目描述

由于zhb非常喜欢买手办,但是他非常贫穷,所以他想通过炒股来赚钱买手办!
给定一个长度为N的数组,数组中的第 i 个数字表示一个给定股票在第 i 天的价格,请计算zhb所能获得的最大利润。zhb可以尽可能的完成更多的交易(多次买卖一支股票)。
注意:zhb不能同时参与多笔交易(zhb必须在再次购买前出售掉之前的股票)。

输入

第一行包含整数 N,表示数组长度。
第二行包含 N 个不大于 100000 的正整数,表示完整的数组。
1 ≤ N ≤ 10^5
输出
输出一个整数,表示最大利润。

样例输入

6
7 1 5 3 6 4

样例输出

7

提示
样例解释
样例1:在第 2 天(股票价格 = 1)的时候买入,在第 3 天(股票价格 = 5)的时候卖出, 这笔交易所能获得利润 = 5-1 = 4 。随后,在第 4 天(股票价格 = 3)的时候买入,在第 5 天(股票价格 = 6)的时候卖出, 这笔交易所能获得利润 = 6-3 = 3 。共得利润 4+3 = 7。(方式不唯一)
/*思路,,先找到一个较小的数(比前一个数小就行),然后在这个数后面依次找,找比它大的(比方说1 2 3 4定位到1,找到4才停)然后从这个数再开始定位。
代码如下

#include<iostream>
using namespace std;
const int maxn=1e5+10;
long int a[maxn];
int main()
{
	long int n,sum=0;
	cin>>n;
	for(long int i=0;i<n;i++)
	{
		cin>>a[i];
	}
	a[n]=0;//限制了边界
	long int i=0;
	for(;i<n-1;i++)//这样写为了后面调整定位
	{
		for(long int j=i+1;j<n;j++)
		{
			if(a[i]<a[i+1]&&a[j+1]<a[j])//用这种方式找到
			{
				sum=sum+a[j]-a[i];
				i=j;//定位调整
				break;//加一次就要重新去定位了
			}
		}
	}
	cout<<sum;
}

zhb带大家买手办
题目描述

由于炒股赚了钱,zhb终于能跟大家一起买手办了!
现有m个手办,每个手办价钱为 a[i] 。有 n 个人,每个人买手办想花的钱为 b[i]。
zhb想根据手办的价钱,分别给每个人推荐一个手办(不同的人可以推荐重复的手办),要求手办价格与每个人买手办想花的钱相差最小(可高可低),这个最小值为不满意度,求所有人不满意度和的最小值。

输入

第一行读入两个数m, n。m表示手办数,n表示人数。
第二行共有m个数,表示m个手办的价格。
第三行有n个数,表示n个人买手办想花的钱
m ≤ 100000,n ≤ 100000,a[i] ≤ 10^6,b[i] <= 10^6

输出

一行,为最小不满意度之和

样例输入

4 3
513 598 567 689
500 600 550

样例输出

32

/*将例子(a[])排序,然后二分一个个查b[],就是要注意后面的判断条件

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
long int a[100005],b[100005];

long int m,n,sum=0;
int main()
{
	cin>>m>>n;
	for(long int i=0;i<m;i++)
	{
		cin>>a[i];
	}
	for(long int i=0;i<n;i++)
	{
		cin>>b[i];
	}
	sort(a,a+m);
	for(long int i=0;i<n;i++)
	{
		long int l=0,r=m;
		while(l<r)
		{
			long int mid=(l+r)/2;
			if(a[mid]<=b[i]) l=mid+1;
			else r=mid;
		}
		*if(b[i]<a[0])
			sum=sum+a[0]-b[i];*//非常重要,那个数不在例子范围内要这样做
		else
		sum=sum+min(abs(a[l]-b[i]),abs(a[l-1]-b[i]));
	}
	cout<<sum;
}

混元zhb
题目描述

zhb开办的太极门过于火爆,聪明的zhb发现只考核混元功法已经不足以满足学生毕业的需要,于是他想出来了一个新的考核办法。每一个考试的学生zhb会给出一个句子,学生需要将里面出现的6进行替换。但它可不是乱替换的, 只有当出现超过3 个连续的 6时,需要替换为"9";但如果有超过 9 个连续的 6,则将这串连续的 6 替换成"hun yuan zhb"。
下面请你帮助zhb完成考核

输入

输入在一行中给出一句话,即一个非空字符串,由不超过 1000个标点符号、英文字母、数字和空格组成,以回车结束。

输出

从左到右扫描输入的句子:如果句子中有超过 3 个连续的 6,则将这串连续的 6 替换成 9;但如果有超过 9 个连续的 6,则将这串连续的 6 替换成"hun yuan zhb"。其他内容不受影响,原样输出。

样例输入

it is so 666 really 6666 what else can I say 6666666666

样例输出

it is so 666 really 9 what else can I say hun yuan zhb

/这道题用类似”zhb的英语作业“的方式去做,但它要注意累加到相应的6就进行输出/
具体代码如下

#include<iostream>
#include<string>
#include<string.h>
using namespace std;
char s[1010];
int t;
int main()
{
	gets(s);
	for(int i=0;i<strlen(s);i++)
	{
		if(s[i]!='6')
			cout<<s[i];
		if(s[i]=='6'&&s[i+1]=='6')
			t++;
		if(s[i]=='6'&&s[i+1]!='6')
		{
			if(t+1<=3)
			{	
				for(int j=0;j<=t;j++)
					cout<<"6";
			}
			if(t+1>3&&t+1<=9)
				cout<<"9";
			if(t+1>9)
				cout<<"hun yuan zhb";
			t=0;
		}
	}
}

打工人zhb
题目描述

贫穷的zhb最近因为疫情资金链断裂,不得不开启了打工人的生活,心灵手巧的他找到了一份贴瓷砖的工作。他来到了雇主的家里,雇主的地面是一个2×n的长方形方格 ,但是极其挑剔的雇主要求zhb只能用1× 2 的瓷砖铺满地面,并且要求zhb提供所有符合他要求的方案,这让zhb非常为难,究竟有多少方法呢?请你帮帮他。
例如:例如n=3时,为2× 3方格的地面,瓷砖的铺放方案有三种,如下图:

在这里插入图片描述

输入

输入数据由一行组成,包含一个整数n,表示该测试实例的长方形方格的规格是2×n (0<n<=50)。

输出

对于测试实例,请输出铺放方案的总数.

样例输入

3

样例输出

3

思路: 这就是斐波那契数列的运用,可以举几个例子发现1-1,2-2,3-3,4-5
所以就写吧,注意数组开的类型要用long,要不然就超了

#include<iostream>
using namespace std;
long int f[1000];
int main()
{
	int t;
	f[1]=1;f[2]=2;
	cin>>t;
	for(int i=3;i<=t;i++)
		f[i]=f[i-1]+f[i-2];
	cout<<f[t]<<endl;
	
}

标签:输出,20,int,样例,long,zhb,欢乐,年末,include
来源: https://blog.csdn.net/Roselucky/article/details/111027313