TLE on test3,1.03s

P3627 [APIO2009] 抢掠计划

Upd:卡过去了,但是 986 ms,有没有人知道原因 qwq
by NASFsky @ 2023-11-10 13:53:31


@[NASFsky](/user/375403) 要是有超过 $8000$ 个强连通分量您的代码是不是直接 RE 了 qwq 而且感觉 dfs 可以卡到 $\mathcal O(nV)$,具体大概是这个样子: ```cpp /** * author: sunkuangzheng * created: 10.11.2023 13:56:34 **/ #include<bits/stdc++.h> #ifdef DEBUG_LOCAL #include <mydebug/debug.h> debug_helper deg; #endif using namespace std; int t,n = 480000,m = 483997; int main(){ ios::sync_with_stdio(0),cin.tie(0); freopen("testcode.in","w",stdout); cout << n << " " << m << "\n"; for(int i = 2;i <= 4000;i ++) cout << "1 " << i << "\n",cout << i << " 4001\n"; for(int i = 4001;i < n;i ++) cout << i << " " << i + 1 << "\n"; for(int i = 1;i <= n;i ++) cout << min(i,4000) << " "; cout << "\n1 " << n << "\n"; for(int i = 1;i <= n;i ++) cout << i << " "; } ```
by _sunkuangzheng_ @ 2023-11-10 14:09:34


@[NASFsky](/user/375403) `bool con[8000][8000]` 显然不对。 但是事实上需要判断的对数只有 $\mathcal{O}(m)$ 个,使用 `std::map<std::pair<int, int>, bool>` 即可,带个 $\log $
by lzyqwq @ 2023-11-10 15:19:09


@[蒟蒻·廖子阳](/user/539211) 可是我的代码只能勉强卡过去,再带个 $\log$ 那不更加炸裂了/xia
by NASFsky @ 2023-11-10 15:29:19


本来我也想直接开 `map` 统计的,但是考虑到强连通分量估计不会很多就直接开数组了
by NASFsky @ 2023-11-10 15:29:56


@[NASFsky](/user/375403) 不是很懂为啥只有 8000 个 scc,而且有时候空间开太大时间也会炸的 而且不懂这题貌似不要去重边的吧
by lzyqwq @ 2023-11-10 15:31:30


@[蒟蒻·廖子阳](/user/539211) $8000$ 个是我感性理解的/cf 估计它不会很多,没有依据。去重边我是防止 `dfs` 跑重复太多次
by NASFsky @ 2023-11-10 15:32:45


@[NASFsky](/user/375403) 那可以让每个点只被跑一次吧,记录一下每个点有没有被访问过
by lzyqwq @ 2023-11-10 15:34:08


@[蒟蒻·廖子阳](/user/539211) 被访问了还是能被更新的吧,那不还得继续往后传递信息
by NASFsky @ 2023-11-10 15:36:10


@[NASFsky](/user/375403) 就类似记忆化搜索的拓扑排序那样
by lzyqwq @ 2023-11-10 15:37:06


| 下一页