考试反思 2019-08-03

T1:
题目大意

我们已知勾股数满足a^2+ b ^2=c ^2且可以构成一个三角形,即满足两边之和大于第三边,两边之差小于第三边,我们认为,对于a ^2+b ^2=c ^2,若存在 ka ^2+k b ^2=kc ^2(k为正整数),则我们认为这两组勾股数并存,现在给定n组数据,每组数据输入x和y,求区间[x,y]中有多少个c使得勾股数不并存

Input

第一行为需求的范围的总数n
第二行至第n+1行每排有两个数x,y,表示c的区间

Output

每个区间内不并存的勾股数

Sample Input

1
1 13

Sample Output

2

样例解释

5和13满足条件

思路:暴力枚举,因为时间限制给的是两秒(做到一半才发现),所以我们就可以直接枚举出或通过数学公式推导出所有的勾股数,然后判重即可,不过这种算法的时间复杂度很有可能会炸。。。

错误原因 :一开始一直在思考如果一组数据内包含
5(sqrt(3^2+4 ^2))
10(sqrt(6^2+8 ^2))
15(sqrt(9^2+12^2))
显然这三组数据中只有5是满足条件的。但是,如果将5的这组数据去掉,
10和15又会重新满足条件!(k为正整数)所以考场上一直因为这个问题纠结,就不知道自己写的是什么了。。。

对于每一组勾股数,我们也可以通过数学公式来推导出所有的勾股数。

正确做法:果断舍弃后面的大数据,双重循环枚举出所有的勾股数,只要满足a和b互质,这组勾股数就可以满足不并存。

T2:
题目大意:

给定一个无向图,并告诉你一些点之间的联通与否,以及从一个点到另一个点的快乐值以及路程,先让你求出能让快乐值恰好等于n,且路程最短的最短路程。

思路:搜索,先定义一个二维数组存储每两个点之间的连接情况,再存下他们之间的快乐值和路程,每次搜索如果当前路径之和大于总路径,返回,如果等于总路径,更新min,否则,循环所有与它相邻的点,更新快乐值和路径,继续搜索。

但是,上述方法出现了问题!!!
原因:样例有坑,可能有重边,需要用链式前向星存储,用SPFA导出答案。
一个小方法:
对于一道题目,我们要兼顾准确性和时间复杂度,在时间复杂度超过时,我们可以用一部分准确性弥补时间复杂度。如在剪枝时设置一个随机函数,以
2/5的概率剪枝,虽然这种方法准确性不够,但还可以减少一大部分时间复杂度!!!

总结:这次考试,整体不难,满分300但我只得了90分,经过老师讲解后发现题目整体难度并不是很大,所用的算法大都也是我们学过的,但为什么我没有做出来呢?原因是我对于所学知识的理解和运用不到位,还有就是考试时没有足够的洞察力能让我了解每个题目应该运用到的真实算法,而是只想着贪心和暴力枚举。其次,我也应该学会顾全大局,在满分算法难以实现时果断选择通过暴力和搜索拿到部分分,再考虑拿到更多得分。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值