Contest1003 – 河南工程学院2022级新生周赛(三)

目录

1,6男

2,我要拿最多的money2.0

3,极致完美的AK

4,吃豆人

5,胡辣汤啊胡辣汤

6,HF波那契数列

7,小朱要解密码

8,苦命的毅哥

 

1,6男

题目描述

ZY看透了世态炎凉,对于社交以及爱情感觉十分疲倦,当听到他的好妹妹跟他说:“我想和你在稻城亚丁相遇、在丽江古城相拥、在巴黎铁塔相恋、在捷克布拉格相吻、在希腊爱琴海相爱、在往后余生相守”
他会敷衍一下扣一个6,时间长久之后,好妹妹感觉到十分生气,看见ZY扣6就想打他一巴掌,但是由于ZY频繁却又不连续的扣6,导致好妹妹感到为难,因为要是偶然的一次扣6就打ZY,她感到不太合适,于是好妹妹想要找到ZY扣的最多的一次6的个数,并以此为依据和ZY好好算账,你能帮好妹妹查找吗?注意:ZY的消息可能夹杂空格

 

输入

ZY的消息,其长度L的范围为(0<=L<=1000)

输出

由6组成的字串的最大长度

样例输入 

6666asd6asda666sad6a6d666a66sd666666

样例输出 

6
#include <bits/stdc++.h>
const int N =1005;
using namespace std;
int main(){
	char s[N];
	int temp=0,sum=0;
	gets(s);
	for(int i=0;s[i]!='\0',i<strlen(s);i++){
		if(s[i]=='6')
		sum++;
		else{
			if(sum>=temp)
			temp=sum;
			sum=0;
		}
		if(i==strlen(s)-1&&sum>=temp)//需要考虑的一点是 ,最大字串在字符串尾部 
		temp=sum;
	}
	cout<<temp;
	return 0;
}

2,我要拿最多的money2.0

 

这道题和洛谷上的一道题非常相似

P1789 【Mc生存】插火把 – 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

题目描述

mincraft!!!

6ae1e24ffc19e0439e6d7667c32539d7.png

在一款名为WC的游戏中,小朱同学创建了一个账号,众所周知小朱同学非常喜欢钱,于是在WC中,小朱同学偷偷潜入了小张同学的金库,小张同学非常生气,于是决定找到小朱同学并狠狠地教训他一顿,小张同学不知道小朱同学在哪个位置,于是决定用火把照亮一部分地方找到小朱同学,但是小朱同学非常狡猾,躲避了小张同学的火把照亮位置,并偷走了含有最多金币的箱子,请你根据小张同学的描述,推测一下小朱同学偷走的所有箱子里含有最多金币数量的箱子里的金币个数是多少; 如果小朱同学无法躲避小张同学火把的照亮,一枚金币都拿不到,则输出-1;

注:火把照亮的形状:

50899376f714d33be8027885f4af5f88.png




 

输入

第一行输入三个整数n,m,q,代表小张有n行,m列的箱子和扔了q个火把; 接下来输入n行,每行m个数据Aij,代表这个位置的箱子藏有多少金币(0<=Aij<=10000) 接下来q行给出x,y,代表这些地方被丢上了火把。 题目保证5<=n,m<=100,0<=q<=5000, 0<=x,y<n,m

输出

请输入出没有被火把照亮的地方中,小朱同学能偷走的箱子中含有最多金币数量的箱子里的金币个数是多少,数组下标从0开始

样例输入 

5 5 1
169 643 112 940 732 
391 788 871 194 985
438 918 505 155 949 
906 736 732 930 503 
817 65 711 251 633 
2 2

样例输出 

985

 

