自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 蓝桥杯java历届试题--抽签

抽签X星球要派出一个5人组成的观察团前往W星。其中:A国最多可以派出4人。B国最多可以派出2人。C国最多可以派出2人。....那么最终派往W星的观察团会有多少种国别的不同组合呢?下面的程序解决了这个问题。数组a[] 中既是每个国家可以派出的最多的名额。程序执行结果为:DEFFFCEFFFCDFFFCDEFFCCFFFCCEFFCCDFFCCDEFBEFFFBDFFFBDEFFBCFFFBCEFFB...

2018-03-07 20:55:33 667

原创 leetcode 41. First Missing Positive

题意:给你一个乱序的数组,让你找出第一个缺失的正整数(原数组可能包含0和负整数),思路:题目要求时间复杂度为O(n),空间复杂度为O(1),所以只能借助原数组的空间来求解,很容易想到用下标来标记有没有出现。即把出现过的整数的对应的下标的值变为负值,但原数组有负数和0干扰(当一个值为负时,不知他是原数组的初始值,还是标记后的值;0的负数依然是0)又因为,缺失的数必定小于等于数组的

2017-12-25 11:02:15 223

原创 leetcode 96. Unique Binary Search Trees (dp)

题意:是leetcode 95. Unique Binary Search TreesII的简单版,95题需要存储每棵树的结构,本题只需要计算所有树的个数。思路:因为只需计算个数,所以1~n的所有BST的总数和2~n+1的所有BST的总数是相同的,即结点个数一致的所有可能的BST数相是固定的。由上一题的思路,dp[n]就等于N个结点都作为根节点时可能的BST个数之和。java代码:

2017-12-10 11:24:27 189

原创 leetcode 95. Unique Binary Search Trees II(dp)

题意:给你n个结点,求所有不同形态的二叉搜索树(BST)。思路:枚举每个结点作为根节点时的BST,对于每个根节点,枚举所有不同形态的左子树和右子树,根据BST的定义,左子树和右子树必须也是BST,那么求不同形态子树时又可以用同样的方法,这就成了求解子问题(dp)题目。由于这题给的数据是1~n的整数,所以当i为根节点时,左子树的值有小于i(即1~i-1),同理右子树为(i+1~n);

2017-12-08 21:16:13 232

原创 leetcode 10. Regular Expression Matching(Backtracking)

题意:给你一个字符串s,s串只含字母。给你一个字符串p,不仅含有字母,还含有'.'和'*’;'*'的作用是可以使其前一个字符的数量任意变化(可以为0);'.'的作用是可以替换为任一字母;问你这两个字符串能不能完全相同思路:因为s串是固定,所以只需要讨论p串可能的变形,如果p串长度大于1,则考虑要匹配的字符的下一个字符是不是'*',不是'*'则直接匹配当前字符;否则直接跳

2017-12-01 11:04:07 238

原创 2017/11/30

The greatest glory in living lies not in never falling, but in rising every time we fall.生命中最伟大的光辉,不在于永不坠落,而是坠落后总能再度升起。

2017-11-30 10:04:16 222

原创 218. The Skyline Problem (最大堆)

