自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

gold_bridge

交流邮箱daijinqiao(at)163.com

  • 博客(21)
  • 资源 (1)
  • 收藏
  • 关注

原创 zoj 3573 Under Attack

类型:线段树题目:给定一个区间,依次对某些区间添加权值,求从右端开始权值最大的点和从左端开始权值最大的点来源:113 - ZOJ Monthly, February 2012!!!对于长度为L的区间,有L + 1个点,[0, L]以[i, i]为叶子节点构造线段树,统计[0, L]的最大值,然后分别从右和左找出第一个与最大值相等的点即可!!!segmentation fault

2012-02-28 11:40:17 302

原创 hdoj 3791 二叉搜索树

类型:二叉搜索树来源:浙大计算机研究生复试上机考试-2010年题目:给定一个序列,构造一个二叉搜索树,然后对给定的其他序列和第一个序列相比,判断两个序列是否能组成同一颗二叉搜索树按照第一个序列先构造一棵二叉搜索树,然后对其他序列,同样构造一棵二叉搜索树,如果两棵树相同,则其先序和后序序列相同,可以根据两棵树的先序和后序序列判断结果// hdoj 3791 二叉搜索树//

2012-02-27 22:05:57 277

原创 hdoj 3729 I'm Telling the Truth

来源:2010 Asia Tianjin Regional Contest类型:二分图将每个学生看做一个点,每个名次看做一个点,对于每个学生,向其名次段的所有名次连边如,学生1的名次段为1~3,则有边1->1, 1->2, 1->3【左边的点和右边的点不是同一类型的点】题目要求的就是二分图的最大匹配要求输出字典序最大的一组点,倒叙找增广路即可,比如最大的字典序解为x1,x2

2012-02-27 16:54:42 222

原创 hdoj 4160 Dolls

类型:二分图如果将每个doll看做一个节点,对于xi 最小路径覆盖和二分图的最大匹配的关系是:最小路径覆盖 = |P|-最大匹配数所以可转化为求二分图的最大匹配问题使用匈牙利算法求解,不断寻找增光路,获得更大的匹配// hdoj 4160 Dolls#include #include #include using namespace std;int n;i

2012-02-26 23:07:12 327

转载 [BetterExplained]书写是为了更好的思考

我经常在走路和睡前总结所学过的内容,思考遗留的问题,一段时间的阅读和思考之后,一个总体的知识框架就会逐渐浮现在脑海中。然后我会将它书写下来,然而,我往往非常惊讶地发现,当我书写的时候,新的内容仍然源源不断的冒出来,就像我的键盘自己也会思考一样。大半年前的时候,我曾在一篇文章《跟波利亚学解题》中写到将问题求解的思维过程记录下来的好处,现在再次回忆起来,当时列出的几点其实不仅对于问题求解是大有好处

2012-02-26 00:26:27 180

原创 九度OJ 1402 特殊的数

题目:现在有n个数,其中有一些出现了一次,一些出现了两次,一些出现了很多次。现在要求你找出那些只出现一次的数,并按升序输出这题n的范围是:1所以开普通数组无疑是会超空间的STL中的bitset可以解决此题,声明两个1000000位的bitset变量:bitset b0, b1;对于读入的数据做如下处理,当该数第一次出现时,将b0该位置1,当该数出现多余一次时,用b1标记相应位则

2012-02-26 00:22:17 520

原创 斯特林数 [Stirling Numbers]

斯特林数 [Stirling Numbers]第二类斯特林数:f(n,k)表示划分n个数为k个非空子集的划分方式的个数例如:n = 4、k = 2 有{1,2,3}U{4}、{1,2,4}U{3}、{1,3,4}U{2}、{2,3,4}U{1}{1,2}U{3,4}、{1,3}U{2,4}、{1,4}U{2,3}因此,f(4,2) = 7对于k = 0,易知f(n, 0)

2012-02-24 14:35:15 1542

原创 hdoj 1018 Big Number

题目:求整数n!的位数   1 类型:数论有这样一个定理:f(n) = log10(n) + 1 f(n)为整数n的位数证明:设n的位数为m,则有10^(m - 1) 得:log10(n) 对log10(n)向下取整,得m = (int)log10(n) + 1,得证所以有:f(n!) = f(1 * 2 * 3 * ... * n) + 1 = f(1)  + f

2012-02-24 12:36:14 221

原创 poj 1730 Perfect Pth Powers

题目:对于整数x,求满足p^q = x条件的q的最大值数论题对整数x分解得:x = a1^b1 * a2^b2 *...*an^bn 其中a1、a2、、、an为素数由x = p^q,则x的素因子和p的素因子相同则有:a1^b1 * a2^b2 *...*an^bn = p^q易得,q的最大值即各个素因子个数的最大公约数本题有负整数,对于负整数如果最大公约数为偶数

2012-02-23 13:41:11 212

原创 poj 1781-In Danger

证明见这里#include#includeusing namespace std;int main(){ int n,x,i; char ch; while(cin>>n>>ch>>x,n||x) { n=n*(int)pow(10.0,x); for(i=1;;i<<=1) if(i<=n&&n<i*2) break; cout<

2012-02-21 19:02:51 286

原创 约瑟夫问题

