
二进制分组
青烟绕指柔!
我不怕千万人阻挡,只怕自己投降。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
BZOJ - 4398
题目链接:BZOJ - 4398只要不是与1相连的边,一定不会走多次。显然。所以我们其实是选一个点,1从这个点出去,然后从另一个点进来。所以我们对与1相邻的点二进制分组即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc++.h>//#define int long l...原创 2020-04-04 23:46:48 · 220 阅读 · 0 评论 -
Birdwatching
题目链接:Birdwatching显然,只有直接与T相连的点,才可能成为答案。对于一个点,可以成为答案,那么证明他可以到其他与T直接相邻的点。所以我们只需要知道每个点是否可以由直接与T相邻的点到达,所以建立反图,然后二进制分组即可。AC代码:#pragma GCC optimize("-Ofast","-funroll-all-loops")#include<bits/stdc...原创 2020-03-26 09:59:13 · 700 阅读 · 0 评论 -
HDU - 6166
题目链接:HDU - 6166显然,如果我们把K个点可以分成两组,那么我们直接最短路就可以求出一组到另一组之间的最短路。所以我们怎么分组才能尽量少的分组,使得任意两点一定会某一时刻存在不同集合呢?二进制分组。只需要分组log次。然后因为是,有向图,分组的两种情况都需要跑一次最短路。这个是稀疏图,spfa会比Dijkstra快很多。AC代码:#pragma GCC optimize(...原创 2020-02-25 13:36:59 · 338 阅读 · 0 评论