题意:给你一堆建筑的左右边界和高度,让你求其映射到坐标系后,所有有效的拐点(详情看原题)思路:用线性表维护每个建筑的左右边界坐标,按横坐标升序排序后遍历,遍历时用最大堆维护某横坐标上存在的高度,pre记录未处理当前点时可选的最大高度,cur记录处理完当前点后可选的最大高度。如果pre!=cur说明存在有效拐点java代码:class Solution { public

2017-11-24 20:50:29 179

原创 240. Search a 2D Matrix II(二分查找)

题意:给你一个二位数组,对于每行,元素是递增的,对于每列,元素是递增的,让你从中查找某个值。思路:如果从左上角开始查找,那么不匹配时,下个查找位置是不确定的,因为右边和下边都大于该值,同理右下角也不能作为查找起点。所以可以从左下角开始查找,当目标值大于该值,说明目标值永远不可能存在于该列,所以下一个查找位置为列数+1;如果目标值小于该值,说明目标值永远不可能在该行,所以下一个查找位

2017-11-23 10:39:47 173

原创 215. Kth Largest Element in an Array(快排的分治思想)

题意:给你一个无序的数组,让你求第k大元素;思路:比较简单的是利用最小堆(优先队列)保存前k大的元素,最后返回堆顶即可。还有一种方法是利用快排分治的方法,判断每次确定的键值是不是所求的元素;是的话结束递归返回答案,不是的话:1.键值是第x大元素(x>k),此时所求元素在键值的右边,继续在右边区间递归。2.键值是第x大元素(xjava代码:class Soluti

2017-11-22 14:44:24 220

原创 leetcode 154. Find Minimum in Rotated Sorted Array II(二分+递归)

题意:给你一个可能存在重复元素的数组,刚开始是递增的,但是后来经过了左移或者右移。让你用二分求最小值。思路:之前的Find Minimum in Rotated Sorted Array是不含重复元素的,只需判断mid值是否大于r值即可确定下一个二分区间。如果含重复元素,但是左边界和右边界不相等时,同样可以只需判断mid值是否大于r值即可确定下一个二分区间。但是当左边界和右边界

2017-11-17 11:26:58 193

原创 leetcode 34. Search for a Range (二分查找)

题意:给你一个可能有重复元素的上升序列,让你找出目标值所在的下标范围,如果不存在则返回【-1,-1】;思路:先来一个二分查找,看能不能找到目标值,如果找不到则不存在,如果找到了,记录下标为pos;然后在区间【0,pos】二分找左边界,在区间【pos,nums.length-1】二分找右边界;但是这两个二分的写法稍有不同。对于找左边界:所找目标值要尽量往左,因为mid的求

2017-11-16 10:22:32 263

原创 leetcode 33. Search in Rotated Sorted Array (复杂二分查找)

题意:给你一个无重复元素的递增数组,这个数组后来被左移或者右移了未知步数,形成新的数组,让你找到target所在位置,如果不存在则返回-1;思路:同样可以使用二分查找,但是要考虑多种情况。情况首先分为两大类:1.中间元素大于等于左边界的值,(说明从左到中间是绝对递增的。2.中间元素小于左边界的值(说明从中间到右边是绝对递增的。然后每种情况考虑target值的可能位置即可

2017-11-15 11:22:36 171

原创 leetcode 42. Trapping Rain Water

题意:给一个 由多个矩形组成的容器,问能最多接多少雨水,思路:对于每个矩形,他能接的雨水的数量,取决于左右最高矩形,如果当前矩形的高度比左右最大高度分别都小,那么必能接到水。java代码1:///比较好理解,开两个数组,分别表示当前位置左右矩形的最大高度。class Solution { public int trap(int[] height) { i

2017-11-11 11:53:40 137

原创 2017/11/9

看完《檀香刑》逛了逛知乎,看到一个赞同90k的评论,摘下其中有感的句子:人生最重要的事情就是如何清楚地认识自己。我是谁,我的性格如何,我有什么优缺点, 我适合做什么,我喜欢或不喜欢什么样的生活方式。这也是我们目前的教育体制最大的缺失。残酷的社会压力逼迫我们通过复制所谓的成功道路来获取社会资源,而完全忽视了人的内在动能才是决定你位置的根本因素。from

2017-11-09 20:35:01 243

原创 leetcode 61. Rotate List

题意:按要求右移一个链表。思路:一开始想的是按照右移字符串的思路,倒置三次链表/////http://blog.csdn.net/zzran/article/details/8456721后来发觉,其实只要找到右移后新的表头,然后把链表重新连接一下就行。java代码:class Solution { public ListNode rotateRight(ListN

2017-11-08 15:44:00 156

原创 leetcode 23. Merge k Sorted Lists (分治法)

题意:给你k个有序的链表,让你合并成一个有序的链表。思路:直接一个一个合并的话,耗时448ms,超时了,对于这种方法,最先合并的数据可能会多次和后面的数据进行比较,这大大浪费了时间,运行时间会大于n^3。运用分治的方法,如果分成两组两组比较,合并好的数据之间就不会在进行比较,大大减少了比较的次数,运行时间最高为logn*n^2。//java是完全的面向对象编程,不能在类外定义函数,

2017-10-28 15:07:53 256

原创 leetcode 19. Remove Nth Node From End of List (Linked list)

题意:给你一个链表,让你删除倒数第n个数据。时间复杂度为O(n);思路:建立一个快指针和一个慢指针,快指针先向前n次,慢指针不动,之后一起向前,当快指针移动到末端,慢指针所处的位置就是要删除的数据的位置。注意处理删除最后一个数据和第一个数据的特殊情况。java代码:class Solution { public ListNode removeNthFromEnd(L

2017-10-28 14:15:19 259

原创 leetcode 2. Add Two Numbers (linked lists)

题意:给你两个链表,代表两个整数(头为低位,尾为高位),让你对这两个数,进行加法运算,并以相同的形式存在链表中。思路:从头部同时遍历,把两个值加起来存到新链表中,注意考虑最后剩一个进位的情况,,///现在开始使用java刷题,熟悉一下java,,不知道定义一个对象时必须要new,,和c++不一样啊=。=,,类里的ListNode next没有生成对象,,不new而直接 temp = t

2017-10-28 13:54:52 180

原创 hdu5510B - Bazinga(KMP+剪枝)

题意:给你n个串,求符合条件的i,前i-1个串不是i的子串。。求i的最大值。思路:刚开始想的是跑n遍ac自动机,对前i-1个串建trie树。但是串的长度最大为2000,爆内存了。。直接从第n个串暴力kmp的话会超时。。队友想了一种剪枝,从第1个串开始KMP,如果前面有某个串x是当前串y的子串的话,那么之后就不用匹配x了,因为匹配y串就想到于匹配了x串。。过了。。但是如果给你500个

2017-10-08 13:52:58 302

原创 hdu5521M - Meeting(最短路)

题意:有n个点,m个关系;对于每个关系,输入t,s,接着输入s个数,表示这s个数俩俩之间有边且权值都为t。两个人分别从同时1,n出发,问两人相遇所耗的最短距离,相遇只能在结点上相遇,且若两人走到距离不同则取最大的。求出所有符合条件相遇时的结点,若没有,则输出Evil John,若有多个,则按字典序最小输出所有可行结点。思路:以1为起点跑最短路,记录每个点的距离disx,然后以n为起点跑

2017-10-08 13:07:44 340

原创 codeforces 869C. The Intriguing Obsession(组合数学)

题意:有三种岛屿,数量分别为a,b,c;任意两个岛屿可以最多建一座桥(桥长度为1),问你有几种建桥方式;限制条件:同种岛屿要么无法达到,要么距离至少为3;限制条件可以理解为:1.同种岛屿之间不能有桥;2.同种岛屿不能同时连着同一个岛屿;因为条件1,所以建桥可以分三步,a与b的建桥情况,b与c的建桥情况,a与c的建桥情况///////////即每种岛屿的每个岛屿与另一种的每个岛屿

2017-10-07 20:26:33 371

原创 2017南宁网络赛M.Frequent Subsets Problem (状态压缩)

题意:给你一个全集U,元素为1~n;再给你m个模板集(为U的某一子集);和一个概率a;让你求U的所有子集中,在m个模板集中出现的概率大于等于a的子集个数;例如:全集为1234,有两个模板集,分别为{1,2},{1,2,3};概率a为1,那么符合条件的子集有,{1},{2},{1,2};如果概率a为0.5,那么符合条件的除了之前的还有{3},{1,3},{2,3};思路:因为n小于等于2

2017-09-28 15:47:50 305

原创 2017南宁网络赛J.Minimum Distance in a Star Graph(bfs求最短路)

题意:给你一个n维空间,有n!的节点,节点编号为n的全排列,每个节点num与n-1个节点相连(这n-1个节点的编号分别为num的第一位与后面n-1位交换的数,例如1234与2134,3214,4231相连)思路:bfs求最短路,由于节点的数比较大,用map离散化节点就好了。最好根据题意模拟一下相连的边。代码:#include using namespace std;typ

2017-09-28 09:50:50 157

原创 2017南宁网络赛L.The Heaviest Non-decreasing Subsequence Problem (最长非递减子序列)

题意:给你一个序列。对于每个元素,如果他的值小于0,那么他的权重为0;如果他的值大于等于10000,那么他的真实值减去10000,且他的权重为5;否则他的权重为1。求一个元素值非递减的序列,使得权重值最大。思路:根据要求重新构建一个序列,小于0则不加入,大于等于0且小于10000加入1次,大于10000加入5次。然后用nlogn的方法求最长上升子序列即可。代码:#inclu

2017-09-27 21:33:21 329

原创 2017南宁网络赛F.Overlapping Rectangles(扫描线法+线段树)

题意:给你直角坐标系上的n个矩形,求其覆盖的总面积。思路:屏幕面积并问题,离散坐标后,用线段树实现扫描法。我对扫描法的一点理解:就是从高度最低开始扫描,用线段树维护当前高度向上的有面积覆盖的总长度,然后一层一层的求面积。代码:#include using namespace std;const int maxn = 1000+7;int n,cnt,num[ma

2017-09-27 20:37:38 162

原创 2017南宁网络赛B.Train Seats Reservation(初级扫描)

题意:有100个站点,给你n个乘客流入情况,每个乘客在车上时需要一个座位,求最少需要布置多少座位。思路:因为只有100个站点,所以直接模拟上车下车的情况,上车座位加k,下车座位-k,然后从头遍历一遍站点,求出最大的座位量即可。代码:#includeusing namespace std;int num[101];int main(){ int n; w

2017-09-26 15:01:01 180

原创 codeforces864D. Make a Permutation!(贪心)

题意:给你一个长度为n的序列,元素大小为1~n。让你修改某些元素值,使得整个序列出现的元素不重复(修改值范围为1~N);求在修改操作数最少的前提下,使得修改后的序列字典序最小,思路:贪心;由题意知道修改操作最少为1~n没出现过的数的个数。要使得字典序最小,那么就要从头部开始插入,平且插入可选的最小值t(可用优先队列预处理)。当某个位置的数num出现次数大于二,那么可进行插入判断。两

2017-09-26 14:23:12 578

原创 hdu1533(KM算法逆向版)

思路:把边取负,跑最大权km算法,得到的答案取负即可。代码:#include using namespace std;const int maxn = 103;const int inf = 0x3f3f3f3f;int w[maxn][maxn],lx[maxn],ly[maxn],slack[maxn],link[maxn],visx[maxn],visy[maxn],a

2017-09-26 12:13:40 324

原创 hdu2255(KM算法模板)

题意:n个人选n个房子,每个人对每个房子分别有一个出价。一个人只能买一个房子,求最大利润。思路:带权二分匹配问题,可以用最大费用流做,但是km算法更高效。代码:#include using namespace std;const int maxn = 303;const int inf = 0x3f3f3f3f;int w[maxn][maxn],lx[maxn],l

2017-09-25 21:22:05 238

原创 hdu2063(最大权匹配匈牙利算法模板)

题意:有m个女生和n个男生,k个可以建立关系。一个女生只能和一个男生建立关系,求最大的关系数。思路:二分图最大匹配,匈牙利算法枚举男生来找增广路,如果能找到,匹配数加一。代码:#include using namespace std;const int maxn = 505;vector g[maxn];int link[maxn],vis[maxn];int k,

2017-09-24 20:48:08 217

原创 hdu1533(最小费用最大流spfa模板)

题意:n个人,进n个房子,每走一格花费1元,每个房子只能进一人,求所有人进房子的最小花费。思路:建立网络图,设置大源点和大汇点。跑mcmf;代码:#include using namespace std;typedef long long ll;const int maxn = 400;const int maxm = 200000;const int inf =

2017-09-24 14:38:03 508 1

原创 hdu6214Smallest Minimum Cut(最小割的最小割边数,dinic模板)

题意:给你一个有向图,求最小割的最小割边数。思路:上网搜到两种方法,其中一种是错的,因为最小割的割边一定为满流,但满流的边不一定是最小割的割边。还有,用ford-fulkerson算法会超时,,所以套了个dicnic的模板代码:#include #include #include #include using namespace std; const int Ni

2017-09-23 11:43:28 248

原创 hdu3549(最大流ford-fulkerson模板)

题意:给你一个有向图,源点为1,汇点为n,求最大流。思路:ford-fulkerson模板代码:#include using namespace std;const int maxn = 20;const int inf = 0x3f3f3f3f;class edge{public: int to,cap,rev; edge(int t,int

2017-09-22 20:16:22 218

原创 2017乌鲁木齐网络赛F.Islands(强连通分量模板题)

题意:给你一个有向图,让你添加最少的边,使得这个图任意两个点互相可达。思路:求强连通分量,缩点,求出缩点后的图的出度为0的点的个数c1,入度为0的点的个数c2.根据题意,只要添加线,使得不存在出度为0和入度0的点即可所以最少需要max(c1,c2);注意特判强连通分量为1的情况。代码:#include using namespace std;const int max

2017-09-22 10:47:26 238

原创 2017.09.17有感

当断不断,必受其乱。时不我待,只争朝夕。

2017-09-17 11:47:43 171

原创 dijkstra模板

用dijkstra算法时,求最短路,不能存在负权边;求最长路时,不能存在正权边(((贪心思想;代码:struct edge{ int to,val,next;}e[maxm];int vis[maxn],head[maxn],in[maxn];ll dis[maxn];int n,m,cnt;void add(int u,int v,int val){

2017-09-13 17:21:06 182

原创 hdu6201transaction transaction transaction(最长路spfa vector模板)

思路:把点权化成边权,跑最短路,这题卡常数了,必须用vector版的邻接表跑spfa才能过。代码:#include using namespace std;typedef long long ll;const int maxm = 1e5+7;const int maxn = 1e5+7;const ll inf = 0x3f3f3f3f3f3f3f3f;struct E

2017-09-13 14:57:27 205

原创 2017乌鲁木齐网络赛 skiing(spfa/bellman最长路模板题)

题意:给你一个有向图,让你求整个图可以跑出的最长路。思路:对每个入度为0的点跑一遍最短路,每次跑都记忆化。最后遍历一遍最大值。代码:#include using namespace std;typedef long long ll;const int maxm = 1e5+7;const int maxn = 1e4+7;struct edge{ int

2017-09-12 21:28:03 221

原创 hdu6198 number number number(矩阵快速幂模板题)

题意:给你一个斐波那契数列,和一个k,能被k个斐波那契数(可重复)正好相加的数为good,否则为bad。在给定的k的前提下,让你求最小的bad数。思路:在稿纸上写个斐波那契数列,并推出前几个k的答案,发现所求值为第k*2+3项斐波那契数减1。然后用矩阵快速幂求斐波那契数即可。(((自己手写的矩阵快速幂渣爆了,copy了大腿的模板。。代码:#includeusing names

2017-09-12 17:51:25 180

原创 hdu6197array array array(最长上升子序列二分版)

题意:给你一个长度为n的数组;问你能不能在删除k个元素后,使得数组变为一个非增序列或者非减序列。思路:1.记录dp[i]为以第i个元素为结尾的最长非增(减)子序列。时间复杂度O(n*n);这题数据范围T了;代码:#include using namespace std;const int maxn = 1e5+7;int dp1[maxn],dp2[maxn],arr

2017-09-11 20:56:08 202

空空如也

空空如也

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

TA关注的人

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