(实习替代)2021ACM培训摸底(主席树、旋转卡壳等)——2021-07-09

博客内容涉及编程竞赛中的算法题目,包括逆元、社交网络、树形结构及计算几何问题。通过扩展欧几里得算法、主席树等解决难题,并强调补题和思维训练的重要性。涉及的算法和数据结构有:扩展欧几里得、主席树、最短路、计算几何等。
摘要由CSDN通过智能技术生成

自闭传送门

  • 难度判断?
    List item

总结收获:

  1. 好好补题,查漏补缺。我相信,认真对待这次暑期培训,我能学到很多东西。
  2. 补题以提高思维能力(想当时没想明白的题),算法能力(学新算法)为主。不必每个题都一样程度的仔细总结

题目:

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

传送门

3. C - 社交达人 CodeForces - 1288E

传送门

  • 说明:
  1. 没做出来,wa19。
  2. 知道用主席树算法,可惜主席树算法没实际学过emm。那就正好乘现在补上?

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

传送门

  • 说明:
  1. 直接copy的网上代码,建议学习一下旋转卡壳(理解才能更好的使用->理解是很废时间的,最后半年acm,我着重搞好DP+计算几何+字符串就好->提高效率,解放天性)
  2. 总结的一些计算几何的东西:
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值