
ACM专题总结
爱吃老谈酸菜的DV
选择适合自己的。
展开
-
STL知识点总结
一、栈(stack)1.特点:先进后出,只有一个出口,只能操作顶端元素。2:头文件:3.定义:stac<date_type>stack_name;(stack是整体类型,date_type是元素类型)eg:stacks;4.常用操作:s.empty():返回bool类型,表示栈内是否为空s.size():返回栈元素个数s.top():返回栈顶元素s.pop():移除栈...原创 2019-03-02 22:36:24 · 456 阅读 · 0 评论 -
背包基础
一、0-1背包1.题目:有N件物品和一个容量为V的背包。第i件物品的费用是c[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。2.特点:每种物品仅有一件,可以选择放或不放3.f[i][v]表示前i件物品恰放入一个容量为v的背包可以获得的最大价值。则其状态转移方程便是:f[i][v]=max{f[i-1][v],f[i-1][v-c[i]]+w[i]}4.只考虑第i件物品...原创 2019-04-01 23:43:57 · 206 阅读 · 0 评论 -
2019年4月3日学习总结
最近也是做了动态规划的题了,感觉自己和大佬们真的是差的太多了。周六那天发烧了,一天没看题,等到周天再去看VJudge的题时感觉像错过了一个亿,前几名都已经把所有的题都做完了,我才做了八道,太少了…想追上大佬们还是得下苦功夫啊!最近主要就学了背包问题,01背包、完全背包和多重背包,都是动态规划的特殊情况,对于这三种背包问题都有固定的公式模板,做题的时候套用公式就可以。但是我觉得单纯的背公式套用公...原创 2019-04-03 13:55:54 · 179 阅读 · 0 评论 -
搜索
一、什么是搜索搜索算法是利用计算机的高性能来有目的地穷举一个问题的部分或所有的可能情况,从而求出问题的解的一种方法。二、所谓状态转移1.状态:对问题在某一时刻进展情况的数学描述,或者是数学抽象。每一个状态都会是答案的一个“可能的”解。2.状态的转移:问题从一个状态转移到另一个状态,这样就可以进行搜索的一步步延伸,最后要得到的解也是其中的一个状态。三、两种搜索方式(一)广度优先搜索(BF...原创 2019-04-25 23:06:18 · 267 阅读 · 0 评论 -
STL的模板
一、栈(stack)头文件:<stack>定义:stack<date_type>stack_name;操作:s.empty();//返回bool类型,表示栈内是否为空s.size();//返回栈元素个数s.top();//返回栈顶元素s.pop();//移除栈顶元素s.push(a);//向栈内压入一个元素a二、队列(queue)1.头文件:2.定义...原创 2019-04-30 23:37:22 · 240 阅读 · 0 评论 -
搜索的板子
广度优先搜索框架void BFS(){ ......//初始化起点入队 while(!Queue.empty()) //判断队列是否为空 { .....//获取队首元素 if(......)//结束条件 { ...... }//判断是否是终点 Tmp=Queue.To...原创 2019-05-08 23:58:59 · 201 阅读 · 0 评论 -
位运算模板
一、概述。位运算就是就是直接对整数在内存中的二进制位进行操作。 位运算的操作数是整数类型或字符型。C++提供了6种位运算符来进行位运算操作:& 按位与| 按位或^ 按位异或~ 按位取反<< 左移(左边消失,右边补0)>> 右移(右边消失,左边补符号位)二、具体操作。1.按位与 &运算将参与...原创 2019-05-30 22:36:09 · 304 阅读 · 0 评论 -
并查集模板
一、并查集的定义并查集是一种维护集合的数据结构,它的名字中“并”“查”“集”分别取自于Union(合并),Find(查找),Set(集合)这三个单词。也就是说,并查集支持下面两个操作:a)合并:合并两个集合;b)查找:判断两个元素是否在一个集合中。并查集通过一个数组来实现的:int father[n];其中father[i]表示元素i的父亲结点,而父亲结点本身也是这个集合内元素。对于同一个集合来...原创 2019-05-30 22:39:06 · 131 阅读 · 0 评论 -
单调队列基本概念
一、概念队列中元素之间的关系具有单调性,而且,队首和队尾都可以进行出队操作,只有队尾可以进行入队操作。二、操作(1)插入:若新元素从队尾插入后会破坏单调性,则删除队尾元素,直到插入后不再破坏单调性为止,再将其插入单调队列。(2)获取最优(最大、最小)值:访问首尾元素。三、实现举例(1,3,2,1,5,6),进入单调不减队列的过程:开始队列为空;1入队,得到队列(1);3入队,因为...原创 2019-06-09 15:07:45 · 199 阅读 · 0 评论 -
最大 m 子段和问题
转载:https://blog.youkuaiyun.com/winter2121/article/details/72848482一、定义给定由n个整数(可能为负)组成的序列a1、a2、a3…,an,以及一个正整数m,要求确定序列的m个不相交子段,使这m个子段的总和最大!特别注意:有些题目可能不存在负数答案,给出的序列全是负数,那么不管m是多少,答案是0。此时选择的子段是0个,不足m个,但符合题意。...转载 2019-03-28 00:01:41 · 2505 阅读 · 0 评论 -
动态规划总结
一、动态规划基本概念1.指导思想:在做每一步决策时,列出各种可能的局部解;依据某种判定条件,舍弃那些肯定不能得到最优解的局部解;以每一步都是最优的来保证全局是最优的;2.基本特征:问题具有多阶段决策的特征。每一阶段都有相应的“状态”与之对应,描述状态的量称为“状态变量”。每一阶段都面临一个决策,选择不同的决策将会导致下一阶段不同的状态。每一阶段的最优解问题可以递归地归结为下一阶段各...原创 2019-03-27 23:03:17 · 290 阅读 · 0 评论 -
有关ACM程序设计课的感想
一、为什么要参加ACMACM的训练和学习可以学习到更多更广的知识,加强自己对知识的理解,提高运用知识解决问题的能力,锻炼编程思维,尝试用计算机的思维解决问题。同时,可以为我们解题提供更简单快捷的方法,提高编程效率和质量。二、学习ACM程序设计的要求1.要及时消化所学习的内容,要有一种紧迫感和压力感,争分夺秒的进行学习。2.按时认真完成作业,不应付交差,不欺骗自己。3.对于每一模块的内容做...原创 2019-02-26 17:05:54 · 795 阅读 · 0 评论 -
贪心算法专题总结
一、贪心算法意义贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择。不是从整体最优加以考虑,他做出的仅仅是在某种意义上的局部最优解。过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。二、贪心算法的理论基础贪心算法是一种在每一步选择中都采取在当前状态下最好或最优的选择,以找出整体最优解。贪心算法的每一次操作都对结果产生直接影响。贪心算法对许多问题它能产生整体最优解...原创 2019-03-13 23:25:58 · 474 阅读 · 0 评论 -
STL用法总结
一、vectorvector是向量,也是动态数组。顾名思义,vector的性质和数组类似,但是vector的大小可以改变。对于某些问题,若一开始不知道应该定义的数组的大小,可以定一个动态数组,以改变数组大小,防止出现数组访问越界的问题。数组用来存储字符串的方式是使用字符数组,即char类型的数组,字符数组中的每一个元素都是一个字符,无法同时存储多个字符串,vector动态数组就解决了这个问题。...原创 2019-03-09 23:02:47 · 246 阅读 · 0 评论 -
C++和G++的区别
转载于:http://www.cnblogs.com/zswbky/p/5432016.html用C++代码敲代码,一般都会用C++提交,但是后由于一些细微的不同使用不同的编译方式还是会产生差别的,甚至是WR和AC的天壤之别。从网上找了点资料:G++是GNU的那个C++编译器,也是Dev-CPP自带的编译器和NOI系列赛官方的编译器。。而C++是VC++,是微软出的编译器。一般来说,两个结...转载 2019-03-20 21:54:34 · 2915 阅读 · 0 评论 -
对于DP题的认识总结
一、认识最近一直在做动态规划的题,题不是很好做,但是只要知道了做题思路方法其实题也不难。动态规划本质上应该就是数学题吧,要用数学的思路把这个题解出来,列出来状态转移方程,然后根据状态转移方程把代码写出来就很简单了。可见学好数学是多么重要!但是我们往往就输在了第一步,状态转移方程都列不出来,那后面的都不用想了。这就需要我们多做题,对做过的题稍作分类总结,应该能发现其中的规律性。状态转移方程很...原创 2019-03-30 10:44:10 · 279 阅读 · 0 评论 -
对贪心算法几点认识和几道例题
一、货币选择问题题目:别有1,5,10,50,100元,分别有a,b,c,d张纸币。问若要支付k元,求所需最少纸币数?方法:先从面值大的开始开始计算,能用100的就尽量用100,再依次用50,10,5,1。例如:187=1001+501+103+51+1*2一共需要8张。二、区间调度问题题目:有n项工作,每项工作分别在Si开始,Ti结束。对每项工作,你都可以选择与否,若选择参加,则必...原创 2019-03-23 18:56:20 · 736 阅读 · 0 评论 -
贪心和DP
转载:作者:Shelley Lee链接:https://www.zhihu.com/question/32096465/answer/145473135来源:知乎==本质都是对解空间遍历的剪枝 ==若以原问题为根,各个子问题为各层子树,每层子问题的解为此层的结点dp:从叶到根逐层遍历,过程中每个子问题最优解决定与此前已解决子问题最优解相关,因此用每层最优解代替此层以下所有子树,并且每...转载 2019-03-23 23:07:34 · 1065 阅读 · 0 评论 -
区间DP
一、定义区间DP主要是把一个大区间拆分成几个小区间,在每个区间上进行DP,先求小区间的最优值,然后合并起来求大区间的最优值。二、一般区间DP实现代码memset(dp, 0x3f, sizeof(dp));//0x3f3f3f3f的每个字节都是0x3f,所以要把一段内存全部置为无穷大,我们只需要memset(a,0x3f,sizeof(a))。最精巧的无穷大常量取值是0x3f3f3f3f。...原创 2019-04-10 14:23:47 · 210 阅读 · 0 评论 -
二分三分法总结
一、概念在一个单调有序的集合中查找元素,每次将集合分为左右两部分,判断解在哪个部分中并调整集合上下界,重复直到找到目标元素。时间复杂度:O (logn)格式double left=“区间下界”,right=“区间上界”,mid;while(right - left > 1.0e-6){ mid = (right + left)/2; if(Caculate(mid)&...原创 2019-06-09 15:25:35 · 584 阅读 · 0 评论