12 2013 档案
摘要:比赛链接:http://codeforces.com/contest/369369C - Valera and Elections:这是一个树上问题,用深搜,最开始贪心想得是只加叶子节点,找到一个叶子节点且从根1 ——》 叶子节点有problem edges,就把这个点加入,但后来一直WA,才发现时贪错了,找到的这个叶子节点不一定需要,所以要多记录点信息,参考别人的思想,就是标记每个点是不是需要修,如果一个更深的点需要修,则中间的就不需要了。代码:#include#include#include#include#includeusing namespace std;const int maxn
阅读全文
摘要:题目链接:http://acm.buaa.edu.cn/problem/59/想法:由于要有最少的扇形来覆盖所有的点,点有哪么多,肯定是贪心算法,想到一个在一条直线上的很多点,要用最少区间去覆盖所有点,这个是贪心,只需要从最左边第一个点开始覆盖即可。 但这个题是平面上的,如何贪心? 这里想到由于必要有个扇形覆盖的起点,不可能每个都枚举,那个更可能?? 我的想法是:找到任意两个点间最大的间隔角度,起点从其中一个开始,就转换成直线上区间覆盖点的问题了。代码:#include#include#include#include#includeusing namespace std;const doub.
阅读全文
摘要:题目链接:http://acm.buaa.edu.cn/problem/418/代码:#include#include#include#includeusing namespace std;const int maxn = 550;const int maxe = 5050;const int INF = 0x3f3f3f3f;int pa[maxn];int find(int x){ return x == pa[x] ? x : pa[x] = find(pa[x]);}struct Edge{ int u,v,w; bool operator rhs.w; }}...
阅读全文