0x03 前缀和与差分
前缀和
计算二位前缀和,再利用容斥原理计算出答案即可。
#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 ;
}
差分
求出序列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 ;
}
若有一条关系指明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 前缀和与差分的更多相关文章
- P5057 [CQOI2006]简单题 前缀异或差分/树状数组
好思路,好思路... 思路:前缀异或差分 提交:1次 题解:区间修改,单点查询,树状数组,如思路$qwq$ #include<cstdio> #include<iostream> ...
- 【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) ...
- 树状数组的理解(前缀和 and 差分)
二更—— 有神仙反映数星星那个题外链炸了,我决定把图给你们粘一下,汉语翻译的话在一本通提高篇的树状数组那一章里有,同时也修改了一些汉语语法的错误 这段时间学了线段树组,当神仙们都在学kmp和hash的 ...
- T3118 01完美矩阵【计数,前缀和,差分,好题】
Online Judge:未知 Label:好题,计数,前缀和 题目描述 一个01矩形被称为是完美01矩形,如果满足下面3个条件: (1)它的四条边上都是1 (2)内部(除了4条边)的0和1的个数之差 ...
- 前缀和与差分(Acwing795-798)
一维前缀和 Acwing795.前缀和 #include <iostream> using namespace std; const int N = 100010; int n, m; i ...
- 算法竞赛进阶指南 0x00 基本算法
放在原来这个地方不太方便,影响阅读体验.为了读者能更好的刷题,另起一篇随笔. 0x00 基本算法 0x01 位运算 [题目][64位整数乘法] 知识点:快速幂思想的灵活运用 [题目][最短Hamilt ...
- [动态差分+二维前缀和][小a的轰炸游戏]
链接:https://ac.nowcoder.com/acm/contest/317/E来源:牛客网 题目描述 小a正在玩一款即时战略游戏,现在他要用航空母舰对敌方阵地进行轰炸 地方阵地可以看做是n× ...
- luogu 1360 阵容均衡(前缀和+差分+hash)
要求一段最大的区间里每个能力的增长值是一样的. 我们首先求一遍前缀和,发现,如果区间内[l,r]每个能力的增长值是一样的话,那么前缀和[r]和[l-1]的差分也应该是一样的. 那么我们把前缀和的差分h ...
- 洛谷 P1736 创意吃鱼法 Label:dp || 前缀和
题目描述 回到家中的猫猫把三桶鱼全部转移到了她那长方形大池子中,然后开始思考:到底要以何种方法吃鱼呢(猫猫就是这么可爱,吃鱼也要想好吃法 ^_*).她发现,把大池子视为01矩阵(0表示对应位置无鱼,1 ...
随机推荐
- HTTP 学习笔记03
通用信息头 Cache-Control : no-cache(不缓存当前请求) [*] Connection:close(返回当前请求后立即断开)[*] Date:...(HTTP消息产生的时间) P ...
- CSU 1508:地图的四着色(DFS+剪枝)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1508 题意:地图中四联通的块是一个国家,A和B每个人可以涂两种颜色,且B不能涂超过5次,相邻的国家 ...
- iOS自动化探索(十)代码覆盖率统计
iOS APP代码覆盖率统计 今年Q3季度领导给加了个任务要做前后端代码覆盖率统计, 鉴于对iOS代码代码比较熟就选择先从iOS端入手,折腾一整天后终于初步把流程跑通了记录如下 覆盖率监测的原理 Xc ...
- 【JavaScript】深入理解call,以及与apply、bind的区别
一.call call有两个妙用 1.继承(我前面的文章有提到用call实现call继承,有兴趣可以看下.https://www.cnblogs.com/pengshengguang/p/105476 ...
- 【深入浅出-JVM】(序)
本系列主要是让一个刚入门的 java 开发者,也能愉快的从零开始成为一个真正的 jvm 大神. 大纲 java 虚拟机的定义.总体架构.常用配置 垃圾回收算法.各类垃圾回收器 java 虚拟机对多线程 ...
- EF 使用遇到过的错误记录备忘
1. is only supported for sorted input in LINQ to Entities The method :只支持排序输入实体LINQ 的方法 是使用skip()时没 ...
- 【bfs基础】①
bfs,即广度优先搜索,主要通过队列(queue)进行操作. 稍微解释一下,队列是一种基础数据结构,其形态类似于一支长长的队伍,大概如下: 在C++中,队列的头文件定义为:#include<qu ...
- Java虚拟机知识点【内存】
运行时数据区 程序计数器(Program Counter) 每个线程独占自己的程序计数器.如果当前执行的方式不是native的,那程序计数器保存JVM正在执行的字节码指令的地址,如果是native ...
- SpringBoot2.x 整合Spring-Session实现Session共享
SpringBoot2.x 整合Spring-Session实现Session共享 1.前言 发展至今,已经很少还存在单服务的应用架构,不说都使用分布式架构部署, 至少也是多点高可用服务.在多个服务器 ...
- centos7 安装NVM 管理node
[转载] 转载自https://blog.csdn.net/shuizhaoshui/article/details/79325931 NVM git地址: https://github.com/cr ...