摘要: 当前得分期望=(上一轮得分期望+这一轮得分)/m dp[i,j]:第i轮拿的物品方案为j的最优得分期望 如果我们正着去做,会出现从不合法状态(比如前i个根本无法达到j这种方案),所以从后向前推 如果当前方案j里具备了取k这个物品的条件 那么dp[i,j]+=max{dp[i+1,j],dp[i+1, 阅读全文
posted @ 2017-03-06 12:15 free-loop 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 如果把当前格子涂什么颜色当做转移的话,状态则是每个格子的颜色数还剩多少,以及上一步用了什么颜色,这样的状态量显然是5^15.不可取。 如果把当前格子涂颜色数还剩几个的颜色作为转移的话,状态则是每个格子的还剩多少个的颜色数,以及上一步用了还剩几个的颜色,这样的状态量为15^5. 那么定义dp[a][b 阅读全文
posted @ 2017-03-06 11:22 free-loop 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 可以看出这是个多重背包,运用单调队列优化可以使每次询问达到O(s).这样总复杂度为O(s*tot). 会TLE。 因为改题的特殊性,每个硬币的币值是不变的,变的只是每次询问的硬币个数。 我们不妨不考虑硬币个数的限制。这样可以用完全背包在O(s)的时间求出dp[]数组,表示没有限制的种数。 现在加入每 阅读全文
posted @ 2017-03-05 18:42 free-loop 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 如果能想到费用流,这道题就是显然了。 要求所有人的等待平均时间最小,也就是所有人的总等待时间最小。 每辆车只需要修一次,所以s连每辆车容量为1,费用为0的边。 现在需要把每个人拆成n个点,把车和每个人的第k个点连一条容量为1,费用为cost[i][j]*k的边。 最后把每个人拆完后的点向汇点连一条容 阅读全文
posted @ 2017-03-04 23:08 free-loop 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 很普通的拆点网络流,把每个柱子拆成两个点(i,j,0)和(i,j,1).对于柱子的高度限制则加边((i,j,0),(i,j,1),height). 两个柱子能互相到达则加边((i,j,1),(i1,j1,0),INF). 能到达边界的柱子加边((i,j,1),t,INF).有蜥蜴的柱子加边(s,(i 阅读全文
posted @ 2017-03-04 19:38 free-loop 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 求最大01相间子矩阵可以转换为求最大全0子矩阵。只需把棋盘(x+y)为奇数的取反,而该问题可以用经典的悬线法O(n^2)的求解。 悬线法呢。 首先定义b[i][j],为a[i][j]向上的最大连续0的长度。可以O(n^2)递推求出。 l[i][j],为b[i][j]向左边的最大连续序列的长度,该连续 阅读全文
posted @ 2017-03-04 18:38 free-loop 阅读(222) 评论(0) 推荐(0) 编辑
摘要: 很显然的区间DP,定义dp[i][j][k], 如果dp[i][j][k]=1表示字符串[i,j]可以组成k字符。 # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <v 阅读全文
posted @ 2017-03-04 16:55 free-loop 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 很好的一道题。。 首先把边权排序。然后枚举最小的边,再依次添加不小于该边的边,直到s和t联通。用并查集维护即可。 # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <ve 阅读全文
posted @ 2017-03-04 14:58 free-loop 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 刚开始用二维RMQ直接给超内存了。。。 用单调队列可以做到O(n^2)的复杂度。具体是先把每行用单调队列处理一下。再把处理后的用列单调队列处理下。 # include <cstdio> # include <cstring> # include <cstdlib> # include <iostre 阅读全文
posted @ 2017-03-04 14:41 free-loop 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 这题的DP很难想,定义dp[i][j][a][b]表示用了i个男生,j个女生,任一连续的后缀区间内,男生比女生最多多a人,女生比男生最多多b人。 转移就是显然了。 # include <cstdio> # include <cstring> # include <cstdlib> # include 阅读全文
posted @ 2017-03-03 21:06 free-loop 阅读(156) 评论(0) 推荐(0) 编辑