#include <iostream>
using namespace std;
const int N = 1000 + 10;
int a[N][N];
int n,m,t;
void deal(int x,int y)//注意操作的区间范围,不能越界,只有位于合理区间才能继续操作
{
	if(x - 2 >= 0 && x - 2 <= n)a[x - 2][y] = 0;//上上
	if(x - 1 >= 0 && x - 1 <= n)
	{
		a[x - 1][y] = 0;//上
		if(y - 1 >= 0 && y - 1 <= m)a[x - 1][y - 1] = 0;//上左
		if(y + 1 >= 0 && y + 1 <= m)a[x - 1][y + 1] = 0;//上右
	}
	if(y - 2 >= 0 && y - 2 <= m)a[x][y - 2] = 0;//左左
	if(y - 1 >= 0 && y - 1 <= m)a[x][y - 1] = 0;//左
	if(y + 1 >= 0 && y + 1 <= m)a[x][y + 1] = 0;//右
	if(y + 2 >= 0 && y + 2 <= m)a[x][y + 2] = 0;//右右
	if(x + 1 >= 0 && x + 1 <= n)
	{
		a[x + 1][y] = 0;//下
		if(y - 1 >= 0 && y - 1 <= m)a[x + 1][y - 1] = 0;//下左
		if(y + 1 >= 0 && y + 1 <= m)a[x + 1][y + 1] = 0;//下右
	}
	if(x + 2 >= 0 && x + 2 <= n)a[x + 2][y] = 0;//下下
}
int main()
{
	cin >> n >> m >> t;
    //对于二维数组进行输入
	for(int i = 1;i <= n;i ++ )
	{
		for(int j = 1;j <= m;j ++ )
		{
			cin >> a[i][j];
		}
	}
	while(t -- )
	{
		int x,y;
		cin >> x >> y;
		deal(x + 1,y + 1);//火把处理照亮区域
	}
	int ans = -1;//用于查找最大值
	for(int i = 1;i <= n;i ++ )
	{
		for(int j = 1;j <= m;j ++ )
		{
			ans = max(ans,a[i][j]); 
		} 
	}
	if(ans == 0)ans = -1; //若一枚金币都找不到,即最大值为0
	cout << ans << endl; //否则有解输出即可
	return 0;
}

 

3,极致完美的AK

题目描述

小朱同学与小张同学在玩游戏,他们玩的是非常古老且神秘有趣的石头剪刀布游戏,(为什么这俩人要玩这种游戏呢?我们不得而知),但是我们所知道的结果是,小张同学被 小朱同学以完美的姿态完全击败了,具体是:对于每一次小张同学的出击,小朱同学就将其击败,现在给你小张同学石头剪刀布的顺序,请给出小朱完美击败的顺序; 这里我们使用5对应布,2对应剪刀,0对应石头

输入

一行输出为小张同学的出击,长度不超过1000;

输出

小朱同学完美击败的顺序

样例输入 

520025

样例输出 

205502
#include <bits/stdc++.h>
using namespace std;
int main(){
	char s[1010];
	gets(s);
	for(int i=0;s[i]!='\0';i++){
		if(s[i]=='5')
		cout<<2;
		if(s[i]=='2')
		cout<<0;
		if(s[i]=='0')
		cout<<5;
	}
	return 0;
}

 

4,吃豆人

P1351 – 吃豆人 – HAUEOJ (haueacm.top)

题目描述

吃豆人是电子游戏历史上的经典街机游戏,由Namco公司的岩谷彻设计并由Midway Games在1980年发行。Pac-Man被认为是80年代最经典的街机游戏之一,游戏的主角小精灵的形象甚至被作为一种大众文化符号,或是此产业的代表形象。它的开发商Namco也把这个形象作为其吉祥物和公司的标帜,一直沿用至今。该游戏的背景以黑色为主。画面中,“Google”6个字母组成回廊似的迷宫画面,四个颜色分别为红、黄、蓝、绿的鬼面符号在迷宫中穿梭,似乎在寻找一个半开半合的黄色圆圈符号。当按动键盘上的方位键时,发现该黄色圆圈符号可以行走,并且可以吞吃迷宫路径上的小黄豆,但遇到鬼面符号时就要被吃掉。

43b6eb3b1c06c88ca35e3ae1020e4e1e.png


小朱和小张比赛完之后立即开摆了,他们两个出校去干饭,遛弯的途中发现路边的一家游戏厅,出于好奇他们进去看了看,游戏厅老板十分欢迎其二人,如果二人能够在游戏当中操纵吃豆人吃到大金球,那么老板则奖励二人两瓶肥宅快乐水,否则二人则要付20RMB作为此次游戏的代价

由于吃豆人这个游戏小朱和小张从小就玩过,所以二者有着十足的信心赢取肥宅快乐水。

