摘要: 题意: 在一个连通图中,经过每条边刚好两次,并且最终回到起点,找出这样的一条路径。分析: 在每条边基础上加多一条不同方向的边,dfs所有边,找出欧拉回路。#include<stdio.h>#include<string.h>struct node{ int from,to,next;}e[100005];int head[10005];int tot;void add(int s,int u){ e[tot].from=s; e[tot].to=u; e[tot].next=head[s]; head[s]=tot++;}int v[100005];int q[1... 阅读全文
posted @ 2012-07-23 23:20 'wind 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题意: 有 N 个蚂蚁,N 个苹果,要在每个蚂蚁和一个相应的苹果之间连边,问如何给蚂蚁分配苹果,可以使这些边不相交。分析:应为在最小权值匹配的情况下满足没有边相交,可以简单证明,假设最小完备匹配中有两条线段AC和BD相交于点E,此时我们可以不连接AC和BD而去连接AD和BC,由于AE+DE>AD和BE+CE>BC,所有我们可以得出新连接的边的权值和一定比原来的边的权值和小,这样就可以得到一种权值和更小的匹配,这原来的匹配是最小带权和的匹配矛盾, 因此最小带权和的匹配中不会出现有两条线段相交的情况。code:#include<stdio.h>#include<str 阅读全文
posted @ 2012-07-23 19:05 'wind 阅读(252) 评论(0) 推荐(0) 编辑
摘要: 题意: 有 p 个水手和一个章鱼,章鱼有 n 个脚,知道了所有单位的坐标,和船长以及船员的速度,船长想去攻击章鱼的头部,但是只有在章鱼所有的脚都被水手控制的情况下才会开始朝章鱼头部进攻,问如何分配水手控制的触须,才能在最短时间内是船长攻击到其头部。分析: 二分枚举船员移动的时间ti, 如果水手与某个触须接触所要的时间小于 ti,就在该水手与该触须之间连一条边,找出满足水手与触须最大匹配等于 n 的最小时间,最后加上船长移动到章鱼头部需要的时间即为答案。#include<cstring>#include<cstdio>#include<cmath>#defin 阅读全文
posted @ 2012-07-23 11:13 'wind 阅读(210) 评论(0) 推荐(0) 编辑