CSP-J 第二轮 模拟赛五补题报告

文章讲述了作者在一场编程比赛中的经历,包括四个题目:重复判断、乘法计数、去重求和和点集操作。作者分享了解题思路、代码以及比赛中的反思,强调了时间复杂度控制和数学思维在图论题目的重要性。

日期:2023年10月5日

学号:S07246

姓名:江守栋

目录

·  比赛概况

· 比赛过程

· 题目分析

T1 【重复判断  repeat】

1、题目大意

2、比赛中的思考

3、解题思路

4、AC代码

T2【歪果仁学乘法  multiplication】

1、题目大意

2、比赛中的思考

3、解题思路

4、AC代码

T3【去重求和  summation】

1、题目大意

2、比赛中的思考

3、解题思路

4、AC代码

T4【点集操作  point】

1、题目大意

2、比赛中的思考

3、解题思路

4、AC代码


·  比赛概况

总分 :  230 / 400

T1 T2 T3 T4
AC AC 0分 30分

今天的 T4 我的思路是正确的,但是数据量炸掉了,扣了 70 分

· 比赛过程

前两题水题,15分钟秒了

看了眼第三题,感觉需要推很久,就先没做

第四题是一道图论,昨天晚上做了很久邻接表的题,现在掌握得比较熟练了

赛时在纸上画了一堆图,推了很久,找到了思路,

可惜我写了两层循环,在平台里提交过了,但是判题机运行时间超限了,丢了 70 分 。。。

· 题目分析

T1 【重复判断  repeat】

1、题目大意

判断字符串a是否是字符串b重复若干次得到的。

2、比赛中的思考

是道水题,模拟秒了

3、解题思路

两个指针同时分别遍历字符串 a 和 字符串 b ,

因为 b 的长度短,可能会多次遍历,所以需要每次 ++ 后 % b.size(),保证下标不会越界

如果 a_{i _{}} != b_{i} 则标记为 false ,如果遍历结束了,而 j !=0 说明 a 中出现了多余元素,不是重复字符串。

4、AC代码
#include<bits/stdc++.h>
using namespace std;
int T;
string s,s1;
int main()
{
	freopen("repeat.in","r",stdin);
	freopen("repeat.out","w",stdout);
	cin>>T;
	while(T--){
		bool flag=1;
		cin>>s>>s1;
		int j=0;
		for(int i=0;i<s.size();i++){
			if(s[i]!=s1[j]){
				flag=0;
				break;
			}
			j++;
			j%=s1.size();
		}
		if(flag==1&&j==0){
			cout<<"YES";
		}
		else{
			cout<<"NO";
		}
		cout<<endl;
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}

T2【歪果仁学乘法  multiplication】

1、题目大意

现有一种不需要九九乘法表也可以计算乘法的方式,对于a × b:

  1. 将a,b的每一位上的数码画成线,不同位之间分隔开。
  2. a 和 b 的方向垂直画出。
  3. 数出每个方向上交点的个数,即是 c 对应位置上的数码。

样例图给出了计算12 ×13的方法:

1.红色线分别画出 1 条和 2 条;
2.蓝色线分别画出 1 条和 3 条;
3.数出红、蓝色线的交点个数,依次为 1,5,6 个;
4.得到答案:12

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值