已知有几个消防站了 问在哪再建一个消防站使得其他城市离最近的消防站距离总和最近
这个题哈,做了一星期才把zoj的测试数据给过了。。。悲剧啊悲剧。。。
最初留这题的时候,开始大家题都米看懂,导致做一天多了,按错的方向来了。。崩溃。浙大的要求是1秒,北大5秒内。
理解题意后改改,用dij+邻接矩阵,自己机子跑了8秒多。。。交到北大上,3秒多,过了。后来CW说用邻接表写,我那个纠结啊。。。我不喜欢链表啊不喜欢!!!觉得挺麻烦的,没办法,硬着头皮上吧!居然还写过了!提高到了2秒多,浙大站上依然TLE。
再然后,他们几个都用SPFA在浙大上写过了,弄得我也想去看SPFA,然后捏。。CW说用优先队列写,恩。。好吧,我又找了找优先队列的知识,C++里的,大数据运行不出来,小数据差不多都过了,真纠结。磨得都快没信心了都。。。后来CW说自己写的效率高,用堆。。就看堆排。。。理解了,但还是出不来。。。后来CW说给大家讲堆,关于堆的插入与删除,呃。。这个样子呀。。自己看着算法导论写了写插入与删除,理解了,挺好~~真正运用到1857的时候,依旧噩梦!不知道如何保存原来的下标,因为入堆后,排序了,下标就变了,然后就用结构体什么什么的。。。后来CW给提示哈,还得标记是否在堆里,在堆里的话如果更新的话还得找到相应的那个结构体然后更新。。。悲剧,要存下标的,想了想,发现我还是不笨滴。。。用有点小纠结的方法存了下标。。。然后的错误就是忘记把已经存在的消防站存进堆里了,如果没存的话,中间再存的话,有些点已经出堆更新不到了。。。
就这样纠结呀纠结,在一星期后的今天,我终于AC啦!!!哈哈哈哈哈哈哈哈哈!!!!
dij+邻接矩阵(zoj TLE poj AC)
dij+邻接表(zoj TLE poj AC)
dij+邻接表+堆优化(zoj AC poj AC)
最后一个是我写程序以来最长的代码!!!!!!哈哈哈哈哈哈哈哈哈~~~~~