上一页 1 ··· 31 32 33 34 35 36 37 38 39 ··· 41 下一页
摘要: 题意:求一串数的众数(保证次数的出现次数超过一半),n<=500000很简单是不是……快拍一下不就行了吗,不超时呢=W=,不过……尼玛空间只有1M……于是此题就成了神题(理解成智商题= =本渣智商捉鸡),http://hi.baidu.com/strongoier/item/f08fe08cdafb... 阅读全文
posted @ 2014-04-13 21:55 Chellyutaha 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 题意:S<=x1+x2+...+xT<=B0<=x1<=N10<=x2<=N2...0<=xT<=NT求这个不等式方程组的解的个数。分析:即求(1+x1+x1^2+x1^3+...x1^N1)(1+x1+x1^2+x1^3+...x1^N2)...的展开式中指数为s~B的系数之和,那么多项式乘法撸撸就行了 阅读全文
posted @ 2014-03-26 23:01 Chellyutaha 阅读(194) 评论(0) 推荐(0) 编辑
摘要: 题意:多重背包的w=v特殊情况分析:此题如果用单调队列O(nv)会被无耻卡常数……然后鉴于此题W=V,所以只存在背包恰好为i的是否存在,即bool型的f[i]是否为1即往背包染色上面考虑如果是完全背包,那么有f[j]=f[j]|f[j-v[i]]那么此题是不是不可以做呢?并不是,我们可以记录下每个状态所用的物品的个数,限制一下即可,不影响结果(因为这实际上不能算是dp,因为没有最优的抉择的选举,只是刷一遍)教主果然吊……Orz StQ 阅读全文
posted @ 2014-03-26 22:42 Chellyutaha 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 题目大意:给你一个序列a[1....n],让你求一个序列b[1....n],满足 bi =a && bc,则最小的调整可以是把b变成c.所以归纳可知上面结论成立。dp[i][j] 表示考虑前i个元素,最后元素为序列中 第j小元素的最优解,a[]数组存原始数组,b[]是对a从小到大排序。dp[i][j] = MIN(dp[i-1][k]) + abs(a[i]-b[j]), (0<k<=j)虽然第一眼会看见是空间n^2 时间n^3的,但是可以发现min(d[i-1][k])可以边做边保存,于是状态转移的时间变成了O(1),且空间也可以滚动,所以最后是空间n,时间n^2 阅读全文
posted @ 2014-03-25 22:45 Chellyutaha 阅读(226) 评论(0) 推荐(0) 编辑
摘要: 1、POJ1258水水的prim……不过poj上硬是没过,wikioi上的原题却过了 1 #include 2 #include 3 #include 4 using namespace std; 5 const int maxn=100,inf=1e8; 6 int d[maxn+50],g[maxn+50][maxn+50],ans=0,n; 7 bool v[maxn+50]; 8 int main() 9 {10 scanf("%d",&n);11 for(int i=1;i 2 #include 3 #include 4 #include 5 using 阅读全文
posted @ 2014-03-17 00:01 Chellyutaha 阅读(277) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1989题意:求一个序列的最短非子序列长度l,即长度小于l的所有数的排列都是原序列的子序列(不一定要连续的),求l得最小值。分析:我们从左到右扫一遍,将所有包含1..k的分为一组,ans=组数+1如样例:(1,5,3,2,5,1,3,4)(4,2,5,1,2,3)[],故ans=3简单的说明就是可以从每组中抽出一个数作成排列,然后发现的确ans=组数+1是最小的满足的 阅读全文
posted @ 2014-03-13 22:59 Chellyutaha 阅读(212) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=1985题意:就是给你一颗树,求树的直径(即问哪两点之间的距离最长)分析:1、树形dp:只要考虑根节点和子节点的关系就可以了2、两次bfs: ①任意从一个点u出发bfs,设其能到的最远点为v ②从v出发重新bfs,设其能到达的最远点为s ③则树的直径就是v->s证明: 若能证明从任意一个点出发,bfs到的最远点一定在树的直径的端点上,那么第二次bfs就可以证明一定正确了,下面来证明第一次bfs正确性: ①若选择的点u在直径上,那么能到的最远点v一定是树的直径的端点之一 反证: 若v不是树的直径的端点,设树的直径的端点... 阅读全文
posted @ 2014-03-11 23:24 Chellyutaha 阅读(441) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2375题意:一个500*500的矩形,每个格子都有一个高度,不能从高度低的格子滑到高度高的格子(但相等高度可以滑),已知可以在2个相邻格子上加桥,使得无视他们的高度就可以互相滑,问最少加多少桥可以使得在任一个格子上都能到达任一个格子。分析:很容易看出这就是相当于在一个有向图上至少加多少边可以使得其强联通,ans=max(入度0的点数,出度为0的点数),很好理解,可以把出度为0的点挂一条边到入度为0的点上,多了的随便挂。那么现在面临的问题的就是要把25000个点先求强连通分量缩点,但是一般的算法会爆栈(其实手写栈也行……),那么鉴于这图的特殊 阅读全文
posted @ 2014-03-11 22:43 Chellyutaha 阅读(251) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2373题意:一条直线分割成N(<=25000)块田,有一群奶牛会在其固定区域吃草,每1把雨伞可以遮住向左右延伸各A到B的区域,一只奶牛吃草区域内不允许有雨伞间隙,即只能被1把雨伞覆盖,求将n块田都覆盖的最少雨伞数。分析: 易写出dp式子,dp[i]表示覆盖[0,i]需要的最少雨伞数量—— 若i不为某一奶牛的领地:dp[i]=min(dp[j])+1,i-2b<=j<=1-2a,且j不属于某一只奶牛的领地 若i为某一奶牛的领地:dp[i]=inf这里面临两个问题:1、Q:如何快速处理处牛的领地,即我们如何快速知道哪些点要.. 阅读全文
posted @ 2014-03-10 23:07 Chellyutaha 阅读(491) 评论(0) 推荐(0) 编辑
摘要: http://poj.org/problem?id=2112题意:有K个挤奶器,C头奶牛,每个挤奶器最多能给M头奶牛挤奶。每个挤奶器和奶牛之间都有一定距离。求使C头奶牛头奶牛需要走的路程的最大路程最小。分析:看到“最大的最小”这种字眼多半是二分枚举,容易想到二分枚举最小的最大路程,设其为max,那么接下来就是判定max合不合法了。故先把那些小于等于max的边加入二分图,如果这个二分图的多重匹配最多能匹配的数量恰恰等于奶牛数,那么说明所有奶牛都能挤到奶,即max合法,反之不合法。步骤:1、先floyd处理出每个奶牛和每个挤奶器之间的最短距离。2、二分枚举最小的最大路程max,并将<=max 阅读全文
posted @ 2014-03-10 22:33 Chellyutaha 阅读(143) 评论(0) 推荐(0) 编辑
上一页 1 ··· 31 32 33 34 35 36 37 38 39 ··· 41 下一页