约瑟夫问题问题描述:有1到n共n个人围成一个环,从1开始每数2个退一个,求最后剩下的那个人的编号例如:1、2、3、4、5 退出的顺序为2、4、1、5、3,即最后剩下3假如初始我们有2n个人,在第一轮完成之后,我们剩下1、3、5、7...2n-3、2n-1接下来要退出的就是3,这个过程和初始有n个人非常像,不同的是这个过程每个人的编号变成了2n-1假设f(n)表示初始n个人时最后

2012-02-21 18:57:02 277

原创 usaco Betsy's Tour

搜索好题!!!思路:回溯本题难想的主要是如何剪枝,以提高搜索效率剪枝就是搜索进行时,对不满足条件的结果"剪掉",停止往下搜索做不必要的耗时对于一条合法的路径,除出发点和目标点外,每个中间点都必然有"一进一出"的过程当搜索到某节点时,考虑与其相邻的节点,如果(1)四周的节点K,如果只有一个与K相邻的未经过的点,则点K为必经点(2)当当前点周围有两个或以上的符合条件的必经点

2012-02-20 00:02:51 553

原创 POJ 1734-Sightseeing trip

题目是让我们求一个无向图的最小环[周长最小],并将路径按照顺序打印出来求无向图的最小环可以用floyd算法来求打印路径可以有两种方法(1)用pre[i][j] 数组表示 从i到j的路径中 最后松弛的节点,该节点一定在从i到j的路径中,然后递归求解(2)通过枚举节点,如果满足dist[i][k] + dist[k][j] == dist[i][j],则说明k在从i到j的路径中,然后递

2012-02-18 23:44:37 219

原创 usaco Fence Loops

1.floyd求最小环。设环中有最大编号的点为k,其邻接点为i,j,则以k为环最大编号点的环的最小长度为answer = g[k][i] + g[k][j] + i到j的最短路[路径中的节点编号小于k]2.构造图(难点)。输入边的信息。len[i] 记录第i条边的长度边表 adj[n][2][n]记录第i条边第0、1端第j条边的编号edge[i][2] 记录第i条边两端邻接

2012-02-17 21:15:50 414

原创 floyd算法求最小环

(1)floyd算法求最小环(无向图)设一个环中的最大结点编号为k,与它相连的两个点为i, j,则这个环的最短长度为g[i][k] + g[k][j] + dist[i][j](最短距离)根据floyd算法原理,在最外层做了k - 1次后,dist[i][j]代表了i到j的路径中,所有结点的编号都小于k的最短路径代码:    FORE(k, 1, N) {

2012-02-17 21:08:06 598

原创 usaco Beef McNuggets

1.没有得不到的数,最小的盒子为12.得不到的数无穷大,所有数的最大公约数大于1,因为得到的数只能为该公约数的倍数3.如果存在的话,结果不会超过最大的两个数的最小公倍数   证明见:点击打开链接4.多重背包/* ID: daijinq1 PROB:nuggets LANG: C++ */#include #include #include #include

2012-02-16 09:34:41 308

原创 对两个正整数a1,a2,则不能由这两个数组和成的数最大不超过a1*a2

对两个正整数a1,a2,则不能由这两个数组和成的数[如果存在的话]最大不超过a1 * a2证明:证明不能由这两个数组和成的数最大不超过a1 * a2,可以证明超过a1 * a2的整数都可以由a1,a2组和而成即存在非负整数k1, k2使 k1 * a1 + k2 * a2 = c (c >= a1 * a2)即不定方程ax + by = c (a, b > 0,c >= ab)存在

2012-02-16 08:31:10 340

原创 usaco Raucous Rockers

状态dp(i, j)表示前j首歌用前i个光盘最多放多少首考虑第i个光盘,可以放0,1,2...j首歌,共j + 1种情况因此有:dp(i, j) = max(dp(i - 1, k), val(k + 1, j)) 0 可以先做处理求出val(i, j)表示从序列i到j放入一张光盘的最大数量,即背包for(i,1,n)for(j,1,n){    for(k,i,j

2012-02-15 12:20:33 237

原创 usaco American Heritage

正常的想法是先通过先序和中序串构造一棵二叉树,然后后序遍历即可对于先序中的结点x,先通过中序串找到其在中序中的位置i,如果该节点有左子树则vis[i - 1] = true,如果该节点的有右子树则vis[i + 1] = true!!!传递的参数要用引用类型/* ID: daijinq1 PROB:heritage LANG: C++ */#include #include

2012-02-14 17:50:42 226

原创 usaco training-A Game

博弈问题双方都采取各自最优策略,可将其视为同一种方式令状态F(i, j) 为当前游戏者面临序列[i, j]时所能得到的最大分数由于游戏者在当前状态有两种选择方式,取其大值得:F(i, j) = max(num[i] + sum[i + 1][j] - f(i + 1, j), num[j] + sum[i][j - 1] - f(i, j - 1))初始palyer1先取,故结

2012-02-09 13:53:14 209

原创 TYVJ 1275-IXCEL表格

组合数学注意列号中的字母是无序的,可以想到求组合数C(26,1) C(26,2) ... C(26,26)! ! ! 行列有数据0的情况,R ,n1 ,R, n2 和 C, n1, C, n2 为非合法数据,需要判断// TYVJ 1725-IXCEL表格#include #include using namespace std;int sum[30], zuhe[30]

2012-02-07 19:25:58 257

吉林大学ACM模板

吉林大学acm模板:包含所有源代码,可供学习acm的同学和使用。。。

2012-10-02

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除