此次吃豆人的移动规则则是本着只能向上、右、下、左移动的规律,现给出吃豆人起点坐标与大金球坐标以及m个墙(*)以及墙的坐标(墙的坐标可能会重叠),每次游戏在一个n * n的二维矩阵中进行,在其行进过程之中可以随意转弯,结果只有吃豆人吃到了大金球(赢)或者无论如何都无法吃到大金球(输)两种情况,现在老板请你作为他的助手,设计一个程序来判断小朱和小张的游戏结果,若是其二人赢得了比赛那么则输出Yes!,否则则输出No!

你作为小朱和小张的同学,当然希望他们赢得游戏,所以一旦出现含有空气的闭合环(已知可形成的最小环的边长为3)或者闭合非环(环至少缺四个角中的任意一角),你就可以为二人在闭合环或闭合非环上打通任意个缺口(非角处)以便二人赢得游戏,但是若是墙围成了一个不含空气的闭合环或者闭合非环,则无法为其作弊打通缺口,因为过于明显会被老板发现。


 

提示:

1.墙的坐标与起点或者大金球必定不重合

2.起点和大金球坐标必定不会靠着边界(空气状态:非墙、非起点、非大金球)

3.起点坐标和大金球坐标可能重合

4.闭合环与闭合环、闭合非环与闭合非环、闭合环与闭合非环之间可能会共用边,可以重合但不会叠加嵌套


 

d57c9b48dd212dcdd016017d879eb9b0.png





 

输入

起点坐标sx,sy

终点坐标ex,ey

起点和大金球的坐标在矩阵内且不靠边界

两个正整数n,m(5<=n<=30)(0<=m<=30)

墙的坐标Xi,Yi(0<=Xi,Yi<=n<=30)

输出

Yes!或者No!

样例输入 复制

6 2
7 3
10
7
1 2
6 5
4 5
3 1
9 2
1 3
0 1

样例输出 复制

Yes!

提示

补充测试数据:
样例输入:
2 6 3 9
15 
20
1 6
3 7
2 9
4 9
3 4
3 8
3 7
5 4
3 10
3 8
8 1
2 7
9 5
6 13
2 5
8 9
14 8
10 4
12 7
3 6
样例输出:
No!

 

样例一图解释:

5caaa5d3593804cea9f9dc226c70c08c.png

样例二图解释:

37fdc1aed237243f3eca964ae822e9e8.png

#include <iostream>
using namespace std;
const int N = 1000 + 10;
char a[N][N];
//偏移量数组
int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0}; 
int main()
{
	int sx,sy,ex,ey;
	cin >> sx >> sy >> ex >> ey;
	a[sx][sy] = 'S';
	a[ex][ey] = 'E';
	int n,m;
	cin >> n >> m;
	while(m -- )
	{
		int x,y;
		cin >> x >> y;
		a[x][y] = '*';
	}
	int flags = 0;
	int flage = 0;
	for(int i = 0;i < 4;i ++ )//判断起点上下左右是否被封死
	{
		int X = sx + dx[i];
		int Y = sy + dy[i];
		if(a[X][Y] == '*')
		{
			flags ++ ;
		}
	}
	for(int i = 0;i < 4;i ++ )//判断大金球上下左右是否被封死
	{
		int X = ex + dx[i];
		int Y = ey + dy[i];
		if(a[X][Y] == '*')
		{
			flage ++ ;
		}
	}
	if(sx == ex && sy == ey)//起点与大金球重合的情况
	{
		cout << "Yes!";
		return 0;
	}
	if(flags != 4 && flage != 4)cout << "Yes!";
	else cout << "No!"; 
	return 0;
}

 

5,胡辣汤啊胡辣汤

P1352 – 胡辣汤啊胡辣汤 – HAUEOJ (haueacm.top)

题目描述

胡辣汤是河南的美食。。。
ZYJ是胡辣汤狂热爱好者。ZYJ最最最喜欢胡辣汤了,因此他来到了河南工程学院西区餐厅一楼喝胡辣汤,但是时间久了学校的胡辣汤并不是特别的好喝,他想去校外喝点。正好赶上十一国庆节放假,比赛结束的他前往校外放松身心,由于这是他大学以来的第一次出校,因此他并不熟悉校园周围的胡辣汤店,也不知道那儿一家的胡辣汤味道最美加上他还是个路痴,只能通过缺德地图来导航,查看离他最近的胡辣汤店的地址,已知ZYJ会以河南工程学院抽象成一个四条边均与坐标轴平行}的矩形,在脑袋里面抽象出一个二维坐标系,而后将各个胡辣汤店看作一个坐标点,一个胡辣汤店到学校的最近距离定义为表示胡辣汤店的点与表示学校矩形上所有点(包括四条边上的点和四个顶点)的最小值如果有多个距离学校最近的胡辣汤店,ZYJ会选择其中编号最小的一个。到了校外,面对那么多的胡辣汤店,ZYJ将如何选择呢?请你帮助他选择

 

