摘要: 这个题最暴力的搞法就是这样的:设 $Dp[i][j]$ 为前 $i$ 个数乘积为 $j$ 的方案数。转移的话就不多说了哈。。。当前复杂度 $O(nm^2)$注意到,$M$ 是个质数,就说明 $M$ 有原根并且我们可以很快的求出来。于是对于 $1\rightarrow M-1$ 中的每一个数都可以表示... 阅读全文
posted @ 2015-04-16 09:11 Gromah 阅读(1396) 评论(3) 推荐(1) 编辑
摘要: 首先我们可以二分答案。假设当前二分出来的答案是 $Ans$ ,那么我们考虑用网络流检验:设武器为 $X$,第 $i$ 个武器的攻击力为 $B_i$;设机器人为 $Y$,第 $i$ 个机器人的装甲为 $A_i$;设 $Map[i][j]$ 表示第 $i$ 个机器人是否能攻击第 $j$ 号机器人。设源为... 阅读全文
posted @ 2015-04-15 21:14 Gromah 阅读(636) 评论(0) 推荐(0) 编辑
摘要: 很自然想到区间 DP。设 $Dp[i][j]$ 表示把区间 $[i, j]$ 内的套娃合并成一个所需要的代价,那么有:$Dp[i][i] = 0$$Dp[i][j] = min\{Dp[i][k] + Dp[k + 1][j] + Merge([i, k], [k + 1, j])\} (i \le... 阅读全文
posted @ 2015-04-15 11:21 Gromah 阅读(583) 评论(0) 推荐(0) 编辑
摘要: 首先,我们可以求出源为 $1$ 号点的最短路图以及各个点到 $1$ 号点的最短路。然后我们考虑那些距离不同的点,是一定不会发生拥堵现象的。然后我们就只需要考虑那些距离相同的点,就相当于做一个最大流嘛。假设考虑与 $1$ 号节点距离为 $d$ 的点,那怎么连边,怎么设置源和汇呢?源为 $1$ 号节点,... 阅读全文
posted @ 2015-04-15 10:04 Gromah 阅读(459) 评论(0) 推荐(0) 编辑
摘要: 首先,我们可以先考虑一个暴力一点的算法:对于任意两个分子,如果它们能以至少一种进行匹配,那么我们就在这两个分子之间连一条边。然后如果我们能找到一个环,就说明是 unbounded,否则就是 bounded。复杂度是 $O(n^2)$ 的,然而 $n \le 40000$ ,显然是不行的。考虑优化。我... 阅读全文
posted @ 2015-04-14 22:04 Gromah 阅读(271) 评论(0) 推荐(0) 编辑
摘要: 我们首先可以得到:如果有一堆盘子里有一些相邻的盘子的直径相等,那么自然这些盘子可以统一处理,就可以缩成一个了。然后我们接着考虑给每一堆盘子都染上一种颜色,那么操作的次数 step = diff * 2 - n + 1其中 diff 表示最终的盘子堆中相邻的盘子的颜色不同的对数。接着我们可以将盘子的直... 阅读全文
posted @ 2015-04-14 11:19 Gromah 阅读(482) 评论(0) 推荐(0) 编辑
摘要: 我们首先将所有电池排序,那么我们可以找到一组最优方案,使得一台机器的能量之差是相邻两电池的能量之差。然后我们就二分这个答案,从前往后贪心地选这个数对,然后看是否所有的数对都是满足条件的。假设这个数对是 i - 1, i,并且是第 j 个数对,那么我们称满足条件为:2nk - i + 2 >= 2k(... 阅读全文
posted @ 2015-04-14 09:20 Gromah 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 我猜了一个结论,能合并就合并,到了必须要敌对交易的时候才进行敌对交易。然后合并的话,肯定是拿最大的两个去合并。至于敌对交易,肯定是干掉对方最大的公司才是有意义的。于是各种分类讨论。。。看代码好了。。。#include #include #include #include #include #incl... 阅读全文
posted @ 2015-04-13 20:07 Gromah 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 好点对的个数是$O(n)$的,而且我们可以 $O(n)$ 地求出所有好点对。我们把这些点对以右端点为关键字从小到大排序,再弄个扫描线,每次把右端点在扫描线上的点对的左端点加入线段树,于是我们可以得出右端点小于等于当前时刻 $t$ 的左端点为 $i(i \le t)$ 的 好点对的个数。由于强制在线,... 阅读全文
posted @ 2015-04-13 10:59 Gromah 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 首先,我们可以得到最高位的位数为:$\lfloor\frac{n+k-1}{n}\rfloor$,记作 $E$。然后给这 $n$ 个长为 $E$ 的数字排序,后缀数组 $O((n+E)\log E)$ 搞定。然后二分最大的数字,记作 $Max$,再记一个 $Next_i$,表示从 $i$ 开始,数字... 阅读全文
posted @ 2015-04-13 10:50 Gromah 阅读(223) 评论(0) 推荐(0) 编辑