摘要:
给出一个四个规则 0->0=1 0->1=1 1->0=0 1->1=0 我自己当时一味的去找规律,没有把式子好好推一推。 当然每个人都能想到a[n]=0是必须的 当a[n-1]=1的时候,直接输出即可,因为前面无论到0还是1,最后与n-1结合都是1,而这正式我们需要的 那么问题来了,a[n-1]= 阅读全文
摘要:
考虑当只有一个数出现奇数次的时候,我们可以很轻松的知道,把所有的数异或和即可,因为异或运算有一个非常有意思的性质,a^b^a=b 考虑当有两个数(a,b)出现奇数次的时候,我们异或和得到,num=a^b,那么怎么把这两个数分开呢? 我们想想,既然是位运算,一定和二进制有关,我们把num的二进制展开, 阅读全文
摘要:
#include #include #include #include using namespace std; int sum1[1000]; int sum2[1000]; int a[1000]; int n,m; int lowbit(int x){ return x&(-x); } void update(int x,int w){//更新效果:把x位置后面所有的数的值+w ... 阅读全文
摘要:
非常简单的单点修改+区间加+区间查询。我用的是最近刚学的区间修改版本树状数组。 直接维护即可,注意修改后的单点值已经不是a[i],或者b[i],要通过区间查询求单点。不然是错的。 区间修改版本树状数组: 线段树版本:。。。更新laze标记,以及sum的时候,一定要用+=,不要用=,因为往下更新的时候 阅读全文
摘要:
其实我最开始没有这道题。。。是做到UPC-11079-小P的决斗,训练结束后然后搜索了一波,才了解这个题的。 非常牛逼的题。。。这么多人做出来了。。。我好菜。。。 对于每对三元组Ta=(La,Ja,Ka),Tb=(Lb,Jb,Kb),定义Ta,Tb之间的差值D为D(Ta,Tb)=max(La−Lb, 阅读全文
摘要:
树状数组进阶: 区间修改与区间查询 今天老糊涂了,树状数组忘记了,基本的只要单点修改+区间查询功能,如果要进行区间加操作,需要把树状数组进行改造。 我们首先来回顾树状数组的功能: lowbit(x&(-x)):返回二进制最低位1的值:比如x=1010那么lowbit值为2。 x+lowbit(x): 阅读全文
摘要:
读《具体数学》 简要笔记 2.1记号 $\sum_{k=1}^{n}a_{}^{k}$ 其中ak是被加数,k介于下限1和上限n之间 $\sum_{k=1}^{\pi(N)} \frac{1}{p}$ 其中pk表示第K个素数,$\pi(N)$表示<=N的素数的个数 这个和式指出了接近N的随机整数平均而 阅读全文
摘要:
HDU 1024第一遍水过,没有体会到这个题的奥妙,思考了很久终于体会了。大概意思是求把序列分成m段的子序列,并不一定要覆盖完,求子序列和的最大值我们首先要写出基本的动态转移方程: DP:dp[ i ] [ j ] =max ( dp[ i - 1 ] [ 1~j-1 ]+a[ j ],dp[ i 阅读全文
摘要:
POJ - 1177 扫描线 这道题也算是一道扫描线的经典题目了。 只不过这道题是算周长,非常有意思的一道题。我们已经知道了,一般求面积并,是如何求的,现在我们要把扫描线进行改造一下,使得能算周长。 我们大致考虑一下图像上是如何实现的: 这样一个图我们要如何求他的面积? 我们把轮廓画出来 我们把扫描 阅读全文
摘要:
这道题最开始我以为和HDU - 1542 那道题一样,只需要把cover次数改成2次即可,但是后面仔细一想,我们需要求的是覆盖次数大于等于2次的,这样的话,我们需要维护两个长度,HDU-1542 由于求的是覆盖次数大于等于一次的,我们只需要维护一个覆盖次数大于等于1的长度的len1就行,但是这道题我 阅读全文