- 博客(23)
- 收藏
- 关注
原创 2017开学训练第一周周中总结
这周前几天看了一些有关于树状数组的基础知识,还是简单的单点更新和区间更新的相关知识,主要巩固了一下建树的相关知识。 周四打了一场比赛,我出了两道题,队友出了一道题,我出了1001,一道水题,就是k的k次方这样的数比n小的有几个,打表统计一下比上限小的一共有15个数,然后存到数组里面,简单查找过之。然后出了1005,一道位运算的题,利用的是位运算满足结合律,做一个前缀数组,做一个后缀数组,两者
2017-08-31 16:16:06 229
原创 暑假训练总结
社会实践调查报告 题目:关于暑假ACM训练的实践与总结专业班级:数学与应用数学专业1班姓名:李双智 学号:20164249 2017年8月25日 【摘要】31.树状数组和图论42.二分三分以及单调队列53.树状数组与单调队列54.总结
2017-08-25 20:35:33 376 1
原创 2017暑假训练第二十一天
今天的训练继续做了有关于树状数组和线段树的题目,这些题难度确实远大于之前做的那些二分和图论的题目。主要是树状数组和线段树是一种类似于可以处理区间问题的工具,这种工具可以大大节省区间运算的时间,但是也需要大量的题目扩展思路。今天做的第一个题是一个用树状数组优化的dp题目,题目很简单,但是想到用树状数组和怎么用树状数组却是十分难的一件事。然后做了一道三维树状数组的区间染色类问题,这个脑洞也相当的大。相
2017-08-23 22:00:22 166
原创 2017暑假训练第二十天
今天早上的训练研究了一下线段树求最大值的算法,建树方法方法大致与模板相同,多了一个有关最大值的内容: tree[id].max=max(tree[2*id].tree[2*id+1]); 意思也很好理解,就是根节点的最大值等于左子区间和右子区间的最大值的较大者,依旧是递归查找类型。 而后a了一道插入元素并查询第k大数的题目,就是一开始建立一个空的树,根据插入的元素与位置的关系向树
2017-08-22 17:14:29 192
原创 2017暑假训练第十八天
今天的训练简单的看了一下树状数组的内容,然后打了一场比赛,超出预期的a出来两道题,第三道题是一个很水的题,这个没什么说的,而第五题能出来的原因我认为是不懈的坚持,一开始连题意都看不懂,什么cell,又是either否定词,后来因为第四题迟迟出不来,我们便开始了推理性的试探,假设那个相互联系的系统是一个坐标系(有个坐标的意思),然后either否定句也进行了假设,假设他是可以画在cell的一遍或者对
2017-08-19 21:32:08 204
原创 2017暑假训练第十七天
今天继续看博客的内容,也是边看边写吧,整理些思路和有用的东西。 首先是这个题:poj 1195 Mobile phones 一个二维的树状数组的题,于是趁机整理一下二维的模板,大致如下:#include#include#include#includeusing namespace std;int n;int c[1010][1010];int lowbi
2017-08-18 09:35:59 351
原创 2017暑假训练第十六天
今天继续理解树状数组的内容,也是边看边写吧。 首先是这道题: POJ 3378 Crazy Thairs(数据集中+DP+树状数组+高精度)http://poj.org/problem?id=3378题意: 有一个N个数组成的数列,问你该数列中有多少上升5元序列,即满足如下要求的序列(不要求连续取5个A): 1 ≤ i j
2017-08-17 09:48:59 179
原创 2017暑假训练第十五天
既然不用做题了,就细细的理解一下知识点,决定学一点写一点,写点有用的东西。 首先是看了一下用树状数组求逆序数,看了好多版本,有直接求算的,有用结构体存取,再排序后计算的,但是总体的思路都是一样的,i-sum(i),用这个数减去之前输入的比他小的数的个数,总的看了一下,认为直接算更加方便而且好理解。 思路就是用树状数组存0或1,每输入一个,更新数组,并求算比他小的数的个数,ans+=i-
2017-08-16 09:51:49 186
原创 2017暑假训练第十三天
今天完成了所有的训练题目,最后两个题目都比较的棘手,所以比较浪费时间,第一个题题意极其复杂,但最后让求的东西却并不是多难,就是连续的矩阵求可以围成的最大的矩阵的面积,但理解这个题的题意却用了大量的时间,用了4个集合的形式表述。这个题的解法就是单调栈(到今天我才发现我们学的课件上的那个写法并非单调队列,而是单调栈的数组形式,每次操作的都是队尾的元素)为了避开这种写法下造成的head,real不会取的
2017-08-14 17:53:03 195
原创 2017暑假训练第十二天
今天的训练主要完成了有关单调队列的两个题,一个是有关于最大的全1矩阵,这个题我一开始的思路是借用了以前所学过的一个有关求最大子矩阵和的dp题目的思路,将二维的矩阵压缩成一维,然后求一维的最大子段和,依照这个思路,我的想法仍然是这样合成,最后逐次对行建立单调队列,依据单调队列的性质求出最大的矩阵所包含的元素的个数。但是由于对题目的理解不够深刻,最后还是tle了,于是参照了题解上,思路类似,但是并不是
2017-08-12 16:24:47 163
原创 2017暑假训练第十一天
今天的刷题又让我感到郁闷,感到快被long long和std::ios::sync_with_stdio(false);折磨死了,首先是这两个东西不兼容,如果同时使用std::ios::sync_with_stdio(false);以及long long的话会出现re的错误,后来改用scanf过之,接着又是一个题由于没有使用long long导致了wr而后又因为输入超时导致tle,而后遇到的大部分
2017-08-11 18:41:59 184
原创 2017暑假训练第十天
今天的训练开始了二分和单调队列的练习,由于练习中有以前的原题,凭借着记忆,1a了所有的原题,而后完成了两道单调队列的题,感觉细节把握上还需要更加的准确,尤其是数组滚动的状态和初始化等等方面,简单的看看课件,和自己实际的操作还是有一定的差距的,细节注意不到就会铸就大的错误,主要的难点在于如何把一个题目联系到单调队列上来以及单调队列内容的含义等等。 下午的比赛相对简单,在两个半小时我就完成了所有
2017-08-10 19:49:22 186
原创 2017暑假训练第九天
上午刚刚看完了树状数组的知识点,就自己的理解先做一下总结,整理一下学到了什么。 树状数组: 树状数组的作用: 1.使用背景--当要同时存在下述两种操作数次的时候: 1)对第x位置处的数据进行除了删除,乘除,之外的修改(比如增加或减去一个数) 2)求某一位置的前缀和。 处理以上两种情况的时候,使用简单的数组就不在适用了。(简单数组指的是a[]直接存某一位置的数是多
2017-08-09 10:01:13 144
原创 2017暑假训练第八天
今天的训练继续昨天的思路继续看的单调队列,通过例题加深了对单调队列的理解。在下午的训练中做出了两道水题,一道是简单的判断题,就是一个等差数列,谁先没糖果输出谁的名字,另外一道题是把一个队列的某一段重新排列,然后判断排列后的原来某个位置的数是否还是它,这个题需要一点脑洞,如果直接sort排序得到的结果一定是tle,所以改为判断他比区间上多少个数大,以得到重排后这个数的位置,第四题是一个广搜题,但一番
2017-08-08 19:13:02 193
原创 2017暑假训练第七天
今天的训练完成了所有的训练题目,主要学习了拓扑排序,位运算以及一些简单的单调队列的知识,自己看一些课件上面的没有注释的代码还是有些费力,尤其是对这些算法只是简单了解的情况下,但经过思考还是有一些自己的收获。 对于拓扑排序,这个算法适用于只知道一些大小关系的情况下排大小的情况,算法有点类似于松弛技术,让“入度”为0的点入栈,出栈时更新其他的点的“入度”(入度就是在排序中的相对位置),再让入度为
2017-08-07 19:33:43 276
原创 2017暑假集训第六天
今天做了1道搜索题,和4道图论题,最后一道题的找错过程略有不顺,主要是数组开小了,忽略了起始点也是一个搜索点,于是导致一直wr,现在还剩下最后一道题,总的看这所有这六天的复习,感觉自己确实有收获,从一开始,一道很简单的,甚至是做过的题,也能耗费我大量的时间,最终也要wr很多次才能通过,到后来一道很难的题,细心处理后的1a,还是有很大的成就感的,1a出自于对题目的理解,对知识点的熟练,并不是一时之功
2017-08-05 20:31:14 190
原创 2017暑假训练第五天
今天的训练成功由题目把四种求最短路径的方法都复习了一遍,也算是路遇难题,各显神通吧。 下面总结一下其中的三种算法(spfa算法是第三种算法的优化,所以只总结第1,2,4这三种算法): 对于Floyed算法: 算法的形式就比较暴力,三重循环过滤中间点对每个a[i][j]的缩短作用,过滤完之后结果就是最短路径,而且可以处理负权,易错点就是第一重循环的作用一定要注意。 算法的代
2017-08-04 20:19:07 169
原创 2017暑假训练第四天
今天上午复习了一下图论中最小生成树和并查集有关的题目,做了练习中两个关于最小生成树的题目,两个题目都是标准的模板题,第一个题目顺利通过,但第二个题由于cin的速度过慢,所以一开始并未顺利ac,究于是否是算法出了问题,我又用prim算法敲了一次,结果也是未ac,最终换成scanf之后两个代码均顺利ac。虽然浪费了大量的时间,但对于代码的模板起到了一定的熟悉作用,下面总结一下两种算法: 对于pr
2017-08-03 18:05:51 207
原创 2017暑假集训第三天
今天的训练比较顺利,一共做出来五道题,wr了一次,把搜索部分基本结束,基本达到了熟悉复习搜索题目的目的,细节问题得以掌握。而比较惊喜的是昨天的转向题方法十分正确,今天稍加修改,便成功ac,接着又是一个方向的题,也顺利ac了,看来昨天花了一上午的时间研究的方向问题并没有白费,下面总结一下有关方向的题的要领: 首先方向题一般是指在二维数组中的方向,定位到方向上分为上下左右四个方向,由于之前做的有
2017-08-02 19:29:15 275
原创 2017暑假集训第二天
今天的集训着实有些郁闷,上午完成了一道简单的搜索水题(Dungeon Master-一个三维的搜索,细节比较多,但着实简单)之后便被卡死在了一个细节更多的题(Children of the Candy Corn)上面,这个题的难点在于控制方向,但之前我对代码中方向的理解不深刻,导致处处受挫,但最终在自己的思维和修改下完成了方向的控制,但细节过多,下午又有比赛,于是放弃了这道题的求解,控制方向的方法
2017-08-01 20:20:52 357
原创 2017暑假集训第一天
今天是训练的第一天,主要复习了一下搜索的使用,包括深搜和广搜,除了复习了课件以及相关例题课件之外,完成了数道训练题目。 总结今天的训练,认为做搜索题需要掌握其独有的方法,需要先弄清是深搜还是广搜。然后想搜什么,怎么搜,需要在哪里进行剪枝,需要在哪里进行优化。 然后分别套用模板代码即可。 分别是: BFS: queueqq; while(!qq.empty()){
2017-08-01 08:33:01 210
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人