前缀和

【例题】BZOJ1218 激光炸弹

计算二位前缀和,再利用容斥原理计算出答案即可。

 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
const int maxn=+;
int n, r, sum[maxn][maxn]; int main() {
scanf("%d%d", &n, &r);
int x, y, v, maxx=, maxy=;
maxx=maxy=r;
for (int i=; i<=n; ++i) {
scanf("%d%d%d", &x, &y, &v);
++x; ++y;
maxx=max(maxx, x); maxy=max(maxy, y);
sum[x][y]=v;
}
for (int i=; i<=maxx; ++i) {
for (int j=; j<=maxy; ++j) {
sum[i][j]+=sum[i-][j]+sum[i][j-]-sum[i-][j-];
}
}
//枚举面积为r的正方形
int ans=;
for (int i=r; i<=maxx; ++i) {
for (int j=r; j<=maxy; ++j) {
ans=max(ans, sum[i][j]-sum[i-r][j]-sum[i][j-r]+sum[i-r][j-r]);
}
}
printf("%d\n", ans);
return ;
}

差分

【例题】CH0304 IncDec Sequence

求出序列a的差分序列b,令bn+1=0,目标是将把b2,b3...bn变为全0。

把序列a区间[l,r]加d,其差分序列的变化为Bl加d,Br+1减d。

从b1,b2...bn中任选两个数的方法可以分为4类:

1.选bi和bj

2.选b1和bj

3.选bi和bn+1

4.选b1和bn+1,这种选法没有意义

设整数总和为p,负数总和为q,首先以正负数匹配的方式尽量选择操作1,可执行min(p,q)次。

剩余|p-q|个未配对,执行操作2和操作3,共需|p-q|次。

所以最少操作次数为min(p,q)+|p-q|=max(p,q)次,根据操作2,3的选择情况,能产生|p-q|+1种b1的值,即序列a可能有|p-q|+1种。

 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
const int maxn=+;
long long n, a[maxn], s[maxn], p=, q=; int main() {
scanf("%lld", &n);
for (int i=; i<=n; ++i)
scanf("%lld", &a[i]);
s[]=a[]; s[n+]=;
for (int i=; i<=n; ++i) {
s[i]=a[i]-a[i-];
}
for (int i=; i<=n; ++i) {
if (s[i]>) p+=s[i];
else if (s[i]<) q-=s[i];
}
printf("%lld\n%lld\n", max(p,q), abs(p-q)+);
return ;
}

【例题】POJ3263 Tallest Cow

若有一条关系指明Ai和Bi可以互相看见,就将他们数组中Ai+1到Bi-1的数减去1,最终得到所有牛与最高的牛p的相对身高关系。

 #include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <map>
using namespace std;
const int maxn=+;
int n, p, h, m, c[maxn], d[maxn];
map<pair<int, int>, bool> ext; int main() {
scanf("%d%d%d%d", &n, &p, &h, &m);
int a, b;
for (int i=; i<=m; ++i) {
scanf("%d%d", &a, &b);
if (a>b) swap(a,b);
if (ext[make_pair(a,b)]) continue;
d[a+]--, d[b]++;
ext[make_pair(a,b)]=true;
}
for (int i=; i<=n; ++i) {
c[i]=c[i-]+d[i];
printf("%d\n", h+c[i]);
}
return ;
}

