acm随笔

现在的我还是个蒟蒻,不过我会加油!!!

持续更新中……

数学

1.钝角三角形平移不变性:

假设a,b,c满足a+b>c,a2 +b2 <c2 ,则a,b+x,c+x也满足此性质。(x>=1)
对于足够大的a,b,有a,b,a+b-k为钝角三角形
可先证明一个最小的a,b满足,再由平移不变性可以推出后续的a,b也是。
比如234->k=1,3,5,6->k=2

题目:https://acm.ecnu.edu.cn/contest/151/problem/A/

性质

思想

这里的思想好多都和2有关啊

  • 倍增

    假如f(x)单调递增,已知x可求出f(x),给定m,如何快速确定使 f(x)<=m<f(x+1) 的x呢,一个优秀的办法就是倍增,我们按1,2,4,8…即2k一路试探,直到f(2k)大于m,那么x一定在[2k-1 ,2k )之间,令mid = f(2k-1 +2k-2 ),然后就可以快乐二分啦!!!

  • 差分与前缀和

    形象化表达一下,每一行表示ai的,一个方块就是对应差分,而每个涂黑倒三角就是前缀和

    a7 ■ ■ ■ ■ ■ ■ ■
    a6 ■ ■ ■ ■ ■ ■ □
    a5 ■ ■ ■ ■ ■ □ □
    a4 ■ ■ ■ ■ □ □ □
    a3 ■ ■ ■ □ □ □ □
    a2 ■ ■ □ □ □ □ □
    a1 ■ □ □ □ □ □ □

    记原数组ai差分ci,前缀和sumi
    第i行方块值的和是ai
    每一列的方块值都是一样的,第j列值为cj

    一个实际的运用就是让区间和树状数组能做到区间修改
    区间修改的优化就是修改头尾的差分值,即对差分值做单点修改
    我们维护两个树状数组,一个是维护ci的,查询ci求出的值是ai
    第二个是维护Ci=(i-1)*ci的,即维护白色格子每一列,查询求出的值是三角区间和

    这样子的话两个树状数组的本质都是维护差分
    修改的时候单点修改差分就行了呢

    于是前缀和sum(n)=n*an - Cn
    结合图像来说就是 黑色倒三角面积和 等于 矩形面积 - 白色三角面积

  • 二分答案

    适用于答案比较容易检验而直接求解几乎不太可能的情况,一般用于求有精度要求的题目

  • CDQ分治

    本质:离线修改与查询并二分,只不过每次将指令二分,前后两个指针p1,p2分别跑,前面修改,后面查询,只要保证操作的顺序和离线相同即可,复杂度的优化体现在每次指令区间内的修改可以叠加。

  • 子方案更优解

    https://codeforces.com/group/uVAsoW2Jkj/contest/241184/problem/L
    任何奇数步长都有更优子方案:步长为1
    任何偶数步长都有更优子方案:步长为2n
    因此只要枚举很少的步长就行了
    这类问题主要是通过比较不同方案之间的关系,将劣解舍去,考虑更优解,从而优化。

论文集收获

1.浅谈数形结合思想在信息学竞赛中的应用

https://wenku.baidu.com/view/b97cd22d0066f5335a8121a3.html

例一 Raney引理的证明利用周期函数图像化表示再用两条斜率为1/N的直线包住简直太妙了
例二 则完美地解释了斜率优化

  • 这里简述一下题意,给定序列a1 ~ an,求Max average(al,ar),(r-l+1>=F)
    即求最小的一段长度大于等于给定值的序列的平均值
  • 这里记sum(i)为1-i的前缀和,那么即求 s u m ( r ) − s u m ( l − 1 ) r − ( l − 1 ) \frac{sum(r)-sum(l-1)}{r-(l-1)} r(l1)sum(r)sum(l1)
    这难道不是两点A(l-1,sum(l-1)),B(r,sum(r))之间的斜率公式吗 !!!
  • 于是乎
    还没看完,以后补

2.动态规划算法的优化技巧 毛子青

平行四边形不等式::m[i,j]+m[i’,j’]<=m[i’,j]+m[i,j’],i<i’<j<j’
区间包含单调性质:w[i’,j]≤w[i,j’],i<i’<j<j’
由上述两个性质可以推出 决策单调性:
s[i,j]≤s[i,j+1]≤s[i+1,j+1], i≤j

证明如下:

令mk[i,j]=m[i,k-1]+m[k,j]+w[i,j],s[i,j]为区间[i,j]的最佳分割点。要证明s[i,j]≤s[i,j+1],只要证明对于所有i<k≤k’≤j且mk’[i,j]≤mk[i,j],有:mk’[i,j+1]≤mk[i,j+1]。

这句话想证明的是,对于区间[l,r]当区间的r++时,我已有的分割点k左侧的分割方案都是较劣解。

加强下不等式:mk[i,j] + mk’[i,j+1] ≤ mk[i,j+1] + mk’[i,j] (左侧加小数,右侧加大数,不等式加强)

由平行四边形不等式可得:m[k,j]+m[k’,j+1]≤m[k’,j]+m[k,j+1],( k<j )
=>( m[i,k-1] +m[k,j] )+( m[i,k’-1] + m[k’,j+1] ) ≤ ( m[i,k-1] + m[k,j+1] ) + ( m[i,k’-1] + m[k’,j] )
=>mk[i,j] + mk’[i,j+1] ≤ mk[i,j+1] + mk’[i,j]

这样就证明了决策单调性

看过的好博文

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值