摘要:首先 什么是01背包问题?(可以参考下百度百科 只是我觉得百度百科对于为什么逆序这个问题解释的不是特别清楚)(以下题目中的内容摘自百度百科)////////////////////////////////////////////////////////////////...
阅读全文
07 2018 档案
摘要:首先引进一个符号:gcd是greatest common divisor(最大公约数)的缩写,gcd( x,y ) 表示x和y的最大公约数。然后有一个事实需要了解:一个奇数的所有约数都是奇数。这个很容易,下面我们要用到。 来研究一下最大公约数的性质,我们发现有...
阅读全文
摘要:题目A/9973=n那么:n= A - A / 9973 * 9973 ……①设:A/B=x 则A=B*x,代入① 得 n=B*x-A/9973*9973然后这个方程中的A/9973不要去纠结它,A就当不知道,然后,方程可变成二元方程 B * x - 997...
阅读全文
摘要://修改区间,查询点#include#includeusing namespace std;const int maxn=100005;const int maxq=100005;int a[maxn];int b[maxn];int c[maxn];//a原数组,...
阅读全文
摘要:今天学习了一下差分数组,觉得好神奇啊。1.定义:对于已知有n个元素的离线数列d,我们可以建立记录它每项与前一项差值的差分数组f:显然,f[1]=d[1]-0=d[1];对于整数i∈[2,n],我们让f[i]=d[i]-d[i-1]。2.简单性质:(1)计算数列各项的值...
阅读全文
摘要:int Lowbit(int x){ return x&(-x);}lowbit当中x,-x,补码,反码,傻傻分不清楚。我们先看看两个二进制数相减的问题两个二进制数相减的相关问题两个二进制数相减的时候可以把符号括起来转化为加法,比如010-111,这时候就可以写...
阅读全文
摘要:题目两个操作: 1. Add x y value: Add value to the element Axy. (Subscripts starts from 02. Sum x1 y1 x2 y2: Return the sum of every element A...
阅读全文
摘要:mod与%的区别 %与mod的区别:%出来的数有正有负,符号取决于左操作数,而mod只能是正;所以要用%来计算mod的话就要用这样的公式:a mod b = (a % b + b) % b;括号中的式子可以把左操作数转变为正数。
阅读全文
摘要:题目题目大意:Yifenfei是一个浪漫的人,他喜欢数天上的星星。为了使问题变得更容易,我们假设天空是一个二维平面,上面的星星有时会亮,有时会发暗。最开始,没有明亮的星星在天空中,然后将给出一些信息,“B XY”,其中“B”代表明亮,x代表X坐标和Y代表Y坐标是指在(...
阅读全文
摘要:题目题意:按y递增的顺序给出n颗星星的坐标(y相等则x递增),每个星星的等级等于在它左边且在它下边(包括水平和垂直方向)的星星的数量,求出等级为0到n-1的星星分别有多少个。因为y递增的顺序给出,于是乎这道题跟 y 无关,在每次输入x的时候都去判断比x小,即在x之前的...
阅读全文
摘要:题目写了一天的线段树,这道题主要说明一下sum是赋值的,不是累加的,并且在push_down的时候lazy也是赋值的。因可能对懒标记的理解还不是很透彻吧。#include #include #include using namespace std;const int ...
阅读全文
摘要:写了一下午的线段树,也算是做个总结吧。下面的区间更新写了两种,一种是没有用到懒操作一种是用了的。懒操作主要是在区间更新的时候用到,下面求区间和 and 区间最值都是要用到懒操作的#include #include #include using namespace s...
阅读全文
摘要:题目题意:给你N个排列不规则的数,任务是把它从小到大排好,每次只能交换相邻两个数,交换一次的代价为两数之和,求最小代价拿到这道题,我根本看不出这道题和树状数组有半毛钱关系,博客之,全说用树状数组做,纳尼。。。看来我还是太年轻。。这道题还涉及到了逆序对,何为逆序对:对于...
阅读全文
摘要:题目拿到这道题刚开始就觉得是bfs,其实自己一直不太能清晰的分析出一个题用的是bfs,还是dfs。尽管他们的原理我都大概知道,但可能就是 因为我只是大概知道吧。。总是觉得dfs和bfs这两个东西是可以相互使用的。下面对dsf和bfs做一个总结吧:DFS在于从一个初始状...
阅读全文
摘要:题目小白书上说二分搜素法的结果判定,一 .一次二分可以把区间范围缩小一半,100次循环则可以达到10^-30的精度范围。#include #include using namespace std;int N,K;const int INF = 1e5+10;doubl...
阅读全文
摘要:优先级队列区别于普通队列的一点是:优先级队列如果插入的节点是结构体类型,则要在结构体中重载比较操作符函数。优先队列默认的que插入是从大到小,所以在结构体中要重载b.dis;//从小到大排 return a.pos > b.pos; }};stru...
阅读全文
摘要:关于cmp函数参数中的&符号关于sort函数中的cmp函数有着不同的写法,以刚刚的整形元素比较为例还有人是这么写的:bool cmp(const int &a, const int &b){ return a>b; } int a[10]; sort(...
阅读全文
摘要:题目这道题做了几个小时了都没有做出来,首先是题意搞了半天都没有弄懂,难道真的是因为我不打游戏所以连题都读不懂了?反正今天是弄不懂了,过几天再来看看。。。题意:一个人从1点出发到T点去打boss,这个人有两个属性值,防御值和战斗值,这两个值成反比,为了打赢boss我们要...
阅读全文
摘要:题目一个简单的二分,只是想说明一下,如若要查找一个数组中某个数的下标可以直接用lower_bound()这个函数。只是要考虑到要查找的数不在数组中的这种情况。#include #include #include using namespace std;const in...
阅读全文
摘要:题目描述农夫 John 建造了一座很长的畜栏,它包括N (2 #include #include using namespace std;const int Max = 1e5+5;const int INF = 999999;int a[Max];int n,m;i...
阅读全文
摘要:因为每个人二分的风格不同,所以在学习二分的时候总是被他们的风格搞晕。有的人二分风格是左闭右开也就是[L,R),有的人是左开右闭的(L,R]。二分的最基本条件是,二分的序列需要有单调性。下面介绍的时候用v来代表我们二分的目标,用第一个大于v,第一个大于等于v【升序】,最...
阅读全文
摘要:以为二分查找和二分搜索是两个不同的东西,但是代码咋个又这么像嘞,思路咋个都是一个的嘞,傻傻没分清楚过。区别在于对 lb 和 ub 进行赋值的时候,一个赋的是:lb=0,ub=n-1;一个赋的是:lb= -1,ub=n;因此导致对 mid 进行更新时,一个要mid+1...
阅读全文
摘要:关于算法的时间复杂度很多都用包含O(logN)这样的描述,但是却没有明确说logN的底数究竟是多少。解答: 算法中log级别的时间复杂度都是由于使用了分治思想,这个底数直接由分治的复杂度决定。如果采用二分法,那么就会以2为底数,三分法就会以3为底数,其他亦然。不过无论...
阅读全文
摘要:题目这道题之前写过一次,结果再做又忘了,再做又忘了。所以还是写个博客记录一下。相对门的两个房间占用同一处走廊,所以例如有1——>3和4——>6移动方式时,它们是共享了同一段走廊的,即3号房间门前的走廊。处于相对门的两个房间和处于一排的这样子的房间他们都有一个相同点:奇...
阅读全文
摘要:题目题意:根据地图,'S'为开始位置,'D'为门的位置,' . '为空地,'X'为墙,不能经过,问:在指定的时间,是否能到达'门'的位置.注意:路不可以重复经过,时间也要刚好是 t ,不能少.思路:用DFS,不能用BFS,因为BFS求的是最短路径,而此题的路径不一定最...
阅读全文
摘要:题目输入:n 和 mod输出:Output the answer of (0! + 1! + 2! + 3! + 4! + ... + n!)%m.Constrains0 =mod 时,就可以break了。#include #include #include usin...
阅读全文
摘要:#include #include #include using namespace std;int main(){ char num[110]; scanf("%s",num); int len = strlen(num); int t=1,...
阅读全文
摘要:1.概念:模运算是指取模运算,即求m/n的余数。模运算有许多基本规则,熟练掌握可以更好的编程。2.交换律: (a + b) % m = (b + a) % m (a * b) ...
阅读全文
摘要:题目这道题是全排列问题,主要注意的是格式问题。觉得下面这种写法最为巧妙#include #include #include using namespace std;int main(){ int a[5],flag=0; while(~scanf("%d%...
阅读全文
摘要:2597 团伙题目描述 Description1920年的芝加哥,出现了一群强盗。如果两个强盗遇上了,那么他们要么是朋友,要么是敌人。而且有一点是肯定的,就是:我朋友的朋友是我的朋友;我敌人的敌人也是我的朋友。 两个强盗是同一团伙的条件是当且仅当他们是朋友。现在给你一...
阅读全文
摘要:#includeint main(){ int s[5],i; for( i=0;i<10;i++) { s[i]=i; } printf("\n"); for( i=0;i<10;i++) { p...
阅读全文