目录
自闭传送门
- 难度判断?
总结收获:
- 好好补题,查漏补缺。我相信,认真对待这次暑期培训,我能学到很多东西。
- 补题以提高思维能力(想当时没想明白的题),算法能力(学新算法)为主。不必每个题都一样程度的仔细总结
题目:
1. A - 橡皮球 51Nod - 1247
- 题意:二维平面,如果某点位置为(a,b),下一步可以跳到(a+b, b), (a-b, b), (a,a+b), (a,a-b)之一。输入a,b,x,y,判断是否能从(a,b)跳到(x,y)(可以跳任意次),1 <= a, b, x, y <= 1e18。
- 关键词:数学、思维
- 提示:
1.逆向思考,判断是否能从(x,y)跳到(a,b)。即(x,y)->(x-y,y),(x+y,y),(x,x-y),x(y-x)
2.可以在二维平面上画图(帮助理解)
3.x不变的时候,(“辗转相减”->y的最小绝对值为gcd的绝对值)
4.y不变的时候,(“无限长等差数列”,公差为纵坐标->所以最后能到达所有gcd(xi,yi)=gcd(x,y)的点)
5.即答案:gcd(a,b)=gcd(x,y)的时候就能从(x,y)跳到(a,b) - 收获:思维题。冷静思考??
- 代码:
#include <bits/stdc++.h>
#define int long long
#define pb push_back
using namespace std;
const int N = 3e5 + 10;
int n, a, b, x, y;
signed main() {
int T;
cin >> T;
while (T--) {
cin >> a >> b >> x >> y;
a = abs(a), b = abs(b);
x = abs(x), y = abs(y);
if (__gcd(a, b) == __gcd(x, y))
puts("Yes");
else
puts("No");
}
return 0;
}
2. B - 逆元 51Nod - 1256
- 题意:给定正整数a,b,求ax+by=1的x的最小正整数解
- 模板题:扩展欧几里得算法。LuoguP1516青蛙的约会 (扩展欧几里得算法+模板)
3. C - 社交达人 CodeForces - 1288E
- 说明:
- 没做出来,wa19。
- 知道用主席树算法,可惜主席树算法没实际学过emm。那就正好乘现在补上?
- 题意:
- 主席树见这里:2021-07-09-主席树(浅得很,但是解决这题应该够了)
4. D - 唐三和小舞做游戏 CodeForces - 1543D2
- 说明:
1.听说是前两天cf原题。那天没做出来。
2.题也没有补(绝对kuangbin专题要紧)。那也乘现在补上。 - 题意:
5. E - 糖果屋 CodeForces - 570C
- 说明:sb题,不解释
6. F - 唐三与数字 CodeForces - 1542C
- 提示:筛选过滤思想
7. G - 恰饭 CodeForces - 707B
- 提示:(思维题)看起来像是生成树,其实遍历一下就ok
8. H - 二分图 CodeForces - 862B
- 提示:给定的是一棵树,根本不需要二分图的算法,只需要知道概念即可。
9. I - 逃生 POJ - 1556
- 说明:
1.到后面有点累了,不然这题应该是能解决的,就是一个最短路(不过涉及计算几何的一些模板问题<-计算几何不是很熟练) - 题意:
10. J - 旋转卡壳 POJ - 3608
- 说明:
- 直接copy的网上代码,建议学习一下旋转卡壳(理解才能更好的使用->理解是很废时间的,最后半年acm,我着重搞好DP+计算几何+字符串就好->提高效率,解放天性)
- 总结的一些计算几何的东西: