几道周赛题目(bfs,dfs,kmp,快速幂运算,并查集)

本文介绍了四道编程竞赛周赛题目,涉及算法包括:快速幂运算用于找规律问题,bfs解决迷宫寻宝的最短路径,kmp字符串匹配,以及dfs生成组合数。同时,作者分享了在解题过程中遇到的错误和反思,强调了冷静分析和深入理解算法的重要性。
摘要由CSDN通过智能技术生成

1691: 找规律(二分快速求幂)

时间限制: 1 Sec   内存限制: 128 MB

题目描述

给出四个数,前三个是某个数列的前三项,这个数列只可能是等差或者等比数列,然后让你求出某一项(每一项给出的第四个数),对200907取余的结果。

输入

输入包含多组测试数据,每组测试数据包含4个整数,前三个整数是数列的前三项,最后一个数是n,四个数的范围都是1~10^9

输出

输出这个数列的第n项%200907

样例输入

1 2 3 5
1 2 4 5

样例输出

5
16

这个题用的求余运算和快速幂取模运算,这两个自己都会,但是卡在了一个最不应该的细节上,没注意数的范围,没使用长整形变量,否则这个题也是很容易就解决了,不想再说自己什么了,有时候就是冷静不足,不知道造成了多少失误,今天算是给自己个教训吧,以后多长个心眼,多想想,别一见到题就a,也不检查就提交,只能自作自受。


#include<cstdio>
int main() 
{
	 int a,b,c,n;long long d,q,s;
	while(~scanf("%d%d%d%d",&a,&b,&c,&n))
	{
		if(a+c==2*b)
		{
			d=b-a;
			s=(((n-1)%200907)*(d%200907)+a)%200907;//同余定理自己还是不够熟练,需要再理解理解
		}
		else
		{
			q=b/a;--n;s=a;
			while(n>=1)//二分法快速幂运算
			{
				q%=200907;
				if(n&1)
				{
					s*=q;
					s%=200907;
					--n;
				}
				if(n)
				{
					q*=q;
					n>>=1; 
				}
			}
		}
		printf("%lld\n",s);
	}
	return 0; 
} 



1689: 迷宫寻宝(bfs搜索)

时间限制: 1 Sec  内存限制: 128 MB

题目描述

迷宫寻宝。已知:若某人在位置(x, y),他下一次只能移动到(x-1, y)、(x+1, y)、(x, y-1)、(x, y+1)四个位置中的任一个(前提不能越界)。要求移动一步需要1分钟。请你帮他算出找到宝物所需要花费的最少时间。

迷宫是一个N*M的地图,图中只有四个数字。


0:空地,可以走
1:有障碍,不可以走
2:起点
3:宝物位置(只有一个宝物)

题目保证至少有一条路可以到达宝物位置。

输入

输入数据有多组。

每组以两个整数N和M开始,分别表示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值