0x03 前缀和与差分的更多相关文章

  1. P5057 [CQOI2006]简单题 前缀异或差分/树状数组

    好思路,好思路... 思路:前缀异或差分 提交:1次 题解:区间修改,单点查询,树状数组,如思路$qwq$ #include<cstdio> #include<iostream> ...

  2. 【CodeForces】915 G. Coprime Arrays 莫比乌斯反演,前缀和,差分

    Coprime Arrays CodeForces - 915G Let's call an array a of size n coprime iff gcd(a1, a2, ..., *a**n) ...

  3. 树状数组的理解(前缀和 and 差分)

    二更—— 有神仙反映数星星那个题外链炸了,我决定把图给你们粘一下,汉语翻译的话在一本通提高篇的树状数组那一章里有,同时也修改了一些汉语语法的错误 这段时间学了线段树组,当神仙们都在学kmp和hash的 ...

  4. T3118 01完美矩阵【计数,前缀和,差分,好题】

    Online Judge:未知 Label:好题,计数,前缀和 题目描述 一个01矩形被称为是完美01矩形,如果满足下面3个条件: (1)它的四条边上都是1 (2)内部(除了4条边)的0和1的个数之差 ...

  5. 前缀和与差分(Acwing795-798)

    一维前缀和 Acwing795.前缀和 #include <iostream> using namespace std; const int N = 100010; int n, m; i ...

  6. 算法竞赛进阶指南 0x00 基本算法

    放在原来这个地方不太方便,影响阅读体验.为了读者能更好的刷题,另起一篇随笔. 0x00 基本算法 0x01 位运算 [题目][64位整数乘法] 知识点:快速幂思想的灵活运用 [题目][最短Hamilt ...

  7. [动态差分+二维前缀和][小a的轰炸游戏]

    链接:https://ac.nowcoder.com/acm/contest/317/E来源:牛客网 题目描述 小a正在玩一款即时战略游戏,现在他要用航空母舰对敌方阵地进行轰炸 地方阵地可以看做是n× ...

  8. luogu 1360 阵容均衡(前缀和+差分+hash)

    要求一段最大的区间里每个能力的增长值是一样的. 我们首先求一遍前缀和,发现,如果区间内[l,r]每个能力的增长值是一样的话,那么前缀和[r]和[l-1]的差分也应该是一样的. 那么我们把前缀和的差分h ...

  9. 洛谷 P1736 创意吃鱼法 Label:dp || 前缀和

    题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...

随机推荐

  1. scrapy基础知识之 pycharm 调试小技巧:

    在项目根目录下新建main.py文件,用于调试 from scrapy.cmdline import executeexecute(["scrapy","crawl&qu ...

  2. 4.秋招复习简单整理之java支持多继承吗?

    java仅支持单继承,但支持接口多实现.

  3. tomcat配置https以及配置完成后提示服务器缺少中间证书(已解决)

    #### tomcat配置https 准备工作 下载好证书文件,下载的时候可以选择为tomcat文件.我这下载下来是压缩包.解压后就是下图的样子. 以.key结尾的文件是证书的key 以.pem结尾的 ...

  4. Java编程思想:File类其他方法

    import java.io.File; public class Test { public static void main(String[] args) { MakeDirectories.te ...

  5. DAX 第二篇:计算上下文

    计算上下文是计算公式的环境,任何DAX表达式都是在上下文中求值的.行上下文和筛选上下文是DAX中仅有的上下文类型,把这两种上下文称为计算上下文.计算上下文用于限定公式计算的环境,当上下文变化时,相同的 ...

  6. STM32F072从零配置工程-基于HAL库的串口UART中断配置

    先上一个采用串口直接传输的Demo: 此处的思路是完全采用HAL库来实现的,核心是运用HAL_UART_Transmit_IT和HAL_UART_Receive_IT两个函数来实现的,可以作为一个De ...

  7. 快速掌握mongoDB(四)—— C#驱动MongoDB用法演示

    前边我们已经使用mongo shell进行增删查改和聚合操作,这一篇简单介绍如何使用C#驱动MongoDB.C#驱动MongoDB的本质是将C#的操作代码转换为mongo shell,驱动的API也比 ...

  8. 使用GDAL实现DEM的地貌晕渲图(二)

    1. 问题 之前我在<使用GDAL实现DEM的地貌晕渲图(一)>这篇文章里面讲述了DEM晕渲图的生成原理与实现,大体上来讲是通过计算DEM格网点的法向量与日照方向的的夹角,来确定该格网点的 ...

  9. /data/src/dragon/bidder_mod//src/proto_adapters/dragon_wax_adapter.h:11:对‘vtable for DragonWaxAdapter’未定义的引用

    dragon/bidder_mod/config中增加: $ngx_addon_dir/src/proto_adapters/dragon_wax_adapter.cc \

  10. 学习git使用网址

    如何将本地项目上传到Github (随梦飞翔) https://www.cnblogs.com/smfx1314/p/8426115.html git学习 GUI https://blog.csdn. ...