-
http://codeforces.com/contest/510/problem/B 题意:给定一个maze,用不同的字母代表不同的颜色。问能否找到一个颜色相同的环(失少四个点组成) 思路:dfs一遍,如果遇到之前已经访问过的点,说明成环。需要注意的是,要注意由一个点向某方向移动,然后由反方向移动到该点所造成的误判。所以dfs除了要知道当前的坐标x,y,还要记录之前的坐标px,py. /* *********************************************** Author :111qqz Created Time :2015年12月05日 星期六 21时35分07秒 File Name …
Read More -
http://codeforces.com/contest/277/problem/A 题意:有n个人,每个人会一定数目的语言(可能为0),一个人学一门语言的代价为1,人和人之间沟通可以通过任意个中间人翻译。问最少的代价使得这n个人可以相互沟通。 思路:建图方式如下:第i个人会语言j,那么连上i和j+n。然后跑一遍dfs,使得1..n这n个点都被访问过。 结果wa4...觉得算法没问题。。看了官方题解。。发现果然有情况没有考虑到。如果所有的人都什么语言都不会的话,那么答案是不能-1的。。因为。。语言和语言之间不能连边。。改了之后A了。。有点开心。。 /* …
Read More -
http://codeforces.com/problemset/problem/217/A 题意:有n个雪漂(那是啥?,从某个雪漂出发走直线,只有到达另一个雪飘才能停下来。问最少需要添加多少个雪漂,才能使得可以到达任何一个雪漂。 思路:横坐标相同或者纵坐标相同的两个点之间是可以到达的。先O(N2)扫一遍建图。记录这个森林中数的个数为cnt,cnt-1即为答案。因为对于任意两个不能相互到达的点。我们只需要再来一个雪漂就可以使得这两个点相互到达。 一遍AC,有点爽。 /* *********************************************** Author :111qqz Created Time :2015 …
Read More -
http://codeforces.com/contest/445/problem/B 题意:一共有n种化学药品。m对关系,每对关系表示为x,y表示x和y相互反应。初始容器的danger值为1,当向容器中加入一个化学药品A,如果容器中存在化学药品和A反应,那么容器的danger值翻倍。否则不变。问一个最优的放置药品的顺序。 思路:容易发现。如果两个药品相互反应就连一条边。实际上这些药品构成了一个森林。而一个节点只要不是树的根节点,那么它在任何位置,对答案的贡献度都是*2.反过来说。所有的节点,只有根节点是对答案没有贡献的。那实际上,我们只需要dfs一遍,得到树的数目,用n减去树的数目,就是对答案有贡献的点的数目。 要注意开long …
Read More -
http://codeforces.com/problemset/problem/522/A 题意:给定某条消息的传播路径。问最远传播的距离。。 思路:其实就是问树的深度。。直接dfs就行了。。 存的时候用map<string,vector > mp;的方式存即可。 /* *********************************************** Author :111qqz Created Time :2015年12月05日 星期六 16时41分41秒 File Name :code/cf/problem/522A.cpp …
Read More -
http://codeforces.com/contest/377/problem/A 题意:给定一个n*m的maze. ‘.’代表空,‘#’代表墙。要求构造一种方案,使得将k个空格填成墙壁后不影响当前的连通性(即没有被填充的空格之间可以相互到达) 思路:一开始想从上往下从左往右构造。错误的认为四个角一定是可以变成墙的。 但其实只要是可能在某条路径上的点,就都不一定可以变成墙。。而四个角显然可以被某条路径经过。 正确的解法很巧妙。以任意一个空格开始跑一遍dfs,设空格一共有sum个,那么就dfs到(sum-k)个。可以做好标记。通过dfs得到的这(sum-k)之间一定是联通的。那么只要填充剩下的就可以了。 /* …
Read More -
http://codeforces.com/contest/580/problem/C 题意:给出一棵树。每个叶子节点上有一个饭店。某些节点上有cat.现在问从根节点出发可以到达多少个饭店,保证在到达饭店的路径中补连续遇到m个以上的cat. 思路:建图,然后dfs..判断为叶子节点(饭店)的方法是某个点的叶子节点数为0. /* *********************************************** Author :111qqz Created Time :2015年12月05日 星期六 10时17分01秒 File Name :580C.cpp …
Read More -
http://codeforces.com/problemset/problem/115/A 题意:给出n个人之间的上级下级关系。问如何分得最少的组,使得没一组中的人不存在上下级关系。 思路:用树的观点来考虑会很容易。可以看成给了一棵森冷。对于不同的树的相同层的点,不存在上下级关系,可以放在一个group.对于同一棵树,每一层要单独放一个group.所以答案是所有树的深度的最大值。 /* *********************************************** Author :111qqz Created Time :2015年12月04日 星期五 21时31分38秒 File Name …
Read More -
http://codeforces.com/contest/598/problem/D 题意:给第一个地图。 ‘.’是能走的,‘’是不能走的。**每个‘.’和''之间有一幅画,**给出k个起点,问对于每组起点,最多能观察到多少副画。 思路:dfs.要注意即使只有一个‘*’,从不同方向访问仍然算不同的画。这样就不用标记画是否访问过了。一开始直接暴力dfs..TLE 10 然后发现,如果是在同一个联通快内,能看到的画的最大值是确定的。。如果之前有同一个联通快内的其他点dfs过得到过答案,那么下次就不用再dfs了。。。记得把之前的记过保存下来。。 我具体的写法是把某一次dfs进过的点的恒纵坐标都存起来。。。然后dfs结束后把更新这些沿途中 …
Read More -
______ 好蠢,竟然没看出来这道题的不同之处,以为就是个搜 然后样例什么的都过了... 结果显然wa... 然后才发现,这道题应该是tsp问题. 解法是先跑一遍bfs, 对于所有的脏点和起点,得到没两个点之间的距离. 然后跑一遍dfs,枚举出所有的组合,同时更新答案. 晚安. /************************************************************************* > File Name: code/poj/rr2688.cpp > Author: 111qqz > Email: rkz2013@126.com > Created Time: …
Read More