数据结构
文章平均质量分 66
wuhulala
这个作者很懒,什么都没留下…
展开
-
hdu(4911)树状数组求逆序队
就是每一次都把这个数所在的节点赋予1,那么如果此时他前面存在了1,那么说明前面的比他先出现,然而他又比前面的大,那么就说明了这是逆序对,然后就把他加上前面的1数就好了这道题必须要用#include #include #include using namespace std;#define maxx 500050int bit[maxx],a[maxx];int n;s原创 2014-11-26 21:47:45 · 894 阅读 · 0 评论 -
hdu 3861强连通分量+最小图匹配
这个题卡了好久,发现还有什么二分图匹配这个东西。。然后简单搞了一下二分图:二分图又称二部图,是图论中的一种特殊模型。设G=(V,E)是一个无向图,如果顶点V可以分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A, j in B), 则称图G是二分图。e.g.匹配:给定一个二分图,在G的一个子图G’中,如果G’原创 2014-12-03 22:35:16 · 1051 阅读 · 0 评论 -
hdu 2767Proving Equivalences(强连通分量压缩 )
给出一些点之间的关系,然后问最少添加多少条边可以使这张图强连通。强连通分量压缩是 先缩点,然后计算各个强连通分量的入度为0的个数,出度为0的个数求他们最大值#include #include #include #include #include using namespace std;#define N 20005stacksta;vectormp[N];int df原创 2014-12-03 14:58:06 · 1148 阅读 · 1 评论 -
强连通分量
感觉挺有趣的,就谢了已发,其实就是判断这个有向图是否两两连通。。。。。解释就是这个博客上的tarjan算法我实现后代码如下。。。#include #include #include #include #include using namespace std;#define N 10005stacksta;vectormp[N];int dfn[N];int lo原创 2014-12-03 13:05:42 · 940 阅读 · 0 评论 -
字典树 插入 排序 分配id
字典树分配id最常见,其他一半很少用,也可能渣做的题比较少贴代码,代码有解释:#include #include #include #include using namespace std;int cnt;struct node{ int id; int prefix;//记录前缀个数 node *next[26];//指向字典树下一层,如果全是小写原创 2014-12-01 16:56:58 · 1085 阅读 · 0 评论 -
hdu The more, The Better
把0作为根,然后dp注意一点 就是以前是选取m个点 现在相当于选取了m+1个点#include #include #include #include using namespace std;int dp[222][222];vectormp[222];int val[222];int vis[222];int n,m;void dfs(int u){原创 2015-05-27 14:16:44 · 791 阅读 · 0 评论 -
codeforces 429D Tricky Function
这道就是相当于i表示x轴,sum[i]表示y轴,sum[i]表示前i个数的和 那么计算最小两点之间的距离 所谓的就是看了题解恍然大悟的题,就是算的时候先算的j->i的距离, #include #include #include #include using namespace std;typedef long long ll;原创 2015-01-04 22:19:29 · 1195 阅读 · 1 评论 -
codeforces 113 B Petr# (一道用了函数就会的题)
strncmpstrncmp函数是指定比较size个字符。也就是说,如果字符串s1与s2的前size个字符相同,函数返回值为0。此函数功能即比较字符串str1和str2的前maxlen个字符。如果前maxlen字节完全相等,返回值就=0;在前maxlen字节比较过程中,如果出现str1[n]与str2[n]不等,则依次比较str1和str2的前n位,设i(i<n)为两字符串首次的不同位,则返回(str1[i]-str2[i])。原创 2015-01-04 22:09:59 · 1039 阅读 · 0 评论 -
两道水kmp-求next数组
kmp的讲解:http://blog.csdn.net/u013076044/article/details/41833325 next数组的详细讲解:http://blog.csdn.net/yearn520/article/details/6729426 这两道题就是套一下模板: poj1961&poj 2406 /×po原创 2014-12-28 13:23:10 · 1125 阅读 · 0 评论 -
KMP入门(最详细最好用)
从头到尾彻底理解KMP作者:July时间:最初写于2011年12月,2014年7月21日晚10点 全部删除重写成此文,随后的半个多月不断反复改进。1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱。所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不够,故才迟迟没有修转载 2014-12-09 23:31:51 · 3853 阅读 · 2 评论 -
hdu 5023 (线段树 )
这道题当时没有做出来,状态不会保存。原来可已用二进制保存状态,做的题太少,暴漏的问题太多了;这么简单的东西,,,,,也不会保存 这道题就是每一次维护区间的和,也就是把它的30种颜色用二进制保存下来。也就1 #include #include #include using nam原创 2014-12-08 20:39:27 · 1240 阅读 · 0 评论 -
poj 2886 Who Gets the Most Candies?
单点更新,还有凡素数表,所谓反素数,对于任何正整数x,起约数的个数记做g(x).例如g(1)=1,g(6)=4.定义:如果某个正整数x满足:对于任意i(0现在给一个N,求出不超过N的最大的反素数.比如:输入1000 输出 840思维过程:求[1..N]中最大的反素数-->求约数最多的数如果求约数的个数 756=2^2*3^3*7^1原创 2014-12-17 23:08:42 · 849 阅读 · 0 评论 -
平衡二叉树转换
平衡二叉树(Balanced binary tree)是由阿德尔森-维尔斯和兰迪斯(Adelson-Velskii and Landis)于1962年首先提出的,所以又称为AVL树。定义:平衡二叉树或为空树,或为如下性质的二叉排序树: (1)左右子树深度之差的绝对值不超过1; (2)左右子树仍然为平衡二叉树. 平衡因子BF=左子树深度-右子树深度.平衡二叉树每个结转载 2014-12-17 12:32:52 · 2906 阅读 · 0 评论 -
【完全版】线段树
【完全版】线段树很早前写的那篇线段树专辑至今一直是本博客阅读点击量最大的一片文章,当时觉得挺自豪的,还去pku打广告,但是现在我自己都不太好意思去看那篇文章了,觉得当时的代码风格实在是太丑了,很多线段树的初学者可能就是看着这篇文章来练习的,如果不小心被我培养出了这么糟糕的风格,实在是过意不去,正好过几天又要给集训队讲解线段树,所以决定把这些题目重新写一遍,顺便把近年我接触到的一些新题更新上去~转载 2014-08-30 13:50:04 · 691 阅读 · 0 评论 -
UVALive 6508 Permutation Graphs
补这一道题,当时题意没有看懂,后来看懂了题意 给你n个点,然后又两个序列,然后把这两个序列中相等数连接起来,每两条连线中间看有几个点,求所有连线中间的点的个数和。 序列{2 , 5 , 4 , 1 ,3}和{1 ,5,3 ,2 ,4}的连接图如下 比如说1-1和4-4中间的点是5,3,2 显而易见这是求逆序对的个数#include <cstdio>#include <cstring>#i原创 2015-07-20 14:04:18 · 721 阅读 · 0 评论