输入

第一行包含一个整数 n(1≤n≤10^5),表示胡辣汤店的个数。

第二行包含四个整数 X1,Y1,X 2,Y2 (−100≤X1<X2≤100,−100≤Y1<Y2≤100)

(X1,Y1) 表示河南工程学院左下角的坐标

(X2,Y2) 表示河南工程学院右上角的坐标。

接下来 n 行,第 i 行包含两个整数 xi ,yi(−100≤xi,yi≤100),表示编号为 i 的胡辣汤店的坐标为 (xi ,yi)。保证不会有胡辣汤店在河南工程学院的内部或边界上。

输出

输出一行一个整数,表示ZYJ选择的胡辣汤店编号。

样例输入 复制

4
0 0 4 4
2 9
-4 -4
1 -6
8 7

样例输出 复制

1
#include <bits/stdc++.h>
#include <cmath>
#include <algorithm>
using namespace std;
struct h{
	double lenth;
	int idex;
};
h l[100010];
double cmp(h &a,h &b){
	if(a.lenth!=b.lenth)return a.lenth<b.lenth;
	else return a.idex<b.idex;
}
int main(){
	int n;
	int x1,x2,y1,y2;
	cin>>n;
	cin>>x1>>y1>>x2>>y2;
    for(int i=1;i<=n;i++){
		int x,y;
		double s=0;
		cin>>x>>y;
		//在正上或正下
		if(x>=x1&&x<=x2){
			if(y>y2)s=y-y2;
			else
			if(y<y1)s=y1-y;
			l[i].lenth=s;
			l[i].idex=i;
		} 
		else 
		if(y>=y1&&y<=y2){
			if(x>x2)s=x-x2;
			else
			if(x<x1)s=x1-x;
			l[i].lenth=s;
			l[i].idex=i;
   	}
   	    else{
   	    	double s1=0,s2=0,s3=0,s4=0;
   	    	s2=sqrt((x-x1)*(x-x1)+(y-y1)*(y-y1));
   	    	s1=sqrt((x-x1)*(x-x1)+(y-y2)*(y-y2));
   	    	s3=sqrt((x-x2)*(x-x2)+(y-y1)*(y-y1));
   	    	s4=sqrt((x-x2)*(x-x2)+(y-y2)*(y-y2));
   	    	s=min(s1,min(s2,min(s3,s4)));
   	    	l[i].lenth=s;
			l[i].idex=i;
		   }
	}
   	sort(l+1,l+1+n,cmp);
   	cout<<l[1].idex;
   	return 0;
}

 

6,HF波那契数列

题目描述

HF在看lys努力的学习中……

8e59320a23e034819c7b7436fea04dcb.png


 

输入

 

 

输出

c591208daa3d28c489e52d188800685b.png

样例输入 复制

2
1 1 2
3 5 4

样例输出 复制

2
8
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
ll fib[100010];
int main(){
	fib[0]=0;
	fib[1]=1;
	for(int i=2;i<100010;i++)
	fib[i]=(fib[i-1]+fib[i-2])%19960515;
	int n;
	cin>>n;
	while(n--){
		int i,Gi,j;
		scanf("%d%d%d",&i,&Gi,&j);
		ll t=(Gi-fib[i-1])/fib[i];
		if(t<=0||(Gi-fib[i-1])%fib[i])cout<<"-1"<<endl;
		else printf("%lld\n",(fib[j-1]+fib[j]*t)%19960515);
	}
	return 0;
}

 

提示

对于 100% 的数据,有 T ≤ 10000, 1 ≤ i, j ≤ 100000, 0 ≤ Gi < 19960515

7,小朱要解密码

题目描述

