自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(96)
  • 收藏
  • 关注

原创 【LeetCode】403. 青蛙过河(简单DP)

一只青蛙想要过河。 假定河流被等分为 x 个单元格,并且在每一个单元格内都有可能放有一石子(也有可能没有)。 青蛙可以跳上石头,但是不可以跳入水中。给定石子的位置列表(用单元格序号升序表示), 请判定青蛙能否成功过河(即能否在最后一步跳至最后一个石子上)。 开始时, 青蛙默认已站在第一个石子上,并可以假定它第一步只能跳跃一个单位(即只能从单元格1跳至单元格2)。如果青蛙上一步跳跃了 k 个单...

2019-06-13 23:03:43 1399

原创 【LeetCode】85. 最大矩形 (单调栈经典应用)

给定一个仅包含 0 和 1 的二维二进制矩阵,找出只包含 1 的最大矩形,并返回其面积。示例:输入:[[“1”,“0”,“1”,“0”,“0”],[“1”,“0”,“1”,“1”,“1”],[“1”,“1”,“1”,“1”,“1”],[“1”,“0”,“0”,“1”,“0”]]输出: 6来源:力扣(LeetCode)链接:https://leetcode-cn.com/pr...

2019-06-11 22:29:54 530

原创 【LeetCode】4. 寻找两个有序数组的中位数(特殊的二分法)

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。你可以假设 nums1 和 nums2 不会同时为空。示例 1:nums1 = [1, 3]nums2 = [2]则中位数是 2.0示例 2:nums1 = [1, 2]nums2 = [3, 4]则中位数是 (2 + 3...

2019-06-10 23:59:49 184

原创 Codeforces Round #375 (Div. 2) E - One-Way Reform (Fleury欧拉路径)

传送门:http://codeforces.com/contest/723/problem/E 好久没写博客了,越来越懒,也越来越菜,最近学了些新知识,准备重新调整好学习的状态。 Fleury其实就是相当于DFS,但是跟纯DFS不同,因为直接DFS的话,在某些情况下,可能会走进死路,这时候就要拿一个栈来记录路径,如果当前情况下不能扩展,就把当前这个节点输出,能扩展的话,就DFS进去,把途中的节点

2016-11-05 16:46:52 612 2

原创 HDU 5769 Substring(后缀数组)

传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=5769 思路:不考虑X字符,先考虑怎么求本质不同的串有几个,那么就是枚举一遍height数组,去掉前缀相同的就可以了。       我们考虑X字符的话,就要保证所有求得的串都要包含这个字符。那么我们事先求一个数组,pos[i]表示当前字符(包括自身)的右边的第一个X字符的位置。然后还是枚举h

2016-08-25 20:35:57 335

原创 HDU 2328 Corporate Identity(后缀数组-求多个串的最长共同子串)

传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=2328 思路:把所有字符串拼接起来,中间用’#’隔开,然后把这个问题转化为判定性的问题,判定是否存在一个长度为x的子串是共同子串。求出所有子串中的最少长度。然后从1~minlen中二分判定,按照当前的判定长度对height进行分组,如果碰到存在就返回在字符串中的下标,否则就继续二分,不存在就输

2016-08-22 18:00:46 705

原创 HDU 3518 Boring counting(后缀数组)

传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=3518 问你有几种子串出现了2次以上。水题。 只要用后缀数组求出height,然后枚举长度,把height按照长度分组,如果一组里的最小的sa和最大的sa,不重叠,就可以把ans++。#include <cstdio>#include <cstring>#include <algorit

2016-08-22 15:36:27 342

原创 HDU 2459 Maximum repetition substring(后缀数组+RMQ-重复次数最多的子串)

传送门:http://acm.split.hdu.edu.cn/showproblem.php?pid=2459 思路:枚举子串的长度。这个思路很精髓,就是长度重复子串肯定会包含str[0],str[l],str[l * 2],str[l * 3]……中的相邻两个,然后我们求出相邻两个的最长公共前缀,然后算一下一共重复了几次,再把字符串往前推,是否能找到重复的起始位置,然后再一边用rank数组更

2016-08-22 14:58:43 365

原创 POJ 2406 Power Strings (后缀数组入门--最大重复次数)

传送门:http://poj.org/problem?id=2406 题意就是,这个字符串是由x个字符串重复得到的,问你x最大是多少。就是求最小的循环节。 用KMP也可以做。作为后缀数组的练习也可以,使用了DC3算法,当做是模板好了。思路:假设长度为len,一个循环节为n,那么只要整个字符串和后面(len-n)长度的字符串的最长公共前缀是len-n就可以了。suffix(sa[i])和suffi

2016-08-20 20:10:02 431

原创 HDU 5306 Gorgeous Sequence(线段树)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5306 三种操作: 0 x y t: 使这个区间的值变成min(t,a[i])。 1 x y: 区间最大值 2 x y: 区间和1和2都是常见操作,就是这个0操作很难搞定。参考了吉如一论文。感觉非常的强。区间的max可以看做是区间标记,我们可以维护3个值,区间最大值,区间次大值,区间最大值的个数。然

2016-08-15 16:49:43 838

原创 HDU 1403 Longest Common Substring(后缀数组入门)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1403拖了这么久的后缀数组,终于准备学一学了。 做的第一题(套的第一个板子),虽然还是没看不懂是怎么实现的,但是还是可以套一套的。suffix(i)表示[0,len)的字符串的一个后缀,下标为[i,len)。后缀数组里,要求的是三个数组,sa[],rank[],height[]。 sa[i]表示的排名为

2016-08-14 10:28:33 581

原创 HDU 5828 多校第八场 1008 Rikka with Sequence(线段树--数据加强版)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5828题意:三种操作,一种是区间增加,一种是区间开方,一种是区间求和。原思路(数据已加强,这个方法已经过不了):很快能想到,如果一个100000的数字,最多开方个四五次以后,就变成1了,而且sqrt(1)=1,那么我们就可以在更新的时候想到一个很方便的剪枝,就是,如果这个区间的最大值是1,也就是这个区间全部

2016-08-11 17:26:47 1681 6

原创 HDU 5818 多校第七场 1010 Joint Stacks (线段树)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5818 题解说这题有O(n)的做法,并没有想到,只想到线段树的。 直接把两个栈同时在一颗线段树里操作,标记一下每个区间A有几个,B有几个,然后merge的时候区间更新一下,相互翻转一下个数。每次查询的时候,实际上就是查询最右边的A或者最右边的B,pop掉的空位就留着不要了。

2016-08-09 17:17:04 375

转载 HDU 5787 K-wolf Number (数位DP)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5787题意:求区间[L,R]内,任意相邻k位(如果位数不足k,就是全部的数位)没有两两相同的数位的数的个数。思路:数位DP,因为K<=5,我们最多需要保存下来当前位的前4位就足够了。 因为dp[pos][p1][p2][p3][p4]表示,现在枚举取第pos位,pos位之前的四位分别为p1,p2,p3,

2016-08-06 16:37:11 373

原创 HDU 5776 sum

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5776 题意:求是否有一段区间的连续和%m==0。 我们可以看到,n的范围是100000,m是5000。那么,n个数字就会产生n个前缀和,如果n>=m,那么n个前缀和就会产生在[0, m)的区间内。如果每个前缀和都不相等,那么肯定会有%m==0的情况,也就是YES。而且,当n>m的时候,必定会产生两个前

2016-08-02 09:43:46 292

原创 HDU 5754 Life Winner Bo(推导必胜-必败态)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5754 题目就是就四种棋,然后走的时候从(1,1)走到(n,m),每次只能走右下方,问你谁能赢。 这题其实只要对每一种棋子分类讨论,推导每一种棋子的情况就可以了。 1——King: 因为只能走相邻的三格,那么我们从终点往前递推步数,很快可以看出来规律。就是n和m都是奇数的时候是G,其他情况为B 2

2016-07-31 19:44:17 421

原创 HDU 5727 Necklace(二分匹配)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5727 题意:n个阳点和n个阴点,要拼成一个项链,而且阳和阴必须相邻,每个阳的两边都是阴, 每个阴的两边都是阳。然后给你m条边,每条边包括一个编号为a的阳点,和编号为b的阴点,表示这两个如果相邻的话,这个阳点就会变得忧郁。问你最少几个阳点会变忧郁。 思路:最少几个会变的忧郁,那么就是n-最大几个正常的阳

2016-07-22 15:13:17 352

原创 HDU 5723 Abandoned country (最小生成树+dfs)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5723 题意:给你n个点和m条边,保证每条边权值不等,求最小生成树的权值。然后随机选两个点,求这两个点的距离的最小期望。 思路:第一问很容易,而且我们可以知道,因为权值都不等,所以最小生成树一定唯一。那么期望也就是:所有两个点的距离*选择两个点的概率。 概率就是1 / (n * (n - 1) / 2

2016-07-22 15:07:43 261

原创 HDU 5536 Chip Factory (字典树——序列中查找最大异或和)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5536 题意:在一组序列中找到三个数,使两个数的和异或第三个数的值最大。 思路:我们可以知道,字典树有一个经典应用,就是在一组序列中找到一对异或和最大的两个数。只要枚举一个数,然后贪心的在字典树中找每一位不同的数字就可以了。所以我们可以建一棵字典树,先(n^2)把除了第一个数以外的两两数字的和,插入到字

2016-07-18 16:51:31 755 1

原创 HDU 5044 Tree (树链剖分+数组lazy-tag)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5044 这题题意很容易,我瞬间就以为这题是个水题,只要码码码就能过了,然后写了个树剖+线段树的,超时了。感觉很不解,后来看了别人的题解,才发现,这题可以由更优越的解法。 主要是因为这题的最后是要输出每一个点的点权和每一条边的边权,而且只有增加操作,没有覆盖操作。所以就可以有一个思路,用数组来保存每次操作

2016-07-16 18:48:49 347

原创 FZU 2082 过路费 (树链剖分)

传送门:http://acm.fzu.edu.cn/problem.php?pid=2082 这题有个注意点,就是他更改的时候是更改第a条边,那我们怎么才能知道第a条边是更改线段树上的哪个点呢?因为我们在表示边的时候是用一个点表示他的父亲边,所以第a条边是用这条边上深度大的那个点来表示的,problem solved。 一次AC!#include <cstdio>#include <cstri

2016-07-16 14:34:12 364

原创 HDU 4807 Lunch Time(费用流)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4807 题意:告诉你一些单向边,问你k个人最快能多久从0点到达n-1点。 思路:这题可以看出是费用流,但是费用流只能求出最大流和最小费用,而且是包括所有增广路的。但是实际上,每条路每秒钟都可以进入一批人,所以在一些情况下,可以考虑等待一段时间走短的路,而不是每条路都直接进入。所以我们在费用流中每次增广求

2016-07-16 11:33:53 369

原创 HDU 1107 武林(模拟)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1107 这题算是挺麻烦的一个模拟了。。wa了一次,发现有句话忘记写了,加上去就过了。纪念一下,写了差不多两个小时。#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <cstdlib>#i

2016-07-11 18:01:48 404

原创 Codeforces 225D Snake(状压BFS)

传送门:http://codeforces.com/problemset/problem/225/D 题意:有一条蛇,头是1,然后按照234……的顺序趴在一个图上,问你蛇最少几步能吃到@。 思路:这题还是挺简单的,因为只要想到如何去保存蛇的状态就能做了。因为这题其实就是一个BFS,但是在BFS的过程中,你要知道这个蛇的当前状态是怎么样的。如果直接从1开始BFS,不管其余部位的话,在走了几步之后,

2016-07-11 10:53:39 925 1

原创 POJ3463 Sightseeing(dijkstra求最短路+次短路)

传送门:http://poj.org/problem?id=3463 题意:给你n个点和m条单向边,和起点s,终点t。问你从s到t的最短路和比最短路大1的路一共有几条。 思路:改造一下dijkstra,一开始只记录了一个点是否访问过,但是wa了,因为一个点可以通过一个点的最短距离和次短距离访问过来,所以要记录每个点的最短路和次短路是否都访问过了,需要一个vis[maxn][2]。因此,朴素dij

2016-07-09 16:54:51 723

原创 HDU3016 Man Down(线段树)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3016 题意:有n块板子,一个人从最高的板子开始往下跳,每次只能从一个板子的左或者右端点往下跳,同一个高度只会有一块板子。问你到最下面,能获得的最大分数是多少。如果中间分数<0了,游戏直接结束,输出-1。 思路:这题想到线段树好像就可以直接模拟了。因为跳下来只能从左或者右,所以一块板子的价值就是l和r处

2016-07-09 14:19:18 650

原创 HDU 4856 Tunnels(BFS+状压DP)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4856 题意:先输入n,m,然后是一个n*n的图,然后输入m条隧道,每条隧道包括起点的x,y,终点的x,y。问你如何用最短的时间走遍所有隧道,每条隧道只能走一次,不能走遍则输出-1。 思路:最短时间走遍隧道,而且每个只能走一遍,这个很明显是一个状压dp,就像tsp那种。但是我们要处理出每条隧道之间的距离

2016-07-09 11:09:54 432 2

原创 HDU2586 How far away ?(tarjan+并查集离线求lca)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2586 这题大概是个模板题,又学了一个新姿势。先dfs一遍,求出每个点到根节点的距离。然后将询问离线,开始求lca,在dfs的时候同时更新并查集,就能求出当前位置下的已访问过的两个点的lca,两个点#include <cstdio>#include <cstring>#include <algorit

2016-07-08 16:09:18 422

原创 HDU1054 Strategic Game(二分匹配)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1054 这题题意很裸,看到明显就是一个最小顶点覆盖,求一个二分匹配就好了。#include <cstdio>#include <cstring>#include <algorithm>#include <cmath>#include <cstdlib>#include <cctype>#inc

2016-07-08 16:04:40 259

原创 POJ2886 Who Gets the Most Candies?(反素数+线段树模拟约瑟夫环)

传送门:http://poj.org/problem?id=2886 这题真是太厉害了。。 我们要先知道反素数:对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0if(val[pos]>0){ k=(((k-1+val[pos]-1)%mod)+mod)%mod+1; //k-1表示去掉本身,val[pos]-1在后面

2016-07-04 11:22:28 254

原创 HDU4777 Rabbit Kingdom(树状数组)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=4777 题意:n个数,m个询问,每个询问是一个[L,R]区间,问你这个区间内,有几个数字与其他的数字互质。 思路:想了很久还是不会做,看了一些别人的博客,算是有点明白了。先求出2-200000里每个数字的素数因子(包括本身),然后用一个数组标记素数因子的位置,从左到右扫一遍,从右到左扫一遍,求出L[]和

2016-07-01 17:17:41 383

原创 HDU5692 Snacks(dfs序 + 线段树)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5692 两场百度之星打的十分郁闷,但是也发现了我还是有很多的知识不能灵活运用,比如这题,dfs序我是懂的,线段树也是懂的,但是就是不知道怎么来做这题。        赛后看了takio菊苣的代码,觉得代码风格非常的清晰,很多地方加了空格以后看起来确实清楚很多。准备学习一下,虽然很影响手速,但是也慢慢改一

2016-05-23 13:01:33 601

原创 HDU3727 Jewel(主席树)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3727 这题还是挺需要细心的,算是主席树一个挺好的练手题了。 题意:输入n,再输入n个操作,操作有四种 Insert X:插入x到序列末尾 query1 L R X:在当前序列中的[l,r]区间找第x小的数。 query2 X:在当前序列中,输出X是第几小的数。 query3 X:找到当前序

2016-05-20 21:46:00 525

原创 HDU2665 Kth number(主席树入门)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=2665 主席树呢,就是可持久化线段树,非常神奇。我在B站看了qsc大神的视频之后就大概懂意思了,先做个入门题,再慢慢学。 打个广告:http://www.bilibili.com/video/av4619406/ 题意是求区间内第k大的数(实际上是k小),主席树是这样做的,把n个数离散化之后建一个线段

2016-05-20 13:31:52 1853

原创 HDU3926 Hand in Hand(并查集)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3926 这题实际上是简化了很多的。。。一开始不明白图的同构是什么,想着大概两个图长得一样应该就算同构了。思路:因为一个人只有两只手。所以一群人拉手的话,要么形成一个头尾相接的环,要么是一条链,不会有其他情况了。所以在输入的时候用并查集判断一下当前这个联通块是环还是链,再维护一下块的大小,然后把每个联通块的

2016-05-19 16:50:45 224

原创 HDU3635 Dragon Balls(并查集)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3635 题意:有T组测试数据,每组数据输入n和m,表示有n个城市和m个查询。每个城市一开始的时候有一个龙珠,龙珠的编号与城市的编号相同。查询有两种。 T a b 表示将a龙珠当前所在城市内的所有龙珠转移到b城市。 Q a 表示查询a龙珠。输出三个数字。X(a龙珠当前在的城市),Y(这个城市内的龙珠数量

2016-05-19 16:44:46 263

原创 这个人准备学的↓↓↓↓↓

RMQ后缀数组主席树AC自动机tarjan2-sat最小树形图莫队算法……

2016-05-15 17:24:56 562 1

原创 BZOJ 1003: [ZJOI2006]物流运输(spfa+dp)

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1003 这题真是一个想法题啊! 从这题中又获得一些思考。算法只是用来解决问题的工具,而不是用来套题目的解题模板,看到一个题目以后,得到一些想法,要用算法来实现想法来解决题目。而不是看到题目以后,从大脑里枚举算法来套。以前大部分时间,我都在干这种蠢事,缺少思考。 看到这题以后,还是完全没有思

2016-05-14 20:42:43 496

原创 BZOJ1001[BeiJing2006]狼抓兔子(无向图最小割)

传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1001这题的题意其实就是求一个最小割,但是由于是无向图,所以加边的时候,两边的流量都要是输入的权值,然后就是一个dinic求一下最小割。但是这题貌似有很高超的技巧来搞,可以把平面图上的最小割转成对偶图上的最短路来做,这样可以起到很明显的优化效果。现在还不是很明白,如果以后明白了,会再来更新。

2016-05-08 12:41:22 927

原创 HDU5274 Dylans loves tree(树链剖分+异或)

传送门:http://acm.hdu.edu.cn/showproblem.php?pid=5274 题意很简单,输入以后,查询的时候 0 x y,是把x点改成y。 1 x y,是查询[x,y]中,数字出现的次数是否都是偶数,出现奇数的数字<=1。 都是偶数的话,输出-1,有奇数的话,输出奇数的权值。 思路:这题也是一个裸题,但是这题的线段树维护的比较巧妙,因为一个数异或自己偶数次就是0,

2016-05-07 19:36:17 661

空空如也

空空如也

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

TA关注的人

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