摘要: 题目大概是,每个人收到信息后会把信息发给他认识的一个人如此下去,问一开始要把信息发送给谁这样看到信息的人数最多。 首先找出图中的SCC并记录每个SCC里面的点数,如果传到一个SCC,那么里面的人都可以看到信息。 然后SCC缩点后就形成DAG,直接记忆化搜索,d(u)搜索从u点出发开始传最多能传多少人 阅读全文
posted @ 2016-01-25 22:13 WABoss 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 题目大概就是求一个n个不同的数能构造出几种形态的二叉排序树。 和另一道经典题目n个结点二叉树不同形态的数量一个递推解法,其实这两个问题的解都是是卡特兰数。 dp[n]表示用n个数的方案数 转移就枚举第几个数作为根,然后分成左右两子树,左右两子树的方案数的乘积就是这个数作根的方案数 另外就是题目得先找 阅读全文
posted @ 2016-01-25 20:42 WABoss 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 题目是问,一个有向图有多少个点v满足∀w∈V:(v→w)⇒(w→v)。 把图的强连通分量缩点,那么答案显然就是所有出度为0的点。 用Tarjan找强连通分量: 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 using n 阅读全文
posted @ 2016-01-25 10:57 WABoss 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 这题事实上只需要关心15个商店和一个起点一个终点,预处理出这几个点之间的最短距离。Floyd会超时,用Dijkstra即可。 然后就是dp[u][S]表示已经经过商店集合S且当前在第u个商店所花的最少时间。 最后的结果是找到所有dp[u][S]有解且u能到达终点的最大的|S|,而最短时间就是dp[u 阅读全文
posted @ 2016-01-25 09:34 WABoss 阅读(172) 评论(0) 推荐(0) 编辑