摘要: 先跑一遍n为起点最短路,再新开一个点,向有干草垛的点连一根边权为d[u]-w的有向边(很重要。。我当时连的无向边,然后我死了。),相当于用价值抵消一部分边权, 然后以这个新的点为起点跑最短路就好了。。。 2019.04.24 阅读全文
posted @ 2019-04-24 23:53 LuitaryiJack 阅读(238) 评论(0) 推荐(0) 编辑
摘要: 颓了、、、重边导致我乖乖用邻接矩阵。。。。 好吧就是个最短路计数。。。。如果更新时d[v]==d[u]+w[i],就可以接起来,把两个加在一起。。 如果d[v]>d[u]+w[i],那么c[v]直接赋值为c[u],相当于这个最短路是由u转移过来的、 2019.04.24 阅读全文
posted @ 2019-04-24 23:42 LuitaryiJack 阅读(107) 评论(0) 推荐(0) 编辑
摘要: 细节题?、、、调了半天。。。。 可以发现,每一次从缓存中删除的主存一定是下次访问最晚的,可以用优先队列来处理。。。还有要离散化。。。还有链表末尾要多建一些点、、、否则会死的很惨、、、 2019.04.24 阅读全文
posted @ 2019-04-24 23:28 LuitaryiJack 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 还是拿set搞。。。 用set记录每个被摧毁的位置,Q的时候二分一下,在和上一个摧毁的位置减一下,即可求出能到的房子数 2019.04.24 阅读全文
posted @ 2019-04-24 11:35 LuitaryiJack 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 这题。。。一眼set。。。但是打了一会儿。。 记录一下每个价格对应的美丽度,顺便充当vis数组,如果美丽度不为0,说明set里已经有了。。。 删除好说,删*s.begin()和*--s.end()就好,但是记得删之前判一下size,否则--s.end()会可能RE 阅读全文
posted @ 2019-04-24 11:29 LuitaryiJack 阅读(162) 评论(0) 推荐(0) 编辑
摘要: 好久不做这种题了。。。 存一下每个点的位置和时间,由于达到某个位置跟之前去哪里AK的无关,所以在时间超限后,可以用大根堆弹掉之前消耗时间最大的,来更新答案,相当于去掉之前花费最大的,直到时间不在超限。 2019.04.24 阅读全文
posted @ 2019-04-24 11:24 LuitaryiJack 阅读(172) 评论(0) 推荐(0) 编辑