自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

I am growing~.

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

原创 Volatile and CAS总结

前言:今天被al小哥哥问了几个问题,回答的问题在很大程度上代表你对这个问题的深刻理解。然而 自己...真的真的 没有把一些东西真正的理解透啊。知识点不在于 看了多少遍,在于不断的 系统的去总结、分析、理解。本着对volatile的理解,提出来几个问题?1.volatile怎么实现的可见性?-->MESI协议2.cas怎么实现的可见性? -->也是用的MESI协议...

2019-03-10 21:33:16 318

原创 【JVM之五】双亲委派模型

昨天突然想到了一个点,这个双亲委派模型的意义是什么呀 ?如果说没有这个模型会变的怎么样?双亲委派模型 有几类 类加载器 :启动类加载器(Bootstrap classloader)、扩展类加载器(Extension classloader) 、 应用程序类加载器(Application classloader)还有的就是 自定义类加载器啦。 他们之间的关系如下图。 上下的关系是组合的...

2019-01-11 22:13:31 257

原创 【JVM之四】类加载机制

首先盗张图,哈哈哈哈,盗了不少师兄的图哇,感觉画的很棒!(向师兄学习!)一、类加载机制是什么?我们知道源程序编译完了之后会把生成的字节码文件保存的信息加载到虚拟机内存当中。这过程中会经过验证、准备、解析、初始化。最后会形成一种能被java虚拟机使用的类型,这就是类加载机制。当然了,我们使用完了之后也是要卸载了的,就是把它清理出去。这张图能看到class文件里面的信息从进入虚拟机到被...

2018-10-22 12:28:36 288

原创 环形子数组的最大和

显然是求最大字段和的升级版啊!题意:就是给你些数,构成一个首位接应的环,然后求出最大子数组的和!给几个实例把:示例 1:输入:[1,-2,3,-2]输出:3解释:从子数组 [3] 得到最大和 3示例 2:输入:[5,-3,5]输出:10解释:从子数组 [5,5] 得到最大和 5 + 5 = 10示例 3:输入:[3,-1,2,-1]输出:4解释:从子数组 ...

2018-10-08 22:46:25 1054

原创 【JVM之二】垃圾回收

我感觉这句话特别好:java和c++之间有堵内存动态分配和垃圾收集技术构成的高墙,墙内的人想出去,墙外的人想进来。哈哈哈,有点围城的感觉。GC触发条件:Minor GCEden区满,即触发Minor GCFull GC1. 调用System.gc(),建议执行2. 老年代空间不足3. 方法区(永久代,元空间,metaspace)空间不足4. 通过Minor GC进入老年代大于...

2018-10-07 23:44:44 251

原创 【JVM之三】String与intern()方法

哎呦,发现了一个总结的不错的blog:https://tech.meituan.com/in_depth_understanding_string_intern.htmlJDK API文档中对intern()方法的描述是:返回字符串对象的规范化表示形式。一个初始为空的字符串池,它由类 String 私有地维护。当调用 intern 方法时,如果池已经包含一个等于此 String 对象的字符串(...

2018-10-07 03:40:08 261

原创 KMP算法

下面来总结一下用来匹配字符串的KMP算法,以及怎么求next数组。当然我们可以用笨办法可以进行字符串匹配和求next数组,但是学习算法不就是追求极致的过程么?通过参考https://blog.csdn.net/sun20209527/article/details/79933237,可以通透的理解KMP是个什么过程,但细节处理和他会有些出入。举例来说,有一个字符串"BBC ABCDAB...

2018-10-05 21:48:01 169

原创 【JVM之一入门】内存区域简介

1.总结java虚拟机怎么不先来说一下jvm是什么?jvm是执行字节码文件的一个程序,对java字节码进行解释、运行,形成适应不同平台的机器码,从而是java语言能独立于各个不同的系统平台,如下的图能直观的看到我们java程序一步步成为不同的平台能执行的机器码的。2.然而在jvm里面经历的过程是什么呢?首先我们看一下jvm里面的内存区域划分:(1)程序计数器:(线程私有)对...

2018-09-29 01:28:30 357

原创 No Pain No Game(树状数组)

Problem DescriptionLife is a game,and you lose it,so you suicide.But you can not kill yourself before you solve this problem:Given you a sequence of number a1, a2, ..., an.They are also a permut

2017-10-14 01:50:24 490

原创 MooFest(树状数组+离线处理)

Problem DescriptionEvery year, Farmer John's N (1 <= N <= 20,000) cows attend "MooFest",a social gathering of cows from around the world. MooFest involves a variety of events including hayba

2017-10-13 23:30:40 587

原创 日记—10.12

