自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

QZQ

Never lose my passion

  • 博客(25)
  • 收藏
  • 关注

原创 hdu 5568 高精度(重要) DP

这个题似乎有问题,题中明明要求每个数组不同,想了很久,不知道怎么判重复,最后却看别人都是不判重 直接过的dp[i][j] 表示第i个数作为第j个数 的情况dp[i][f] = sum(dp[j][f-1])    num[i] > num[j]另外,如果大数使用十进制计算  要么 wrong answe  要么 爆内存  ,所以尽量开大 ,这里用的10^8#incl

2015-11-30 21:56:52 597

原创 九余数定理及证明 hdu 1163

九余数定理:一个数对九取余后的结果称为九余数。一个数的各位数字之和想加后得到的证明借鉴了网络上的证明,加以修改:首先证明前有两个基本需要知道的规律 1.和的模 等于 模的和再取模 如:(15+7)%3 = (15%3+7%3)%3 逆运算亦可2.积的模 等于 模的积再取模 如:(15*7)%3 = (15%3 * 7%3) %3 逆运算亦可

2015-11-30 16:16:21 2532

原创 hdu 1151 最小覆盖路径算法证明

又是二分图。若还不知道匈牙利算法,看我前面的文章先把每个点拆成两个,一个表示出,一个表示入,根据数据输入,对应的出点和对应入点之间构造了一条边。这样就有了一个二分图。有向图的最小路径覆盖 = 总的点数(为拆分前的) - 最大匹配数。证明如下:先假设所有点我们都派出一个伞兵。然后每增加一条匹配,就代表我们从一个点出走向一个点。并且根据最大匹配的定义,我们可以直接看作是将这两个点合并到

2015-11-29 10:09:09 536

原创 hdu 1130 卡特兰数列

