摘要: 有一种压力,感觉自己很菜;有一种排名,每次都是倒数;有种释放,就是周日晚上;有一种爱好,将所有娱乐都抛弃;有一种比赛,历练成了受虐狂;有一句句话,Anacaday;有一种喜欢,叫做愿意付出所有;*************************************************因为喜欢所以很容易受伤;因为喜欢所以不会轻言放弃;因为喜欢所以愿意付出;因为喜欢所以不想只把他当做爱好;因为喜欢所以感觉不能只是玩玩它而已;因为喜欢所以习惯了不习惯的;**************************************************我还有我的梦想,就是小菜鸟翻一下身!我还 阅读全文
posted @ 2012-11-05 22:05 crying_Dream 阅读(170) 评论(0) 推荐(0) 编辑
  2013年7月30日
摘要: 题目链接:http://poj.org/problem?id=2375题目大意:一片滑雪场,奶牛只能向相邻的并且不高于他当前高度的地方走。想加上缆车是的奶牛能从低的地方走向高的地方,求最少加的缆车数,是的奶牛可以从任意一个角落到达任意另外的角落解题思路:奶牛可以向相邻的不高于他的地方走,相当于u,v之前连通。若想加上缆车是图成为连通图,数目就是max(root, leave);思路同POJ 1236代码如下:#include#include#includeusing namespace std;#define M 505#define N 2000005struct Edge{ int ... 阅读全文
posted @ 2013-07-30 22:49 crying_Dream 阅读(287) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1236题目大意:给出N台电脑,电脑间单向连通传送文件问题1.网络中最少放几个文件保证所有电脑都能接受到文件问题2.最少向网络中加几条线保证任意放1个文件所有电脑都能接受到解题思路:1.求出强连通分量2.缩点 ,进行重新构图3.如果入度为0,说明没有文件传输到该网络。解决问题1,统计入度为0的个数即可4.一个强连通图的入度和出度都不为0。入度为0相当于根root,出度为0相当于叶子leave.max(root, leave)即为答案。就是需要加的线数,保证整个网络强连通。若连通分量个数为0,那么答案为0代码如下:#include#i 阅读全文
posted @ 2013-07-30 22:48 crying_Dream 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给出N头牛,有M种关系u, v。代表u牛崇拜v牛。要求找出有多少头牛被所有牛崇拜着题目链接:http://poj.org/problem?id=2186解题思路:1>求出强连通分量,标记每头牛属于哪个分量内2>进行缩点,计算连通分量的个数x,给出的M组关系重新构图。u,v若属不于一个连通分量内out[belong[u]]++;3>统计x个连通分量出度。如果超过1个的连通分量出度为0,证明两群牛互不崇拜; 如果等于1 答案就是该分量中牛的个数.代码如下:#include#include#includeusing namespace std;#define N 1000 阅读全文
posted @ 2013-07-30 22:46 crying_Dream 阅读(199) 评论(0) 推荐(0) 编辑
摘要: #include#include#includeusing namespace std;#define N 1000005#define INF 999999999int head[N], vis[N], queue[N], dis[N], outqueue[N];int n, index;struct Edge{ int v, value, next;}edge[N];void add_Edge(int u, int v, int val){ edge[index].next=head[u]; edge[index].v=v; edge[index].value=va... 阅读全文
posted @ 2013-07-30 22:44 crying_Dream 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://poj.org/problem?id=1364题目大意:是否存在一个序列满足给的m组条件si ni oi ki如果oi=gt 表示:S(i+ni)-Si>ki如果oi=lt 表示:S(i+ni)-Si S(i+ni)-Si Si-S(i+ni)#include#includeusing namespace std;#define N 100000#define M 100000#define INF 999999999int dis[N]; //记录距离int vis[N]; //标记是否在队列中int queue[N]; //模拟队列int outqueue[N 阅读全文
posted @ 2013-07-30 22:42 crying_Dream 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 差分约束:解决满足条件的不等式为了保证图连通,引入附加点vs,使图中每个点vi到vs都可达,设弧的权w(vs, vi)=0.对于每个差分约束xj-xi权值为bk;初始化dis[vs]=0, dis[vi]=INF;然后求以vs为源点的最短路径。由于存在负权值,因此可以用Spfa算法求spfa算法:1.将源点加入队列, dis[s]=0, 其他点为无穷大2.将队头取出标记为front,遍历与他相邻的点x;3.如果dis[x]>dis[front]+edge[x].value即源点到x的距离大于源点到front的距离+front到x点的距离,更新dis[x].并且如果x不在队列中将它入队.重 阅读全文
posted @ 2013-07-30 22:40 crying_Dream 阅读(276) 评论(0) 推荐(0) 编辑
摘要: Description"Good man never makes girls wait or breaks an appointment!" said the mandarin duck father. Softly touching his little ducks' head, he told them a story. "Prince Remmarguts lives in his kingdom UDF – United Delta of Freedom. One day their neighboring country sent them Pr 阅读全文
posted @ 2013-07-30 22:40 crying_Dream 阅读(311) 评论(0) 推荐(0) 编辑
摘要: K短路 用dijsktra+A*启发式搜索当点v第K次出堆的时候,这时候求得的路径是k短路。A*算法有一个启发式函数f(p)=g(p)+h(p), 即评估函数=当前值+当前位置到终点的最短距离g(p):当前从s到p点所走的路径长度,h(p)就是点p到目的点t的最短距离。f(p)就是当前路径从s走到p在从p到t的所走距离。步骤:1>求出h(p)。将有向边反向,求出目的点t到所有点的最短距离,用dijkstra算法2>将原点s加入优先队列中3>优先队列取出f(p)最小的一个点p如果p==t,并且出来的次数恰好是k次,那么算法结束否则,如果p出来的次数多余k次,就不用再进入队列中否 阅读全文
posted @ 2013-07-30 22:37 crying_Dream 阅读(1819) 评论(0) 推荐(0) 编辑
  2013年5月4日
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=3013先发泄一下,这道题写了24+小时,太恶心了..感谢黑大的一个童鞋挑出了我思路的bugO(∩_∩)O~~看着他9000B+的代码开始羡慕后来..hiahia~~3000B+搞定~~82290752013-05-04 00:12:03Accepted30130MS332K3788 BG++Dream82290712013-05-04 00:10:42Presentation Error30130MS328K3790 BG++Dream82290692013-05-04 00:10:39Compilation 阅读全文
posted @ 2013-05-04 00:21 crying_Dream 阅读(564) 评论(1) 推荐(0) 编辑
  2013年4月3日
摘要: http://acm.hdu.edu.cn/showproblem.php?pid=4111题目大意:详见http://acm.hrbust.edu.cn/index.php?m=ProblemSet&a=showProblem&problem_id=1719解题思路:开始的时候一直在推规律。但是很苦x,比赛到最后都没推出来。看了解题报告的状态转移方程才ac了此题。 最终的石子都会化成一堆。但是如果合并的话将奇偶性改变了一下,相当于缓了一步。由于一堆石子只有一个很特殊。因此状态转移方程将他分开考虑。dp[i][j]:表示i个1堆石子 ,将非一石子合并后的总数。dp[i][j]= 阅读全文
posted @ 2013-04-03 20:17 crying_Dream 阅读(385) 评论(0) 推荐(0) 编辑