摘要: 思路:对每一条边涂上颜色1或-1,颜色值加到关联的两个点上,则一种成功的方案必须满足最后每个点的值为0.剪枝:统计出和某个点i相关联的边的个数,如果枚举到某一条边的时候发现:abs(sum[i]) > degree[i],则剪去,其中sun[i]表示i点的值,degree[i]表示剩下的还没有枚举的... 阅读全文
posted @ 2015-07-23 20:48 hxy_has_been_used 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 这道题中,边权属于[0,1],并且多段路的长度为各段的乘积。联系dijstra算法的特点,我们可以采取类似于dijstra的贪心策略,每次选取到源点距离最大的点,因为现在源点到其他的点的距离都不大于这个距离,以后如果再加上某一段,总的长度便会乘上一个不大于1的数字,就更不可能比现在选取的这个距离大了... 阅读全文
posted @ 2015-07-23 20:32 hxy_has_been_used 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 认识的人之间建立一条权值为1的边,然后求出各对顶点之间的最短路判断是否有长度大于7的。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int INF = 999999; 8 cons... 阅读全文
posted @ 2015-07-23 19:56 hxy_has_been_used 阅读(114) 评论(0) 推荐(0) 编辑
摘要: 这个题的置换恰好是有规律的,所以也不用把置换给存下来,然后只要求出置换的循环节就可以了。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int N = 200001; 8 bool ... 阅读全文
posted @ 2015-07-23 19:00 hxy_has_been_used 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 建立一个超级源点0和超级汇点n,求0到n的最短路就行了。dijstra: 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int INF = 9999999; 8 const int ... 阅读全文
posted @ 2015-07-23 09:23 hxy_has_been_used 阅读(149) 评论(0) 推荐(0) 编辑