原….为什么不原….我!!是神里凌华的狗!!!
众所周知,小朱同学非常喜欢玩原神这款游戏,但是小朱同学实在是太菜了,以至于在新手村都打不过丘丘人,于是小朱决定努力提升自己的技术,这个时候他得到了一份笔记,这份笔记有杨,胡,王,关等等等等各位前辈大佬所留下,据说研习过此笔记者即可化身战神,打遍全图,于是小朱同学怀着敬畏之心查看笔记,两天之后小朱同学找到了小张同学并寻求帮助,原来要想研读这份笔记,还需要解出来前辈们留下的难题,但是小朱同学实在是太笨了,连这么一道简单的题目都不会做,小张同学仅仅是看过两眼就得到了正确答案,可恶的小张同学却不告诉小朱同学,于是他来寻找你获得帮助,请聪明的你帮助他解答吧:给你一串数字,请输出数字反转之后的结果:

 

输入

一串数字,长度在20以内,可能含前导0,去掉前导零后数字大小在long long int之内,也就是0-2的31次方-1,若某个数仅由0构成,那么只保留一个有效0即可,负号不用反转 ,负号不用反转,负号不用反转,重要的事情说三遍!!!只要有负号则保留!!!

输出

一行输出数据反转后的结果

样例输入 复制

0031020

样例输出 复制

2013

提示

任何数均有正负形式,注意是任何数!!!

其实就是简单的数字反转 

#include <bits/stdc++.h>
#include <vector>
using namespace std;
vector<int>A;
int main(){
	int fash=1;
	string s;
	getline(cin,s);//输入string类型的,字符串
	if(s[0]=='-')fash=0;//对负数的处理
	for(int i=0;i<s.size();i++){
		if(fash==0&&i==0)
		continue;
		int a=s[i]-'0';//字符串转化为整型数组
		A.push_back(a);//存入数组A中
	}
	while(A.back()==0&&A.size()>1) A.pop_back();//去除后导零
	reverse(A.begin(),A.end());//同理反转
	while(A.back()==0&&A.size()>1) A.pop_back();
	if(fash==0)cout<<'-';
	for(int i=0;i<A.size();i++)
	cout<<A[i];
	return 0; 
}

 

8,苦命的毅哥

题目描述

毅哥还没有女朋友…
众所周知,ZY是一个非常喜欢漂亮妹妹的人,以至于ZYJ为了给他创造一些给漂亮妹妹接触的机会,常常在表白墙下面说:”我ZY就喜欢这个”或者”我ZY实名邀请您于圣源二楼就餐”替ZY对于校花进行表白,现在ZYJ想统计让ZY心态炸裂和emo的次数,例如:若是评论”我ZY就喜欢这个”出现一次,那么ZY心态炸裂一次,若是评论”我ZY实名邀请您于圣源二楼就餐”出现一次,那么ZYemo一次。已知表白墙下有n条消息(1<=n<=100),通过这n条消息来计算ZY心态炸裂的次数和emo的次数。注意:表白墙下面出现的不一定是ZYJ估计替ZY表白的话语

 

输入

一个正整数n

输出

张毅的心态炸裂次数和emo次数,中间用空格隔开,若是没有心态炸裂则输出0,若是没有emo则输出0,ZY有着事不过三的原则,若是他发现ZYJ使其心态炸裂和emo的总次数大于三次,ZY则原地化身”6男”在输出答案的下一行扣一个6

样例输入 

10
我ZY就喜欢这个
我ZY就喜欢这个
加强豹女!加强暴女!!
我ZY实名邀请您于圣源二楼就餐
我ZY把你搂了
我ZY就喜欢这个
诶呀你干嘛~~~
我ZY实名邀请您于圣源二楼就餐
小黑子有本事别吃我哥哥下的蛋
我是真ikun

样例输出 

3 2 
6
#include <bits/stdc++.h>
#include <string.h>
using namespace std;
int main(){
	int n;
	int a=0,b=0;
	cin>>n;
	while(n--){
		string s;
		cin>>s;
		if(s=="我ZY就喜欢这个")
		a++;
		if(s=="我ZY实名邀请您于圣源二楼就餐")
		b++;
	}
	cout<<a<<" "<<b<<endl;
	if((a+b)>3)
	cout<<6;
	return 0;
}

 

 

 

 

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
xiaoxingxing的头像xiaoxingxing管理团队
上一篇 2023年12月26日
下一篇 2023年12月26日

相关推荐