卡特兰数列公式证明:问题大意是用S表示入栈,X表示出栈,那么合法的序列有多少个(S的个数为n)显然有c(2n, n)个含S,X各n个的序列,剩下的是计算不允许的序列数(它包含正确个数的S和X,但是违背其它条件)。在任何不允许的序列中,定出使得X的个数超过S的个数的第一个X的位置。然后在导致并包括这个X的部分序列中,以S代替所有的X并以X代表所有的S。结果是一个有(n+1)个S和(n-1

2015-11-28 17:25:41 978

原创 hdu 1142 记忆化搜索 dijkstra

遇到了不少问题下面是AC的代码,这几个问题有人也遇到的或者知道为什么的留言告诉下#include #include #include #include #include #include #define inf 99999999using namespace std;int n,m,map[1505][1505],dp[1505],dis[1505];bool vis[1

2015-11-28 16:35:28 407

原创 hdu 1558 并查集+计算几何

易错用 warning标记#include #include #include #include #include #include using namespace std;struct node{ double x1,y1,x2,y2;}p[1005];int set[1005],num[1005];bool xiangjiao(int a,int b){ dou

2015-11-27 17:10:08 420

原创 hdu 1392 凸包问题

经典算法,百度上都能找到。就说一个特殊情况,只有两个点的时候,要进行特判,直接输出两点距离,否则会输出两倍。当然我认为就是应该输出两倍的,可是题目这样也没办法。#include#include#include#include#include#include#includeusing namespace std;int main(){// freopen("t.txt",

2015-11-26 20:37:42 528

原创 hdu 1114 完全背包 背包问题通俗讲解

经典问题,在网上看到过很好的讲解http://www.cnblogs.com/daoluanxiaozi/archive/2012/05/06/2486105.html #include#include#include#include#include#include#includeusing namespace std;int dp[10001];int main()

2015-11-25 17:40:30 723 1

原创 hdu 1074 状态压缩DP 贪心 错的原因

第一次状态压缩DP,刚开始使用贪心策略,后来找到反例。输入:53a 1 1b 2 1c 1 1你的输出:2acb正确答案:2abc贪心能够算出正确的分数,但是不一定能得到正确的字典序。 因为贪心的时候根本没有考虑字典序。但是如果遇到类似题目只要求最小扣分,那么一定要用贪心,因为这题只有15门课,如果课多枚举状态dp的话肯定不行,而贪心就快得多。因此

2015-11-24 20:54:11 937 1

原创 二分图 最小覆盖数 = 最大匹配数、最大独立集 = 总数-最小覆盖集 证明 hdu 1068

二分图有两个定理:最小覆盖数=最大匹配数、最大独立集=总数-最小覆盖集 。这里来给出证明(如果还不懂匈牙利算法,请先看之前写的一篇)匈牙利算法链接几个基本定义:最小覆盖:即在所有顶点中选择最少的顶点来覆盖所有的边。最大匹配:二分图左右两个点集中,选择有边相连的两个匹配成一对(每个点只能匹配一次),所能达到的最大匹配数。最大独立集:集合中的任何两个点都不直接相连。最小覆盖数=

2015-11-24 13:19:58 4775

原创 hdu 1078 记忆化搜索

第一次记忆化搜索,实际上就是DP 就搜索这个题目要注意的是,他说每次可以走K步,在这K步中是不能转弯的#include #include #include #include #include using namespace std;int dp[105][105],map[105][105];int dir[4][2] = {0,1,0,-1,1,0,-1,0};int n

2015-11-23 16:49:53 533

原创 hdu 1080 带权值的 最长公共子序列 动态规划

要做这个题目,首先要会最长公共子序列。推荐hdu 1159.   顺带提供一篇别人写的解题报告 http://blog.csdn.net/a_eagle/article/details/7213236然后再看这题,思路基本相同。我们将'--' 设为0  'A'设为1  'C'设为2   'G'设为3  'T'设为4.根据输入构造序列 a和b。则根据题中表格可以得到一个二维数组 :

2015-11-22 12:42:11 744

原创 hdu1247+hdu1075 字典树基础

#include //hdu1075#include#includeusing namespace std;struct tree{ int flag,num;//flag用于标记是否为单词结尾 tree *next[26];//指向26个字母};tree *root;char s[1000000][20],b[4000];void creat(char str[],int

2015-11-22 11:49:08 539

原创 hdu 1856 并查序 特殊优化

#include #includeint c[10000005],k[10000005];int find(int x){ int y = x; while(x!=c[x]) x=c[x]; c[y] = x;//如果没有这一步,就会超时。 对于很大的树,这是一个非常优秀的优化 return x;}int main(){ int n,

2015-11-20 21:31:41 400

原创 hdu 1561 树形dp 入门教学

第一次遇到树形DP,研究了很久。#include#include#include#include using namespace std;int m,n,value[205],dp[205][205];//dp[i][j]表示从根节点i出发,攻占j个城堡所能得到的最大价值。vectorlist[205];void DFS(int root,int M){ int i,j,k;

2015-11-20 17:25:49 518

原创 hdu 1102 最小生成树 prim

最小生成树的经典算法prim演示:图例说明不可选可选已选(Vnew)此为原始的加权连通图。每条边一侧的数字代表其权值。---顶点D被任意选为起始点。顶点A、B、E和F通过单条边与D相连。A是距离D最近的顶点,因此将A及对应边AD以高亮表示。

2015-11-19 18:58:05 436

原创 hdu 1053 哈夫曼树 优先队列

此题关于哈夫曼编码。哈夫曼树(霍夫曼树)又称为最优树.基本术语:1、路径和路径长度在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-1。2、结点的权及带权路径长度若将树中结点赋给一个有着某种含义的数值,则这个数值称为该结点的权。结点的带权

2015-11-17 16:26:27 1329

原创 hdu 1086 判断交点

对于两条直线上的点, M(ax1,ay1)  N (ax2,ay2)   P(bx1,by1)  Q(bx2,by2) 若两直线相交,则任意一条直线的两个端点,都在另一条直线的两侧。我们可以使用向量外积  或者  线性规划  来判断。此处使用外积。MN 与 MP 的外积  MNP = (ax1 - ax2)*(ay1 - by1) - (ay1 - ay2)*(ax1 - bx1)

2015-11-16 21:43:20 527

原创 HDU 1043 双向广搜 八数码 康托展开 逆序数

#include#include#include#includeusing namespace std;char c;int index[10] = {1,1,2,6,24,120,720,5040,40320};int dir[4][2] = {1,0,-1,0,0,1,0,-1};int vis[400000],found,state,father1[400000],fathe

2015-11-15 21:47:21 588

原创 hdu 1098 数学归纳法

此题主要工作在纸上完成,使用数学归纳法。假设任意X 都使 f(X)能被65 整除。那么,X = 1 时成立 即  18 + k*a   能被65整除。X = X + 1 亦成立 ,带入由二项式定理展开得  f(X) = 5*(c(13,0)x^13 + c(13,1)x^12....... c(13,13)x^0 ) + 13*(c(5,0)x^5.....) + kax + ka

2015-11-13 21:23:26 572

原创 HDU 1505

首先,此题在输入地图时, R 与 F 之间并不一定是一个空格因此 采用下面的代码输入,会导致wa,尽管你怎么测试都是对的。 scanf("%d%d",&n,&m); getchar(); for(i = 1; i <= n; i++) { for(j = 1; j <= m; j++) { scanf("%c%*c",&a); if(a == 'F

2015-11-10 16:51:52 449

原创 HDU 2064 二分图 匈牙利算法 零基本教学

在从来没有接触过图论的基础上学习了匈牙利算法和二分图    网上的资料大多需要知道一点图论的基本知识,为了和我一样的人能够看懂,就写一下零基础的。       先要看明白匈牙利算法,下面这篇文章,小白也能看懂。    http://blog.csdn.net/dark_scope/article/details/8880547    看完之后再看这个代码,整个代码就是按照上

2015-11-08 15:33:15 810

原创 hdu 1027 字典序

HDU 1027:http://acm.hdu.edu.cn/showproblem.php?pid=1027有简便的方法是使用    next_permutation函数, 函数用途是返回下一个字典序。 需要头文件除此之外,有必要知道如何手动的去得到下一个字典序。一列数字,第一个为num[0] 一次标号。1.从序列尾往前索引,找到第一个 num[i] ,满足num[i] 2.

2015-11-02 19:04:35 570

原创 HUD 1026 纯C代码广搜

网上找的大多是用C++,不会C++也不知道头文件的话,有些解题报告看不懂。#include int m,n,t = 0,ft[105][105],dp[105][105],q[101*101*20][2];char a[105][105];int dir[4][2]= {{0,-1},{0,1},{1,0},{-1,0}};void bfs(){ int x,y,xx,yy,p

2015-11-02 16:36:06 646

原创 hudu 1050 sort oj上的易错点 贪心算法

很容易的一道题,用的贪心算法。开始sort中的comp函数返回int,在本地运行时无论怎么测试都是对的,就是过不了OJ。int comp(ss a,ss b){ return a.s < b.s;}原来OJ上只能让comp返回bool才能过#include#include#include#include#include using namespace std;t

2015-11-01 13:30:31 798

空空如也

空空如也

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

TA关注的人

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