学校ai专业老师给我们布置了一个作业。这个作业要求是安排售卖,查询,修改,删除车票。
说实话,看到这一大串操作的反应是平衡树建数据库,正常的思路理论上都是如此。但是我仔细想了一下,老师留的这个项目中会不会有坑。结果发现了一个很大的问题——车票需要车次信息,那么车次信息如何提供呢?这就见仁见智了。
我很容易的就想到了网络流,毕竟安排车的数量作为车流量自然是一个最大流问题。问题貌似迎刃而解了,但这么容易就解决了一名AI老师留的作业了吗?
答案是否定的。网络流只能计算出最少需要安排几辆车,后面如何安排呢?考虑状态压缩和记录。我就是犯了初学者的错误之一,图论就是图论,没有有效的和递推式(但无法状态转移)相结合,走了很多的弯路。
经过我的艰苦奋斗,最终终于可以在一此询问内较为不错的安排出车辆的路线。但这真的够了吗?
显然做为一个AI老师,程序设计项目自然是百般刁难。如果那么简单的套用板子就可以解决,那么叫什么AI老师?所以,查询修改删除添加这些选项全部加入。如果不算这个动态的时间,就已经大的很离谱了,而现在还要修改,真的让人把心态弄崩掉。
在苦苦炫了一整瓶黑咖啡后,我终于想到了一个算是比较不错的解决方案。
记得之前我学dp的时候顺带手学过ddp,也就是传说中的动态dp,就是那个树链剖分配矩阵快速幂那个。那么如果我把图里面套上这个ddp的线段树,那么是否可以实现无论是否拥有局部而影响全局的反向边,我都可以以此快速的修改,缺点无非是一些信息的缺失罢了。也就是说,这个问题从计算机问题成功的很好的转变成为了AI问题。