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 ...
随机推荐
- python查询elasticsearch(Query DSL) 实例
import datetime import sys import getopt import hashlib from elasticsearch import Elasticsearch &quo ...
- DBA主宰一切请求,MySQL 查询重写
这个功能一年左右之前就以知晓,应该是5.7的高版本中.今天难得有兴致测试.随之也就总结一下. 前言: 一般来说,我们都会让开发自己去改sql.这样需要重启应用,单节点不可避免有或多或少的停服时间.同事 ...
- 一套简单的web即时通讯——第一版
前言 我们之前已经实现了 WebSocket+Java 私聊.群聊实例,后面我们模仿layer弹窗,封装了一个自己的web弹窗 自定义web弹窗/层:简易风格的msg与可拖放的dialog,生成博客园 ...
- kafka入门(一)简介
1 什么是kafk Apache kafka是消息中间件的一种,在开始学习之前,先简单的解释一下什么是消息中间件. 举个例子,生产者消费者,生产者生产鸡蛋,消费者消费鸡蛋,生产者生产一个鸡蛋,消费者就 ...
- HDU 4812:D Tree(树上点分治+逆元)
题目链接 题意 给一棵树,每个点上有一个权值,问是否存在一条路径(不能是单个点)上的所有点相乘并对1e6+3取模等于k,输出路径的两个端点.如果存在多组答案,输出字典序小的点对. 思路 首先,(a * ...
- Java 中的字符串(String)与C# 中字符串(string)的异同
1. C# 中比较两个字符串字面量是否相等,可以使用 “==”比较运算符,是因为string 类型重写(override)了“==” 和 “!=” 运算符,在使用“==” 和 “!=” 进行字符串比较 ...
- 【Aizu - 0118】Property Distribution
-->Property Distribution 原文是日语,算了算了,直接上我大中华母语吧 Descriptions: 在H * W的矩形果园里有苹果.梨.蜜柑三种果树, 相邻(上下左右)的 ...
- String到底在内存中是如何存储的
String会出现在哪些地方 方法内的局部string 类内的字段String static string 容器中存储的string String数组 那么String的位置会影响其存储方式吗? 显然 ...
- 地图组件demo
高德地图API(demo未完善) 1:声请JSAPI的key值:http://lbs.amap.com/dev/#/(已声请key名称:demo-javascipt key:7cbbed2d9a0c0 ...
- Atom实用插件
下载atom狠戳本链接 中文简体插件(工具栏,右键菜单,设置菜单) simplified-chinese-menu 代码格式化插件(支持多种语言) atom-beautify 智能补全资源路径插件 a ...