曾任职于阿里巴巴,现就职于美图,专业搬砖100年~
暂时未有相关通用技术能力~
阿里云技能认证
详细说明点击打开链接 A #include #include #include #include using namespace std; const int MAXN = 2010; int n , d; int num[MAXN]; in...
点击打开链接hdu1698 思路:线段树成段更新 分析: 1 成段更新和单点更新是不同的,单点更新是要更新到叶子节点,但是对于成段更新是更新到某个区间即可,找个区间是当前需要的更新的区间的最大的子区间 2 成段更新需要维护一个“延时标记”,初始化看情况。
点击打开链接 A 思路:正反字符串各自判断一次是否有对应的两个子串 分析: 1 题目给定一个字符串str,然后给定两个不同时间段内看到的子串s1 , s2,判断是哪一种情况。
二叉树 二叉树的几个性质 1在二叉树的第i层最多有2^(i-1)个节点 2深度为k的二叉树最少有k个节点,最多2^k-1个节点 3对于任何一颗非空二叉...
1 冒泡排序 /* 作者:chenguolin 功能:测试冒泡排序的效率 日期:2013.01.10 22:01 */ /* 1 冒泡排序(BubbleSort)的基本概念是:依次比较相邻的两个数,将小数放在前面,大数放在后面。
点击打开链接poj2481 思路:线段树+单点更新 分析: 1 题目给定n头牛所在的区间,然后问每头牛都有几头牛比它强壮 2 根据题目如果牛i的区间是[Si , Ei],牛j的区间是[Sj , Ej]那么牛i要比牛j强壮的话那么就有Si = Ej && Si-Ei != Sj-Ej; 3 那么根据上面的条件,我们应该要先对n头牛的区间排序”按照S从小到大,相同S按照E从大到小排序“,然后就可以利用线段树求了。
点击打开链接poj 3067 思路:线段树 分析: 1 题目要求的是找到所有直线的交点总数,并且题目明确指出两条直线之间最多只有一个交点 2 很明显我们应该先对这些直线进行排序:按照左边的编号从小到大,左边编号相同时按照右边编号从小到大。
点击打开链接hdu2689 思路:线段树+单点更新 分析: 1 题目给定n个数要求最少的交换次数使得序列有序 2 显然两个数要交换肯定是满足i < j && num[i] > num[j]。
点击打开hdu 2795 思路: 线段树+单点更新 分析: 1 题目的意思是给定一个h*w的广告牌h为高,w为宽,现在有n个高为1宽为wi的小广告要放上去,原则是最先放最上面和最左边的位置 2 题目的h和w的最大值为10^9,但是n最大为200000。
点击打开hdu 1394 思路: 树状数组 分析: 1 题目要求的是n个数的n个序列中找到的最小逆序数对 2 首先我们都知道所谓的逆序数对就是给一个序列,如果前面的数比当前的数大,那么这两个数就是逆序数对。
点击打开链接poj3264 思路:线段树 分析: 1 要求区间的最大值和最小值的差值 2 建立一棵线段树,节点保存这个区间的最大值和最小值,然后写两个查询函数,一个返回最大值一个返回最小值,然后相减即可。
点击打开链接codeforce#154 A 思路:水题 分析:题目要求‘B’和‘G’是交替出现,所以应该要注意判断一下男生和女生的数量,然后是先B还是先G。
点击打开链接hdu 1754 思路: 线段树+单点更新 分析: 1 线段树的水题 代码: /************************************************ * By: chenguolin ...
点击打开链接hdu 1166 思路: 线段树单点更新 分析: 1 题目给定n个兵营的人数,现在有三种操作 (1)Add i j,i和j为正整数,表示第i个营地增加j个人(j不超过30) (2)Sub i j ,i和j为正整数,表示第i个...
点击打开链接poj2352 思路:树状数组 分析: 1 题目是要求出每一个点的左下(正左+正下)有几个星星,那个这个点就是第几层,最后输出0~n-1层的点的个数。
线段树 一 什么是线段树 线段树是一棵二叉树,树中的每一个结点表示了一个区间[a,b]。
点击打开链接bnuoj11552 思路:AC自动机模板题 分析: 1 先对n个模板串构造trie树并且求出失配边 2 然后在文本串上面查找,找到是单词节点就把当前的单词个数加1,最后枚举输出即可。
/* hdu 3695 TLE 题 */ #include #include #include #include #include using namespace std; #define MAXN 5100010 #define M...
点击打开链接hdu 1277 思路:AC自动机模板题 分析: 1 只要把输入处理成一个字符串,然后对关键字建立trie树和求next 2 注意题目是说按照匹配到的顺序输出,所以这个地方注意一下。
点击打开链接cf #153 A 思路:暴力 分析: 1 题目给定n个数 n
点击打开链接hdu 3065 思路:AC自动机模板 分析: 1 题目要求找出相应的字符串在源码串中出现的次数,并且告诉我们字符串只有大写字母。
点击打开链接hdu 2896 思路:AC自动机 分析: 1 题目输入n个字符串,然后输入m个源码串。对每一个源码串要求找到里面包含了几个字符串,如果有包含则按照从小到大输出字符串的编号,否则不输出。
点击打开链接hdu 2222 思路:AC自动机的模板题 分析: AC自动机的三个步骤 1 利用文本串建立字典树 2 在字典树上面构造失配指针 3 在字典树上面匹配,求出个数。
点击打开链接cf#10 A 思路:模拟 分析: 1 题目要求找到总共的电脑的消耗。题目明确指出在n个时间段之内电脑都是属于第一种状态,并且如果不是第一种状态只要移动鼠标或按键盘马上变为第一种状态。
一 给定一个字符串求该字符串的第k个子串。 1 一个长度为len的字符串,它的总的子串的个数为1+2+3...+len = len*(len+1)/2; 2 利用优先队列的方法:最开始先用char数组存入1个字符,因为刚开始肯定是1个字符,然后出队再将出队的那个字符串最后一个字符的下一个字符合并后再压入队列中,出队k-1次后第k次出队的就是第k大的。
第一题 谁能受到女神的垂怜之第一轮 光棍节过了,光棍们为了不想再过明年的光棍节,准备组队去向女神求爱。
点击打开链接cf#9 A 思路:求gcd然后化简 #include #include #include #include using namespace std; int gcd(int a ,int b){ return ...
点击打开链接 A 思路:枚举判断 分析:题目要求找到最少的划分数,那么我们只要对这n个数进行枚举判断即可。 代码: #include #include #include #include using namespace std;...
题目: 大家都知道,在天朝无论使用哪种交通工具出行都是很不安全的,但是当你必须出远门的时候也就不得不冒着生命危险和自己的人生进行一场博弈了。
点击打开链接fzu 1901 思路:kmp+next数组的应用 分析: 1 题目要求的找到所有满足S[i]=S[i+P] for i in [0..SIZE(S)-p-1]的前缀,并且长度为p。
点击打开链接hdu 4463 思路:最小生成树+kruskal 分析: 1 题目要求的找到n个商店组成n-1条边,并且要求耐克和苹果商店肯定要相连,求最短长度 2 很明显的最小生成树的模板题,由于要求耐克和苹果的商店要在一起那么就要把这两个商店编号合并到同一个集合,然后在利用kruskal计算。
点击打开链接hdu2063 思路:二分图最大匹配 分析: 1 题目要求的是给定k条边,然后求出最大的能够匹配的边数 2 很明显的二分图的最大匹配,利用DFS匈牙利算法求出最大的匹配边数 代码: #include #includ...
点击打开链接fzu 2034 思路:水题暴搞 注意:输出严格要求是01,而不是1所以输出的格式注意一下。 代码: #include #include #include #include using namespace std; #d...
什么是二分图 二分图又称作二部图,是图论中的一种特殊模型。设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集 (X,Y),并且图中的每条边(i,j) 关联的两个顶点i和j分别属于这两个不同的顶点集X和 Y , 则称图G为一个二分图。
点击打开链接FZU2039 思路:二分图水题 分析:只要建模然后套模板ok 代码: /*DFS求二分图的最大匹配*/ #include #include #include #include using namespace std; ...
点击打开链接poj 1150 思路:组合数学+排列组合 分析: 1 求排列数A(n , m)的末尾第一个非0数。 2 总结一下,求n!最后一个非0位的步骤如下: step1:首先将n!中所有2,5因子去掉;step2:然后求出剩下的一串数字相乘后末尾的那个数。
点击打开链接poj 1850 思路:组合数学+排列组合 分析: 1 题目要求的是给定一个字符串判断是否满足题目的要求,如果是输出第几个,如果不是则输出-1. 2 那么首先我们应该先判断这个字符串是否是符合题目的字符串,如果不符和直接输出-1. 3 在字符串符合的情况下,那么我们就可以知道长度小于len的字符串都是符合条件的。
点击打开链接poj 1845 思路:数学+二分 分析: 1 题目要求的是A^B的所有因子的和对9901取模 2 先看几个数学定理 1:整数的唯一分解定理(如果A本身就是素数的话,那么本身就是分解式) 任意正整数都有且只有一种方式写出其素因子的乘积表达式。
1 整数的唯一分解定理(如果A本身就是素数的话,那么本身就是分解式) 任意正整数都有且只有一种方式写出其素因子的乘积表达式。 A = (p1^k1)*(p2^k2)*(p3^k3)*.
点击打开链接poj 3122 点击打开链接hdu' 1969 思路:二分 分析: 1 题目说的是有n块圆形的饼,饼的高度都是1但是半径不一定相同。
点击打开链接poj1905 思路:二分 分析: 1 题目要求的是找到变形后的弧和原来的弦中心的距离ans 2 很明显的数学题,题目明确告诉我们变形后的增加弧长不会大于L/2,那么我们就可以确定ans的范围[0,L/2),那么我们就可以对ans进行二分,然后利用三角形的勾股定理求出半径r,求出了半径我们可以求出圆心角,然后进一步求出弧长,最后和newLen(最终变形后的长度)进行比较; 3 很明显这一题的精度要求很高。
DFS 其实就是一直顺着一个方向不断的搜索直到找到了目标为止。路径输出的时候,利用记录前面的点即可。 举例: #include #include #include #include using namespace std; #defin...
abs 原型:extern int abs(int x); 用法:#include 功 能:求整数x的绝对值 说明:计算|x|, 当x不为负时返回x,否则返回-x 举例:#include #include int main(){...
点击打开链接codeforce 2A 思路:模拟 分析: 1 题目要求的在游戏结束后最大的点的值的玩家,或者具有相同点值的情况下最早出现大于等于max的玩家。
点击打开链接poj 3258 思路:二分 分析: 1 题目意思是有一条长度为L的河流,河里有n个石头,现在有奶牛从河的起点0,通过跳跃石头到达终点n+1;现在有一个人,想测掉m个石头,然后求两块石头之间的距离的最小值中的最大值。
点击打开链接poj 3273 思路:二分 分析: 1 题目给定n天的消费金额,已经要分成的m部分。现在问我们在所有可分的情况下,最大一部分的和的最小值。
点击打开链接hdu 3068 思路:manacher求解字符串最长回文串 分析:详见点击打开链接 代码: #include #include #include #include using namespace std; #defin...
Manacher算法:O(n)求字符串的最长回文串 1:算法可以在O(n)的时间内求出以每一个字符为中心的最长回文串 2:算法把奇数回文串和偶数回文串统一起来考虑 3:算法大致过程是这样。
点击打开链接hdu 2609 思路:字符串的最小表示 分析: 1 题目要求的是给定n个字符串,找出不同的字符串的个数。由于题目说了,字符串可以进行变换,也就是如果两个字符串相同那么它们的最小表示是相同的。
点击打开链接hdu 3374 思路:求最小/最大表示+kmp匹配 分析: 1 题目要求给定一个字符串求出最小和最大表示的rank和出现的times。