摘要: 对于每个 Block 求出其 循环因子,我这里是用 Vector 动态数组,省事 循环因子顾名思义就是置换会出现循环. 这样把时间复杂度降下来. 因为串总长才 200 , 分别处理每一个循环因子. 可以选择一个一个移动模拟, 也可以一次到位. 我都试了下,都是700+Ms. 虽然区别不大, 估计是数据问题吧. 数据量大了肯定影响很大.View Code #include<stdio.h>#include<string.h>#include<stdlib.h>#include<algorithm>#include<iostream>#i 阅读全文
posted @ 2012-12-30 15:40 yefeng1627 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 总共共10^5个数,取值在10^6之内 离散化后与下标形成映射,转换成置换群 然后就可以形成: 有 n = 10^5 个位置, 每个位置有一头编号为 a[i] (取值范围为[1,n] ) 的牛, 其愤怒值为 dep[ a[i] ] 对于置换群求出其循环因子后. 因为置换的权值花费为 dep[i], dep[j] 所以我们取最小的 dep, 例如循环因子 ( 1 , 4, 7, 8 ) 需要三次置换 , 我们可以取最小的 1, 其愤怒值为 dep[1] ( 我们按权值递增离散化过) 所以三次置换分别为 ( 1, 4 ) ( 1, 7 ) ( 1, 8 ) 则三次花费为 ( de... 阅读全文
posted @ 2012-12-30 12:52 yefeng1627 阅读(158) 评论(0) 推荐(0) 编辑

Launch CodeCogs Equation Editor