3.3

Hehe_0

前五个没啥好说,总结:

gcd计算大家现在懒得手写可以用___gcd

int gcd(int a, int b)
{
    while(b)
    {
        a%=b;
        swap(a,b);
    }
    return a;
}

lcm就是a*b/gcd

虽然第六题是填空但是最优解因为有长度明确限制应该是可以用类似线性滑动窗口这种去解决的。

然后带大家回忆一下滑窗这种双指针:最主要就是左右指针的移动和记录

  1. 在字符串 S 中使用双指针中的左右指针技巧,记得初始化。
  2. r右移,直到窗口中的字符串符合要求。
  3. 然后停止增加r ,然后去增加l指针缩小窗口 ,一直到窗口中的字符串不再符合要求。然后记得更新记录。
  4. 重复上面进程到最后。

然后第二个代码,第一眼很像最长上升那种dp问题,这个直接记录就行

然后字符串排序可以直接sort或者手写

村民问题本身直接模拟就行,可以大家思考一下如果礼物可以通过交换位置颠覆顺序,请问交换几次可以让所有村民都拿礼物

最后一个题有点烦,首先可以是统计前缀和和前缀和的和去计算:因为每一行和列都是确定的,所以可以直接全都提前统计和,然后因为列和行的和也可以提前统计所以也可以统计提前统计和,然后都有的情况可以递推d一下。然后就也是可以直接一整个区域减去四个角也能得到这个十字。

posted @ 2025-03-03 19:42  Hehe_o  阅读(33)  评论(0)    收藏  举报