码迷,mamicode.com
首页 > 其他好文 > 详细

BestCoder 1st Anniversary ($)

时间:2015-07-26 20:46:58      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

1001 Souvenir

本题是一个简单的数学题. 如果套装优惠的话就尽量买套装, 否则单件买. 注意一下如果一直用套装的话可能在最后的零头不如单买好, 即$(n \text{ mod } m) \cdot p < q$.

1002 Hidden String

这个题怎么暴力怎么搞就好了. 可以枚举最长匹配前缀, 和最长匹配后缀, 中间暴力for.

1003 Sequence

这个题看上去是一个贪心, 但是这个贪心显然是错的.
事实上这道题目很简单, 先判断1个是否可以, 然后判断2个是否可以. 之后找到最小的$k (k > 2)$, 使得$(m - k) \mod 6 = 0$即可.

证明如下:
$3n(n-1)+1 = 6(n*(n-1)/2)+1$, 注意到$n*(n-1)/2$是三角形数, 任意一个自然数最多只需要3个三角形数即可表示. 枚举需要$k$个, 那么显然$m=6(k\text{个三角形数的和})+k$, 由于$k \ge 3$, 只要$m-k$是6的倍数就一定是有解的.

事实上, 打个表应该也能发现规律.

1004 Bipartite Graph

首先二分图可以分成两类点$X$和$Y$, 完全二分图的边数就是$|X| \cdot |Y|$.我们的目的是$\max \{|X| \cdot |Y|\}$, 并且$|X| + |Y| = n$.

把原图黑白染色, 每个联通块有$a_i$个黑点, $b_i$个白点, 于是就是要确定$a_i$属于$X$还是属于$Y$. 然后我们考虑dp, $dp_{i,x}$表示用了前$i$个联通块, $|X|=x$是否可行. dp方程很容易确定, $dp_{i,x} = dp_{i-1,x-a[i]} \text{ or } dp_{i-1,x-b[i]}$.

直接暴力是$O(n^2)$的, 可以考虑用bitset优化, 这样就可以过了. 实际上由于数据很难造, 一些稍加优化的$n^2$也可以过的

1005 Happy King

BestCoder 1st Anniversary ($)

标签:

原文地址:http://www.cnblogs.com/cheater/p/4678474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!