想了一下最近干的事情,主要做树状数组上的题。简单的使用的知识点早已经了解掌握,但是。。。。做的这些题的时候,却不知道怎么用树状数组,只能看看题解上的思路。。前两天组队的队友跟我说,他不干了,这也让我开始重新认识为什么做ACM。又回想起来接触ACM的这些日子。我想做ACM还是那句话,需要静下来的专注。等到不做这件事情的时候,回头看看没有让自己后悔。加油吧,少年!

2017-10-12 22:29:57 241

原创 日记—9.28

这几天从新温习了一下树状数组,今天做了几道题,树状数组区间修改单点查询的问题,二维的,三维的,都是,树状数组的第二种类型的问题,但是小的地方问题还是找了许久的问题,但是这两道题感觉做起来比暑假做的还是顺多了。开学也有一个月了,随着时间的拉长,也会有一些的懒散,还记得当时选择ACM是的热情和激情,当然不要忘记初心,调整前阶段安逸的状态。

2017-09-28 21:39:04 317

原创 日记—9.24

昨天的题一个人做的,第二个题的用线段树的那个题的小坑找了好长时间就是没有找到啊。。。最后让小伙伴过来看了看代码的坑。。。今天有道题是求最长上升子序列,直接用dp做肯定会超时啊,然后想到刚学会的lis,但是他是直接求最大的最长上升子序列,在这里有个权值的问题啊。。然后就放弃这种方法了,认为必须用优化的dp做啊,这不是lis根本没有用到啊,然后刚刚专门百度,果然。。其实真的是有lis做的啊,,,只能说

2017-09-24 22:20:35 354

原创 lis算法

一个更高效的求最长子序列的算法。说白了这个算法就是维护一个数组,刚开始的时候这个数组什么都没有。举个例子:我们给出的数组是a[]={1 7 3 5 9 4 8},然后我们定义一个b数组(维护数组),遵循一个规则,如果a[i]>b数组的最后一个数的话,那么len++,b[len]=a[i];否则,我们就在现有长度的b数组里找出第一个比a[i]大的数,然后用a[i]给他替换掉。最后b数组的长度

2017-09-21 23:53:16 1153

原创 二分查找第一个比k大的数

