UVALive - 3977 Summits (BFS染色)】的更多相关文章

题目大意:坑爹的题目.题意那么难理解. 讲的就是,假设该点是山顶的话(高度为h).那么以该点为中心,往外辐射.走高度大于h-d的点,到达不了还有一个比它高的点 这就提示了,高度要从大到小排序,依次以高的点(假设高度为h)为核心辐射,假设碰上高度小于等于h-d的.表示此路不通了.就在该处停止 反之.假设碰上高度大于h-d的,且没有被染色过的.那么就将其染色 假设碰上高度大于h-d的,且被染色的话,就表明能够走到还有一个更高点了,那么此点就不是山顶了 假设中途碰到了和该点一样高的,那么山顶的数量就加…
这个题意搞了半天才搞明白 就是如果定义一个d-summit,即从该点到另一个更高的点,经过的路径必定是比当前点低至少d高度的,如果该点是最高点,没有比他更高的,就直接视为顶点 其实就是个BFS染色,先按降序排序,然后每个点对其可到达的点染色,h-d的点为边界,走到这里就不用往下染了 然后其他店染色的时候若产生冲突,则非d—summit,否则该点为顶点 今天还有COJ上一个BFS染色的题目,一直TLE...还没弄出来 #include <iostream> #include <cstdio…
UVA12130 Summits(BFS + 贪心) 题目链接 题目大意: 给你一个h ∗ w 的矩阵,矩阵的每一个元素都有一个值,代表这个位置的高度. 题目要求你找出这个图中有多少个位置是峰值点.从每一个点(高度H)出发遍历这个图有一个要求.就是走过的点的高度不能小于等于H - d:成为峰值点的要求就是从这个点出发走到的位置不能有高度大于H的. 解题思路: 由于图非常大.用dfs肯定不行.将这些点依照高度从大到小的排序.然后每一个点作为起点来遍历,假设找到比这个点大的点就说明不是峰值点. 而且…
<题目链接> 题目大意: 有N个人,M组互相认识关系互相认识的两人分别为a,b,将所有人划分为两组,使同一组内任何两人互不认识,之后将两个组中互相认识的人安排在一个房间,如果出现单人的情况则不安排房间.输出最大需要安排房间的数量. 解题分析:其实题意就是叫我们先判断该图是否为二分图,如果是的话,给出它的最大匹配.判断是否是二分图,我们可以用BFS或DFS对每个节点进行染色,有直接认识关系的人染成不同颜色,判断再染色的过程中是否发生冲突.最后再用匈牙利求出最大匹配. #include <c…
题目链接 这题恶心死我了. bfs染色,统计每个联通块两色的个数,ans加它们的最小值. #include<cstdio> #include<cctype> #include<algorithm> #include<cstring> using namespace std; inline long long max(long long a,long long b){ return a>b?a:b; } inline long long read(){…
1617: 刘备闯三国之汉中之战 Time Limit: 1000 MS  Memory Limit: 128 MBSubmit: 6  Solved: 5[Submit][Status][Web Board] Description 刘备(161年-223年6月10日),字玄德,东汉末年幽州涿郡涿县,西汉中山靖王刘胜的后代.刘备一生极具传奇色彩,早年颠沛流离.备尝艰辛最终却凭借自己的谋略终成一方霸主.那么在那个风云激荡的年代,刘备又是如何从一个卖草鞋的小人物一步一步成为蜀汉的开国皇帝呢?让我们…
题目传送门 题意:题意坑爹.问符合条件的的山顶个数 分析:降序排序后从每个点出发,假设为山顶,如果四周的点的高度>h - d那么可以走,如果走到已经走过的点且染色信息(山顶高度)不匹配那么就不是山顶.重点在于就算知道不是山顶也要染色完. #include <bits/stdc++.h> using namespace std; const int N = 5e2 + 5; const int INF = 0x3f3f3f3f; int h, w, d; struct Point { in…
题目链接:option=com_onlinejudge&Itemid=8&page=show_problem&problem=4675">点击打开链接 gg..== #include <cstdio> #include <cstring> #include<iostream> #include <queue> #include <set> #include <map> #include <…
题目链接: E - What a Ridiculous Election  UVALive - 7672 题目大意: 12345 可以经过若干次操作转换为其它五位数. 操作分三种,分别为: 操作1:交换相邻两数操作2:选择一位 +1,若大于 9 ,则对 10 取模.操作3:选择一位 *2 ,若大于 9,则对 10 取模.其中操作 2 最大进行 3 次,操作 3 最多进行 2 次. 对于给定的五位数,求 12345 在满足限制条件情况下,最少通过几步操作可以转换为目标五位数.若不可能,则输出 -1…
UVA 12130 - Summits 题目链接 题意:给定一个h * w的图,每一个位置有一个值.如今要求出这个图上的峰顶有多少个.峰顶是这样定义的.有一个d值,假设一个位置是峰顶.那么它不能走到不大于该峰顶高度 - d的位置.假设满足这个条件下.而且无法走到更高的山峰,那么它就是峰顶 思路:利用贪心的策略.把全部点丢到优先队列,每次取出最高的峰值開始找,进行广搜.搜的过程中记录下最大值的点的个数.假设这个是峰顶.就加上这个数. 推断是不是峰顶的方法为,假设广搜过程中.不会找到一个点的能到的最…