训练日记2019.10.17 重新开始

2019.10.17 星期四
又到周四了,不过不知道是不是昨天和前天用力过猛导致的,今天从中午开始就不在状态,下午写了下线段树,这天杀的360一直都在把我的程序当成病毒,我有那么厉害么?

好在没间断练习,是一道安排约会的题的,这道题出题不太严谨,看了下题目来源,不是正规的比赛题,由于屌丝的时间安排优先级比女神的低,而且可能出现重复赋值的情况,我第一时间想到了刚学的二分求解和线段树,看到输入范围不大,我的想法是线段树建两个区间树,528m的内存应该够用,然后再用线段树存女神和屌丝的时间安排,然后我们可以得到如下关系
1.女神没安排,屌丝有约,那就把屌丝的区间更新,因为女神的优先级高过屌丝,所以不用管后续操作。
2.屌丝和女神同时有约,二分查找还能插下区间起点最早处,然后把女神的更新了
3.女生有安排,屌丝也有约,这个就更简单了,查女神的截止区间,然后查屌丝的空余区间的最前面,二分查,然后把屌丝的时间安排插满就行了。
然而这个想法尚未完全得到证实,只是查了几个数据点而已,都和我的猜想一致,就被360爆了vim了,看来是写不成了,如果我有devc++应该可行,不过至于csdn一些博主说的用区间合并,我还真没看到这么做的必要,如果女神和屌丝的优先级是相同的,那肯定这样做有优势,但是我现在利用的就是二分+贪心安排时间啊,也想过如果1-n存在不连续区间怎么办,但是后来想了下,因为贪心的本质,所以在n时刻我既然在这点更新说明了1-n - 1时刻都插不了了我才更新这里,换句话说n时刻找不到,n-1也别想找到,所以理论上来说并不需要做区间合并。而且数据量,528m,10w的输入量开两颗线段树不会MLE的,时间复杂度大概是nlogn*logn,也完全不会超时啊就算每次都是最坏情况,改天试一下。

发布了69 篇原创文章 · 获赞 1 · 访问量 3043

猜你喜欢

转载自blog.csdn.net/Stagflation/article/details/102618382
今日推荐