05
2017-07
2017-07
UVALive 5920 Kingdom Roadmap
题意:~
思路:给定一个n个点,n-1条边,问添加少的边使原图变成一个双连通图。因为给定的就是一棵树,所以问题简单了很多。
#include <bits/stdc++.h>
using namespace std;
const int N = 100050;
vector<int> g[N];
vector<int&...
07月05日
1,982
06
2016-10
2016-10
HDU 5927 Auxiliary Set (DFS)
题目链接:点我~~
题意:给定一棵树,每次询问一个集合,问所有不在这个集合的点两两 LCA (可以相同)的并集大小。
思路:实际上就是对于每个被删掉的点,check 一下是不是除了一个子树之外的点都被删掉了。那么对于每个被删掉的点的连通块,从最高点开始 dfs 就行。
#include <bits/stdc++.h>
using namespa...
10月06日
2,178
21
2016-09
2016-09
HDU 5877 Weak Pair (线段树+离散化+DFS)
题目链接:点我~~
题意:给出一棵n个结点的树和一个数k, 每个节点上有权值ai, 问有多少个有序对(u,v)满足u是v的祖先, 且au*av≤k.
思路:从根开始dfs, 用线段树维护当前节点u到根的节点权值序列, 数据很大,需要离散化,然后就查询小于等于k/au的数的个数. 之后把au插入, 然后继续查找子节点,回溯的时候再删去该节点。其实就是查找每个节...
09月21日
2,134
20
2016-07
2016-07
HDU 5723 Abandoned country (最小生成树+dfs)
题目链接:点我~~
题意:~~
思路:首先注意到任意两条边的边权是不一样的,由此得知最小生成树是唯一的,最小生成树既然 是唯一的,那么期望其实也就是唯一的,不存在什么最小期望。求完最小生成树之后,接下 来的问题就可以转换成在最小生成树上求任意两点之间距离的平均值,对于每条边,统计所 有的路径用到此边的次数,也就是边的两端的点数之积。那么这条边的总贡献就是次数...
07月20日
3,066
31
2016-01
2016-01
ZOJ 2743 Bubble Shooter (搜索)
新增加的泡泡如果跟周围同色的泡泡相连个数>=3,他们就会爆炸,还有不是头顶第一排相连的,也会爆炸,先处理下跟新增加的泡泡相连的泡泡,然后再统计头顶相连的泡泡。。奇偶行泡泡个数不一样,所以要分开处理。。
#include<iostream>
#include<cstdio>
#include<string>
#incl...
01月31日
2,286