上一页 1 2 3 4 5 6 7 8 9 ··· 21 下一页
摘要: 找人去炸边,炸完之后分成两个连通块(炸割桥)每条边上有w个守卫,派去炸桥的人不能比守卫少所以,如果原本不连通,那么输出0如果没有桥,输出-1如果有桥没有守卫,那么是输出1,而不是0(trick) 1 #pragma warning(disable:4996) 2 #pragma comment(li... 阅读全文
posted @ 2015-09-10 17:09 justPassBy 阅读(244) 评论(0) 推荐(0) 编辑
摘要: 连边的最后肯定是两个集合x,yx集合的每个元素,到y集合中的每个元素都是单向的边x集合,和y集合都是完全图设a为x集合的点的个数, b为y集合的那么答案就是 a * b + a*(a-1) + b*(b-1) - mn*n-a*b-n-m , 所以a*b尽量小, 即a和b的差值尽量大缩点之后的点入度... 阅读全文
posted @ 2015-09-10 16:38 justPassBy 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 每天在一个n*m的棋盘上放棋子,问使得每一行,每一列都有棋子的期望天数dp[n][m][k] 表示用k个棋子占据了n行,m列,距离目标状态还需要的期望天数那么dp[n][m][k] = p1 * dp[n][m][k+1] + p2*dp[n+1][m][k+1] + p3*dp[n][m+1][k... 阅读全文
posted @ 2015-09-10 13:54 justPassBy 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 给我们一个图,然后有q次加边的操作,问每次加完边之后有多少个桥存在首先用dfs求出所有的桥,然后dfs的过程中生成了一棵dfs树,该树有的边是桥,有的不是,用bridge[v] = true , 表示v与fa[v]的连边是桥当加入一个边u,v后, u,v,lca(u,v)上的边从割边变成了非割边。至... 阅读全文
posted @ 2015-09-09 15:26 justPassBy 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 给我们一个有向图,有两个问题1、最少要给多少个点发消息,才能使得所有的点都收到消息(消息可以随边传递)2、最少需要多少条边才能使得图变成强连通图对于一个强连通分量,可以当做一个点来考虑,所以我们可以缩点,然后得到DAG图,那么对于第一个问,即是入度为0的点有多少个,因为入度为0的点无法收到消息。对于... 阅读全文
posted @ 2015-09-09 15:19 justPassBy 阅读(1762) 评论(0) 推荐(0) 编辑
摘要: A*的概念主意在于估计函数,f(n)=g(n)+h(n),f(n)是估计函数,g(n)是n节点的当前代价,h(n)是n节点的估计代价;而实际中,存在最优的估计函数f'(n)=g'(n)+h'(n),那么显然我们在A*的估计中,h(n)=g'(n)我还不怎么清楚为什么啊,大多数情况是g(n)=g'(n... 阅读全文
posted @ 2015-09-07 19:14 justPassBy 阅读(412) 评论(0) 推荐(0) 编辑
摘要: hdu1506的加强版, 如果要做这题,还是先去做1505吧这一题,其实是对每一行做1505的那种dp,然后取最大值就行了。 1 #pragma warning(disable:4996) 2 #pragma comment(linker, "/STACK:1024000000,1024000000... 阅读全文
posted @ 2015-09-05 15:33 justPassBy 阅读(269) 评论(0) 推荐(0) 编辑
摘要: 可以算出以第i个值为高度的矩形可以向左延伸left[i],向右延伸right[i]的长度那么答案便是 (left[i] + right[i] + 1) * a[i] 的最大值关键left[i] 和right[i]的计算如果a[i] > a[i-1] , 那么left[i] = 0如果a[i] 4 ... 阅读全文
posted @ 2015-09-05 15:20 justPassBy 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 从n根筷子里面, 选择k+8个集合的筷子,每个集合三根筷子, A#include #include #include #include #include #include #include #include #include #include #include #include #include #... 阅读全文
posted @ 2015-09-05 10:36 justPassBy 阅读(336) 评论(0) 推荐(0) 编辑
摘要: 给定一个字符串,问最少添加多少个字符可以使得这个字符串变成回文串if(str[i]==str[j]) dp[i][j] = dp[i+1][j-1]else dp[i][j] = min(dp[i][j-1],dp[i+1][j]);可以看出,dp[i][j] 要么是从dp[i+1][] 这个状态转... 阅读全文
posted @ 2015-09-05 10:02 justPassBy 阅读(214) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 21 下一页