模拟16 题解

A. Blue

贪心 完了。

这道题学到了很多使用stl set的技巧。

 

 

 


 

B. Weed

线段树维护栈的操作。

一个重要的操作是递归结束时O(logn)复杂度的向下寻找分界点。

因为延伸出的一定是一条链,复杂度是O(nlog2n)

 

 

 


 

C. Drink

十字链表,维护每个点四个方向的next

因为旋转操作,无法明确四个方向,只能保证四个方向仍然为顺时针。

然而表头的方向没有改变过,

通过last所在的方向,确定要到达的方向。

每次修改只修改边界上的节点。

 

应当注意的是,

如果在移动的同时修改,可能导致方向的错乱,于是整个链表都死了。

我的解决方法是将所有的操作压进栈里。

在完成四个方向的移动后,统一进行栈内的操作。

 

posted @   skyh  阅读(193)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示
主题色彩