前缀和

【例题】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. JavaScript 基础知识 表达式和运算符

    表达式的概念:将同类型的数据(如常量.变量.函数等),用运算符号按一定的规则连起来的.有意义的式子称为表达式 一.原始表达式 最简单的表达式,是表达式的最小单位.JavaScript中的原始表达式包含 ...

  2. Codeforces 758D:Ability To Convert(思维+模拟)

    http://codeforces.com/problemset/problem/758/D 题意:给出一个进制数n,还有一个数k表示在n进制下的值,求将这个数转为十进制最小可以是多少. 思路:模拟着 ...

  3. 6.秋招复习简单整理之请你谈谈JDBC的反射,以及它的作用?

    通过反射com.mysql.jdbc.Driver类,实例化该类时会调用该类的静态代码块,该代码块会去java的DriverManager类中注册自己,DriverManager管理所有已注册的驱动类 ...

  4. DAX 第一篇:数据模型

    DAX是一种专门用于计算数据模型的业务公式的语言,本文以Power BI的关系来学习数据模型. 一,理解数据模型 数据模型是由一组表和关系构成的结构,表和表之间由关系链接,如下图所示的产品数据模型: ...

  5. 网页内嵌html遇到的问题

    在项目中遇到个问题 充值功能是点击一个按钮这个按钮会弹出模态框,输入充值金额会执行一段脚本自动提交数据到https://openapi.alipay.com/gateway.do上 结果:本网页跳转到 ...

  6. MFC在一个工程中启动其他工程的exe文件

    说明:有的时候把两个工程合并,但是偷懒不想在工程中添加代码,所以想到了这个办法,仅限偷懒哈哈哈哈 方法:新建一个主程序,在主程序的界面中添加按钮,在按钮的程序代码中添加以下语句: void CMain ...

  7. Ubuntu 下载 Eclipse + tomcat 配置

    tomcat下载 去网站下载core中的 tar.gz的文件 下载之后依然转移到/opt文件夹然后进行解压 sudo cp apache-tomcat- /opt sudo tar -zxvf apa ...

  8. e校帮V1.1使用指南

    2017年04月17日,e校帮正式版本V1.1.4正式上线了.大家可以在e校帮官网进行下载,http://exiaobang.top 或者在搜狗手机助手/搜狗输入法/酷安进行下载. e校帮简介: e校 ...

  9. css inline-block 水平居中

    给父元素添加text-align: center即可. body { text-align: center; background-color: black; } #outer { margin: 1 ...

  10. Python连载24-函数list&read&seek

    一. 函数list (1)定义:用打开的文件作为参数,把文件内的每一行内容作为一个元素 (2)格式:list(文件) (3)例子: with open(r"test01.txt", ...