图论---搜索
小松萘
厉害的人可真多啊
展开
-
CodeForces - 1093D Beautiful Graph (DFS染色)
留个教训T^T,a 和b忘记清零改了半天 const ll mod=998244353; ll qpow(ll a,ll b)//a^b//快速幂 { if(b==0) return 1; a%=mod; ll ans=1,temp=a; while(b) { if(b&1) ans=(ans*temp)%mod; temp=(temp*temp)%m...原创 2020-03-20 20:21:16 · 137 阅读 · 0 评论 -
CodeForces - 1105D Kilani and the Game (多源BFS)
????♂️ ????♂️ ????♂️ 昨天没读懂题写了半天,,, 题意:每个人每次可扩张的点是从当前占据点开始走s[ i ] 步可到达的所有点,每轮每个人依次扩张,问你最后每个人占据的格子有多少 (1)多个起点,多源BFS (2)每次扩张的时候肯定从最外围(即上一次扩张走的剩余步数为0的点),所以我们对每个点除了坐标之外还要存下该点还能走几步 int n,m,p,s[11],ans[11]; char m...原创 2020-03-16 09:43:29 · 173 阅读 · 0 评论 -
CodeForces - 1141G Privatization of Roads in Treeland(树上染色)
????️♂️ ????️♂️ ????️♂️ 若没有坏点,则颜色数量是度数最多的点的度数,现在最多有k 个坏点,则颜色种类就是第k+1大度数的度,输入边的时候记录下每个边的id方便对边染色。 int ans; vector<pair<int,int>>mp[MAXN]; int col[MAXN]; void dfs(int x,int f,int c) { for(auto...原创 2020-02-21 12:07:37 · 176 阅读 · 0 评论 -
CodeForces - 1307D Cow and Fields (路径转换,BFS)
???? ???? ???? 和上一场CF的E题一个套路i,假设x,y之间新添加一条边之后,1到n的最短路有三种情况: (1)1 ,n(不走这条边,即d1[ n ]) (2)1,x,y,n(d1[ x ] + 1 + d2[ y ] (3) 1,y,x,n(d1[ y ] + 1 + d2[ x ]) 做两次bfs求出d1d2,为了方便统计(只使用(2)情况),对v排序,然后维护一个后缀最大即可 int n,m,k...原创 2020-02-18 15:22:35 · 180 阅读 · 0 评论 -
2020牛客寒假算法基础集训营6 B - 图(搜索,环处理)
???? ???? ???? 题目给出的图很特殊(然而本箬蒻并不会基环树) 可以看出最长简单路径无非就一种情况:从某点开始走,直到遇见某个环,在环上转一圈。 (1)没有环的话直接记忆化搜索即可。 (2)环的处理:遇见环的时候定义某点为圆开始,然后把圆上的点的dp值全部换为圆的周长即可 int to[MAXN],dp[MAXN],ist[MAXN],ring[MAXN];//是否是圆的开始 void dfs(int ...原创 2020-02-16 17:10:03 · 198 阅读 · 0 评论 -
Codeforces Round #570 (Div. 3) E - Subsequences (easy version) (广搜)
???? ???? ???? 题意:从一个字符串中找到k个不重复的子序列,删除的字符数之和最小为多少 最先想到的肯定是只删除一个,接着就是只删除两个。。。应该想到使用队列按顺序检验字符串,有点像那个在房子旁边安排人的题,那个也是从最靠近的部分开始贪心,还有就是string 中使用erase这个函数,如果不希望原字符串改变,一定要先把原字符串拷贝一下QAQ signed main() { int n,k;cin&g...原创 2020-01-16 14:45:47 · 185 阅读 · 0 评论 -
Codeforces Round #611 (Div. 3) D - Christmas Trees(BFS)
???? ???? ???? 题意:现在已知圣诞树在x位置,求人的位置,使每个人到达距离他最近的树的距离之和最小 安排人肯定从树旁边开始安排,树的距离为1的位置安排满之后继续安排下一层,因为线无线长,也没什么限制,就直接bfs map<int, bool> vis; queue<pair<int, int>> q; vector<int> v; int main() ...原创 2019-12-29 10:28:37 · 228 阅读 · 0 评论 -
Codeforces Round #606 (Div. 2) E - Two Fairs(DFS,反向思维)
题意:求点对中,满足要互达必须经过a,b两点的对数,图为无向连通图 若(x,y)要满足互达必须经过(a,b),反过来想, a必须通过b点到达y点:满足a—>b—>y; b必须通过a点到达x点:满足b—>a—>x,无向图:x—>a—>b; 连起来即为:x—>a—>b—>y; int vis[MAXN]; vector<int>edge...原创 2019-12-18 22:26:42 · 184 阅读 · 0 评论