摘要: 题意:在空间中给定n个点,给出每个点的三维坐标,以及每个点上已有的花的数目Fi,和可以从该点上移走的花的数目Li,因为每一次可以移动的距离有限,为R, 所以可以选择一个中介点进行转移,最后将所有的花都移动到第一个点上。因为可以从每个点上移走的花的数目有限,所以,可以通过修改每次可以移动的距离R, 使得最终可以将所有的花移动到第一个点。 求最小的R。 若不存在,这输出-1分析:求最小的R, 我们可以二分,转化为判定性问题。 如果已知R, 问是否能将所有的花移动到第一个点呢? 问题是否好解决一点了?? 将所有的花移动到第一个点,其实就是一个很明显的网络流判是否满流的问题了。问题就是构图了。虚拟一个 阅读全文
posted @ 2013-04-03 13:18 枕边梦 阅读(289) 评论(0) 推荐(0) 编辑
摘要: 题意:N个人排成一队,每个人从1 ~ m 中选择一个数,如果相邻的俩个人选择同一个数,则这个数必须大于K, 问总共有多少种选择方式分析:注意到n的大小,就算0(n) 的算法,都可能超时。。选不考虑这个问题,,,首先应该注意到的是,第n个人对数的选择只与第n - 1个人有关,所以针对状态转移方程下手 我们用f[n][0] 表示长度为n, 最后一个数字小于等于k 的方案数, f[n][1] 表示长度为n ,最后一个数字大于k 的方案数状态转移方程如下:f[n][0] = f[n - 1][0] * ( k - 1) + f[n - 1][1] * k;f[n][1] = f[n - 1][0] * 阅读全文
posted @ 2013-04-03 13:01 枕边梦 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一棵有根树,节点标号为1 ~ n, 根节点固定为1, 每个节点初始值为0。 总共给定M 个操作操作1:o node 将以node 为根的子树的所有节点的值取反,其实就是一个异或操作操作2:q node 问以node为跟的子树的所有节点值为1的总数分析:对做过LCA 转RMQ的应该能想到一点,如果从根节点深搜一遍得到的欧拉序列,仔细观察一下可以发现,每个节点在欧拉序列上其实对应这一个区间,这样就将对子树的操作转移到了对区间的操作。 做完这一步处理之后,熟悉线段树的同学应该就可以解决了,事实上接下来的操作比之前比赛的一道线段树很像。。线段树的每一个节点保存该节点对应区间上1的个数cn.. 阅读全文
posted @ 2013-04-03 12:41 枕边梦 阅读(176) 评论(0) 推荐(0) 编辑