在这里我们可以直接二分,或者更方便的我们有一个函数 lower_bound(a,a+num,val);1.直接二分的方法int binary(int val,int a[],int l,int r){ int m; int id; while(l<=r) { m=l+(r-l)/2; //避免溢出 if(a[m]>val) { id=

2017-09-21 23:43:14 4002 2

原创 日记—9.21

关于线段树的题回头看了看blog上的题,没有做题,最近看了一个lis算法,相对于kmp还是比较简单易懂的,lis用来求最长上升子序列的效率很高了 n*log(n),dp显得比较慢了,时间复杂度实在太高.kmp他的思想还是很好理解的,但是代码的实现几个点真的不太好理解啊.。。

2017-09-21 22:43:44 283

原创 日记—9.17

昨天那套题,明明sum的那道题那么的难,但是。。。。1000++个ac的。是个什么题?S(k*x)%233=0,给你x的值,让我们求k*x这个数,左右位上的数%233==0,wfk?简直了。刚刚去百度了一下简直要吐血啊,脑洞真的不够大啊。1.有一种特殊情况,那就是k=0的时候,x爱取什么取什么啊。。。k*m=0; 0%233==0看完这个式子真的无话可说。。 2.直接k=233个9的时候。。。。。

2017-09-17 21:50:09 325

原创 日记—9.14

最近基本没有做线段树的题。。。sang.....做了几天的JAVA的作业,也是接触另一个语言的基本用法,在c++的基础下,学起java来也是挺轻松的,但基本的语法应用也是多多少少有些出入,刚好,老师布置的作业让写写代码,熟习一下语法规则,也是一个很好的方法。最近也是刚开始在刷老师布置的java上的题,很简单,有没有。。。。

2017-09-14 21:54:36 253

原创 日记—9.10

这个周末两天下午做的题,很有感受,昨天的那俩题,都特别水,但是特别大的一个是伤心的事情是昨天做的一个很垃圾的错误,把结果的Yes,全部写成大写的了,一家人找了半天啊。。。找的都怀疑题意了。。今天的题也是有一道,让求一个最长上升子序列问题,用dp没有通过啊,时间复杂度确实太高,最后才知道,关于最长上升子序列还有一个优化的算法,当时超时超时的确实让人很捉急啊。。。不管怎样,和队友一起加油吧~

2017-09-10 22:40:51 457

原创 日记—9.7

练习了两道关于线段树的基本操作的题,初次实现某种功能,这里面的错误是真的不少找,更改点求点,更改区间求区间,反反复复写了好几遍,找错误也是很头疼的事情啊,有没有。。。。。前几天的小的时间段只是简单的看了看blog,看看自己做的几道题,有段时间不去看,有些东西又要生疏了有没有。。。算法在于积累,每天温习一个知识点也是一种巩固。。。

2017-09-07 23:25:51 238

原创 线段树— Billboard

Problem DescriptionAt the entrance to the university, there is a huge rectangular billboard of size h*w (h is its height and w is its width). The board is the place where all possible announcements

2017-09-07 22:50:38 285

原创 线段树—Just a Hook(区间更新,区间求和)

Problem DescriptionIn the game of DotA, Pudge’s meat hook is actually the most horrible thing for most of the heroes. The hook is made up of several consecutive metallic sticks which are of the same

2017-09-07 22:01:49 359

原创 线段树-I Hate It (点更新,求点)

Problem Description很多学校流行一种比较的习惯。老师们很喜欢询问,从某某到某某当中,分数最高的是多少。这让很多学生很反感。不管你喜不喜欢,现在需要你做的是,就是按照老师的要求,写一个程序,模拟老师的询问。当然,老师有时候需要更新某位同学的成绩。 Input本题目包含多组测试,请处理到文件结束。 在每个测试的第一行,有两个正整数 N 和 M (

2017-09-07 21:44:04 256

原创 日记——9.3

线段树,这里用到了二叉树的结构,理解起来感觉不算太难,做了一道原题,自己敲了一敲,感觉线段树又是一个很神奇的数据结构。这个周末确实因为各种迎新活动,压缩了很多学习做题的时间,新学期应该给自己做做计划,规划好一定的时间,让自己的生活有点规律,而不是像这个第一个周,课程+作业,活动,让自己过的有点乱 。

2017-09-03 23:22:39 249

原创 日记—8.31

刚开学,有了新的课程,发现大二的前几个周的课程确实有点满啊,有没有,,,确实没有假期大块的时间来做看知识点和练习了。这几天课后大体的看了看线段树的知识点和课件上的例题,但是还没有简单的实现一下代码。。。。。。今天下午满课没有做那套邀请赛的题,但是今晚上看了看几个题,写了写第一个题,第一个题让求不大于一个数n的k^k,满足这个条件的k有几个,n的范围是1e18,这个范围一看太大,硬做的话肯定出错,所

2017-08-31 21:54:17 245

原创 暑假训练总结

回过头,看看这个暑假,真是快啊,尤其在家休息半个月回校的在机房这将近一个月,时间过的格外的快。      其实在家半个月要复习一下dp专题,基本上没做。给人家打了一个周的工,然后剩下的那个周在家做了两道题,而且都是原题,在家实在太懒散了,静不下心去看看书,然而,在学校的这几天的日子过的很充实。      回过头看看这个暑假啊,上来做的搜索,接着做的图论,二分,单调队列,还有这两天做

2017-08-25 22:41:53 456

原创 训练日记8.23

今天做了一个二维树状数组的题,也是练习的实现一下,二维树状数组数组和一维树状数组数组基本没有差的,先是写了个二维树状数组实现了一下,然后做了做坐这个题,中间真是出了不少的问题,这两天做的题比较少,但是对树状数组的渐渐有了一些新的认识,这两天趁热也要抓紧的做练习了。

2017-08-23 22:45:28 288

原创 二维树状数组(4种操作)

Problem DescriptionNow I am leaving hust acm. In the past two and half years, I learned so many knowledge about Algorithm and Programming, and I met so many good friends. I want to say sorry to Mr,

2017-08-23 22:30:21 263

原创 树状数组关于区间修改区间求和的问题

Total Submission(s) : 77   Accepted Submission(s) : 19Problem DescriptionYou have N integers, A1,A2, ... , AN. You need to deal with two kinds of operations. One type of operation is to add so

2017-08-23 22:22:11 322

原创 树状数组—求逆序数的个数

Problem DescriptionIn this problem, you have to analyze a particular sorting algorithm. The algorithm processes a sequence of n distinct integers by swapping two adjacent sequence elements until t

2017-08-23 22:18:28 373

原创 训练日记8.22

今天下午的练习,做的第二个题,有点坑队友了。题意啊,到最后还是顺着错误的题意做的,他是要求的到达一个点是一个最短路径,回到原点的时候不能走原来的那一条路,但还是最短路径,用弗洛伊德,TLE,和WA之后依旧没有发现题意理解的错了。。。然后让小伙伴看了看这个题,确实,给人家带跑了。第二个题按照正确的题意,确实弗洛伊德能做出来,但是算法里的三重循环会超时啊,所以要用更好的优化的算法SPFA。晚上继续看了

2017-08-22 22:57:06 200

原创 树状数组的三种模式

我们在这之前已经了解过了lowbit的概念,还有对于树状数组的基本的认识了,然后,再学习树状数组的基础用法。树状数组主要有三种类型,从简单到复杂。 依次是修改点,求区间和 ,修改区间求点,还有最复杂的修改区间,求区间。最简单的第一种模型:int lowbit(int x){ return (x&(-x));}void add(int x,int v)

2017-08-22 21:51:35 242

原创 训练日记8.21

今天上午做了一道blog上的一个原题,用两种差不多的方法交了两边,对于求有多少的逆序数,或者某一个数的左边有多少数比这个数大,这类的题理解的更深了。昨天看了一篇别人的blog,对于树状数组的第二种模式,第三种模式的理解更深了。然后自己写了一个模式三的,但是在,区间更新点的时候,有点混淆,而且在求的时候直接列了一个大的式子,而不是像课件上的,用多个函数给他分步骤求,所以回头又看了看课件,果然理解起来

2017-08-21 22:39:26 231

原创 训练日记8.19

最近学的树状数组,感觉这方面的题得多看,多了解,才能在做题的时候很好的用它。下午的ccpc网络赛,怎么说,刚上来做一道字符串的题,给你两个字符串s1,s2,例如s2=aba,依次截取s2的是 {aba}{ba}{a},我们n代表截取的片段的长度;之后看看片段在字符串s1中的个数,用l代表,举个例子吧,截取的片段{aba} 在s1={abababab}中的个数由3个,所以l=3。 把每一次在s2

2017-08-19 23:02:46 283

原创 训练日记8.18

树状数组,看了看饶齐的blog,发现总结的知识点和写的东西相当好啊。关于树状数组,最基础的用法就是用来求第 i 的数字的前面有多少个比它大或者小的数。例如我们在这里求第i个数前面有几个比它小的数吧,在这里设置一个数组 C[]吧,先从a[i]向左扫描,让C[k]=1,表示大小位K 的值已经被扫描到了,所以他左边比它小的个数就C[1]+C[2]++++++C[a[i]-1],也就是是sum[a

2017-08-18 22:21:39 260

原创 入门树状数组(左边比x小的个数)

我们在这里求第i个数左边有几个比它小的数,还有右边有几个比它小的数。那左边的这一种情况来说吧,在这里设置一个数组 C[]吧,先从a[i]向左扫描,让C[k]=1,表示大小位K 的值已经被扫描到了,所以他左边比它小的个数就C[1]+C[2]++++++C[a[i]-1],也就是是sum[a[i]]。然后向上更新点C[a[i]]++。//左边比他小的数的 个数 //试下1 2 3

2017-08-18 22:12:39 1188

原创 训练日记8.17

上午看的树状数组,那个三个模型的最后一种模型真的不好理解,改区间求区间的模型,来来回回看了好几遍,还是晕额。 下午做的那套题,第一个题我做的,刚开始按我的理解做的一直WA ,然后又和小伙伴读了两遍题,之后小伙伴也是改了一通,也没有。这个题考的思维,,再加上对题意把握的不是很准,这个题到最后弃了。今天下午唯一出来的就是最后一个水题,说出来有点丢人啊 。。之后小伙伴做着d题,我看了看e题,结果谁都没有

2017-08-17 22:44:27 221

转载 关于lowbit

lowbit(i)的意思是将i转化成二进制数之后,只保留最低位的1及其后面的0,截断前面的内容,然后再转成10进制数。即lowbit(i) = i&(-i)。参数x为有符号整型数,-x通过求补码获得比如,x=6,及二进制数0110,那么按照补码求法,-x的值为1001+1=1010接着,x&-x,结果等于0010,作为函数的返回值可见该函数的作用是:返回x的最后一个为“1”的bit位的位置。将 x

2017-08-16 23:00:19 686

原创 训练日记8.16

今天上午看了一道感觉很新颖的题,给你一个矩阵,只有 数字0,1,求一个最大的子矩阵,(矩阵是由1组成的),是Largest Rectangle in a Histogram的一个变型的题,其实每一行都可以转化成一个树状图形,求最大矩阵题的样子,还记得刚开始看到这个题的时候,怎么也没有想到是一个单调队列的题,表示自己的思维很伤。下午看了看树状数组。今天老师提到换学习方式,确实,没有很好理解总结一个算

2017-08-16 22:54:42 186

原创 训练日记8.15

今天下午做的题,很伤啊。。第一个题,稍变形的bfs,真的不是很难,很快写出来了,用一个结构体,放坐标x,y,step,还有重要的一个变量叫它thing吧,如果thing为0,那就表明没有带上4这个物品,相反就是带上了4这个物品。最后的限制条件是到达了终点并且还带这个物品,这个方法很快写好了,但是。。。。。。一直没有出来结果。为什么呢?做完题走的时候听说小伙伴第一个题使用好几次搜索,从头到搜索到

2017-08-15 22:42:15 347

空空如也

空空如也

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

TA关注的人

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