摘要: 无法直接构造最大流来解决这个问题,因为题目要求每首舞曲都需要n对男女进行跳舞。 答案又满足单调性,这启发我们二分答案,判断是否满流验证答案。 假设舞曲数目为x时满足条件,那么每个男生和女生都需要跳x次舞。 连边(s,男i,x), (女i,t,x)来进行限制。 同时要求每个男生最多可以和k个不喜欢的女 阅读全文
posted @ 2017-03-17 14:40 free-loop 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 考虑到矩阵尺寸的关系,可以枚举起点和终点,并且判断是否可行即可。 判断起点和终点是否可以通过挖空至多T个障碍联通。实际上就是求起点到终点的最短路。 所以我们先建好图,然后求以每个方格为起始点的最短路,复杂度O(n*m^2*logm). 枚举起点和终点更新答案的复杂度是O(n^2*m^2). 总复杂度 阅读全文
posted @ 2017-03-16 19:18 free-loop 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 很容易想到记忆化搜索的算法。 令dp[n][T]为到达n点时时间为T的路径条数。则dp[n][T]=sigma(dp[i][T-G[i][n]]); 但是空间复杂度为O(n*T),时间复杂度O(n*n*T). 虽然本题的n<=10,但T最大可到1e9。行不通。 如果题目中的边的权值非0即1的话,显然 阅读全文
posted @ 2017-03-16 17:46 free-loop 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 刚开始往网络流的方向想。建不出图。。。 因为每次只能对一行进行染色。每一行都是独立的。 对于每一行,因为格子只能染一次,所以可以发现这是一个多阶段决策问题,这个决策就是当前格子染0还是染1. 令dp[i][j][k](k==0||k==1)表示当前行第i个格子用了j次染色,且这次染色染为k色 的最多 阅读全文
posted @ 2017-03-14 21:06 free-loop 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 把坐标离散化之后就是很普通的尺取法啦。 # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vector> # include <queue> # include <st 阅读全文
posted @ 2017-03-14 18:47 free-loop 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 我们不妨考虑可以划分为实数的情况,设划分为x份实数,使得总乘积最大。 易得当每一份都相等时乘积最大。即 ans=(n/x)^x. 现在只需要求出这个函数取得最大值的时候x的取值了。 两边取对数,则有ln(ans)=x*ln(n/x). 再两边取导数。可得当x=n/e的时候,每份是e的时候,总乘积最大 阅读全文
posted @ 2017-03-14 18:18 free-loop 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 容易看出这是显然的费用流模型。 把每天需要的餐巾数作为限制。需要将天数拆点,x’表示每天需要的餐巾,x’’表示每天用完的餐巾。所以加边 (s,x',INF,0),(x'',t,INF,0). 餐巾可以新买。所以需要加边(s,x'',INF,f)。 没用完餐巾可以留到下一天,所以加边(x',x+1', 阅读全文
posted @ 2017-03-14 14:17 free-loop 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 首先考虑无解的情况, 根据purfer序列,当dee[i]=0并且n!=1的时候,必然无解。否则为1. 且sum(dee[i]-1)!=n-2也必然无解。 剩下的使用排列组合即可推出公式。需要注意的是题目虽然说最终答案不会超过1e17,但是中间过程可能超。 由于n<=150, 所以sum最多是148 阅读全文
posted @ 2017-03-13 16:46 free-loop 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 给出了l,r,w。我们就得知了s[r]-s[l-1]=w.也就是说,点l-1和点r的距离为w。 于是可以使用带权并查集,定义dis[i]表示点i到根节点的距离。查询和合并的时候维护一下就OK了。 如果账本有错误,那么这两点的距离一定不等于在并查集上面的距离。 # include <cstdio> # 阅读全文
posted @ 2017-03-13 15:17 free-loop 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 数学归纳法。 dp[i][j]=dp[i][j-1]+dp[i-1][j-1]. # include <cstdio> # include <cstring> # include <cstdlib> # include <iostream> # include <vector> # include 阅读全文
posted @ 2017-03-13 14:13 free-loop 阅读(180) 评论(0) 推荐(0) 编辑