2023年多校联训NOIP层测试1

发布时间 2023-08-06 07:57:31作者: GOD_HJ

T1 打字(\(50pts\))

题目

image

思路

字符串处理,注意所有情况如: B 是一个名字,B1 不是。

code

#include<bits/stdc++.h>
using namespace std;
int sum,o,m,ans[10010],cnt=1;
char s[10010];
signed  main(void){
	scanf("%d",&o);
	while(scanf("%s",s+1)!=EOF){
		//cout<<(s+1)<<endl;
		int n=strlen(s+1);
		int f=(s[1]>='A'&&s[1]<='Z');
		if(f) for(int i=2;i<n;++i) if(!(s[i]>='a'&&s[i]<='z')) f=0;//是否有不是数字的
		if((s[n]=='.'||s[n]=='?'||s[n]=='!')){
			printf("%d\n",sum+f);
			sum=0;
		}
		else if(f&&((s[n]>='a'&&s[n]<='z')||(n==1))) ++sum;
	}
	return 0;
}

T2 下棋(\(6pts\))

题目

image

思路

\(50pts\)
贪心,因为数据规定每个格子右边和下边的两个英文字母不同,依次选择字典序最小的字母即可。

\(70pts\)
搜索

\(100pts\)
枚举
对于每一步,步数相同时,坐标 \((x,y)\),\(x+y\) 的值相同。所以基本思路是:枚举每一步中的所有字
母,同时需要判断上一步是否可到达(才能走到当前位置),选出其中字典序最小的,标记这些位置是可达
的,这些位置可以进行扩展。