摘要: #include #include #include #include #include #include using namespace std; struct in { int to,ne,co; }ter[200040]; double hui[200040]; bool flag[80080]; int n,m,x,y,z,s,ans[80080],f1[200020],l1[2... 阅读全文
posted @ 2017-10-30 23:42 那一抹落日的橙 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 原本这个题的正解是lct,可是自从这个题被人发现可以用分块做,然后就成为了分块的练习题233333,而且虽然lct的时间复杂度是nlogn的,可是因为常数太大,反而跑不过分块,挺有意思的 这个题我们可以设置sqrt(n)个块,然后维护块内每个元素到下一个块的最小步数和到到达下一个块的第一个点,然后这 阅读全文
posted @ 2017-10-30 18:41 那一抹落日的橙 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 这个题开始我想的时候不允许点重合,因此错了,事实上当然可以,只不过我们每个点只能记录一次答案就好…… 我们可以换一种方式理解这个题,我们假设其实起点有两个人一起向终点走去(因为显然路径可以反向走),这样就好处理多了 阅读全文
posted @ 2017-10-30 16:05 那一抹落日的橙 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 这个题是一个经典的状压dp,m<=10,意味着我们可以将每一层的状态压起来,提前预处理好,然后枚举当前在哪一层和i层 i-1层 i-2层的状态,理论上来说,这样最坏的时间复杂度是O(2^3m*n),但是因为障碍物的存在,以及预处理当中对左右格子的判断,时间复杂度会大大优于最坏情况,所以能够卡着过 阅读全文
posted @ 2017-10-30 07:06 那一抹落日的橙 阅读(183) 评论(0) 推荐(0) 编辑