题意

传送门

题解

发现n≤5000n \leq 5000n≤5000,那么我们自然想到O(n2)O(n^2)O(n2)预处理之后O(1)O(1)O(1)回答询问。

先考虑一个更简单的问题,如果f[i][j]f[i][j]f[i][j]表示在区间[l,r][l,r][l,r]中,满足k∈(l,r),a[k]+a[l]+a[r]=0k \in (l,r),a[k]+a[l]+a[r]=0k∈(l,r),a[k]+a[l]+a[r]=0的kkk的数量,那么我们是可以枚举左右端点,用一个桶做到O(n2)O(n^2)O(n2)预处理fff的。

那么fff与最后的答案是什么关系呢?最后要求的是:在一段区间内,左右端点不强制选的方案数。这隐隐约约的有点像是fff数组的一个前缀和。

我们可以考虑先求出s[l][r]s[l][r]s[l][r]表示左端点在[1,l][1,l][1,l]内,右端点在[1,r][1,r][1,r]内的总方案数。这就真的是fff的二位前缀和了。

可以这么理解,把f[l][r]f[l][r]f[l][r]对应到平面上的一个点,那么s[l][r]s[l][r]s[l][r]就是从(1,1)(1,1)(1,1)到(l,r)(l,r)(l,r)的这个矩形中所有点的和。这样我们也就可以在O(n2)O(n^2)O(n2)的时间内求出sss。

同样的,最后的答案实际上是区间左右端点都在[l,r][l,r][l,r]内总答案。对应到平面上也就是左上角为(l,l)(l,l)(l,l),右下角为(r,r)(r,r)(r,r)的矩形中所有点的和。这样就可以通过sss来O(1)O(1)O(1)求答案了。

代码

注意开桶的时候需要平移值域

#include <bits/stdc++.h>
#define ll long long
#define MAX 5005
#define K 1000000
using namespace std;int n, Q;
int a[MAX], cnt[2000005];
ll s[MAX][MAX];int main()
{cin >> n >> Q;for(int i = 1; i <= n; ++i){scanf("%d", &a[i]), a[i] += K;}for(int i = 1; i <= n; ++i){for(int j = i+1; j <= n; ++j){if(j > i+1){if(a[i]+a[j] <= K*3 && a[i]+a[j] >= K) s[i][j] = cnt[K*3-a[i]-a[j]];}cnt[a[j]]++;}for(int j = i+1; j <= n; ++j){cnt[a[j]]--;}}for(int i = 1; i <= n; ++i){for(int j = 1; j <= n; ++j){s[i][j] += s[i-1][j]+s[i][j-1]-s[i-1][j-1];}}int l, r;while(Q--){scanf("%d%d", &l, &r);printf("%lld\n", s[r][r]-s[l-1][r]-s[r][l-1]+s[l-1][l-1]);}return 0;
}

【题解】洛谷P6006 [USACO20JAN]Farmer John Solves 3SUM G相关推荐

  1. 题解 洛谷P1365 WJMZBMR打osu! / Easy

    题解 洛谷P1365 WJMZBMR打osu! / Easy Date 2019.7.28 题目大意 给出一个长度为n的由o,x,?组成的字符串,对于每连续的a个o,就有a2分.同时,对于任意的?,有 ...

  2. 题解 洛谷 P3069 [USACO13JAN]牛的阵容Cow Lineup

    洛谷P3069[USACO13JAN]牛的阵容CowLineup\color{#00F}{洛谷\ P3069\ [USACO13JAN]牛的阵容Cow Lineup}洛谷 P3069 [USACO13 ...

  3. python刷题 NOI题库 python题解 洛谷、牛客网、AcWing 刷题等

    NOI题库 python题解-2022.01.07整理(1.1-1.3) NOI题库 python题解-2022.01.07整理(1.1-1.3)_dllglvzhenfeng的博客-CSDN博客 N ...

  4. 题解 洛谷P4473 【[国家集训队]飞飞侠】

    这道题今天我们考试考到了,第三题,最后只剩半小时了,随便打了个暴搜,最后竟然还没调完QAQ,我竟然连暴力都不会打了 咳咳,不扯了,下面开始说这道题的做法 由于N和M都不大于150最容易想到的是Floy ...

  5. 题解 洛谷 P4042 [AHOI2014/JSOI2014]骑士游戏

    洛谷P4042[AHOI2014/JSOI2014]骑士游戏\color{#00F}{洛谷\ P4042\ [AHOI2014/JSOI2014]骑士游戏}洛谷 P4042 [AHOI2014/JSO ...

  6. 题解 洛谷P1209 【[USACO1.3]修理牛棚 Barn Repair】

    题面: 题目描述 在一个夜黑风高,下着暴风雨的夜晚,farmer John的牛棚的屋顶.门被吹飞了. 好在许多牛正在度假,所以牛棚没有住满. 牛棚一个紧挨着另一个被排成一行,牛就住在里面过夜. 有些牛 ...

  7. 题解洛谷1179数字统计 记录问题

    文章目录 数字统计 一.思路1 二.思路二 优化 1.想法 2.代码 二.继续优化 不用类型转换 总结 数字统计 题目描述 请统计某个给定范围[L, R][L,R]的所有整数中,数字 22 出现的次数 ...

  8. P1541 乌龟棋 题解(洛谷,动态规划递推)

    题目:P1541 乌龟棋 感谢大神的题解(他的写的特别好) 写一下我对他的代码的理解吧(哎,蒟蒻就这能这样...) 代码: #include<bits/stdc++.h> #define ...

  9. 题解——洛谷 P2680 NOIP提高组 2015 运输计划

    树上差分加上二分答案 详细题解待填坑 #include <cstdio> #include <algorithm> #include <cstring> using ...

最新文章

  1. C# - list数据填充到Dataset里
  2. tensorflow学习(5.实际图片的读取以及lenet-5的搭建)
  3. 清洁代码_清洁单元测试
  4. pcb设计等长线误差_“背锅”盲区,光时域反射仪延长线实际使用测评
  5. 俞敏洪:新东方业务调整 为农村孩子捐献近八万套课桌椅
  6. (转) java 通过 jdbc 链接 ms sql server 中出现 no suitable driver for ...
  7. 稚晖君软件硬件开发环境总结
  8. 完成端口(Completion Port)详解
  9. Navicat删除注册表
  10. 小白易学--ps拼接图片教程之照片拼图
  11. www读取本地图片做微缩图
  12. 阿里云的专业技术认证分为哪些?为啥要获得阿里云的ACP认证!
  13. 双目立体视觉Bouguet矫正算法详解
  14. 利用kvaser和Python编写监控界面(1)
  15. 【A星算法的优化方案】
  16. 网络安全黑客攻击常见方式如何预防黑客攻击黑客思维
  17. Shodan:最令人恐惧的搜索引擎
  18. 【HDU】4411 Arrest 费用流
  19. Error parsing Mapper XML. The XML location is ‘com/xxxxx/com/system/mapper/XXXXMapper.xml‘.
  20. php 通过对话框获取参数,利用对话框提示用户输入参数的查询过程称为()

热门文章

  1. 对计算机辅助英语的看法,浅谈利用计算机辅助英语语言测试
  2. (三)Kotlin加密/解密之AES和DES
  3. 【期权系列】期权市场 PCR 指标的策略应用
  4. arcgis栅格数据平滑_ArcGIS教程:基于ArcGIS的栅格图像平滑处理
  5. RabbitMQ安装rabbitmq_delayed_message_exchange插件(死信队列所需插件)
  6. Unity下平面反射实现
  7. NOIP2016Day1总结
  8. 从零开始在 FreeNAS 的 Jail 上安装 NextCloud 并配置 Nginx 作为网页服务器而且 设置SSL证书 使用 https 访问 以及 oc_filecache 修复方法、优化方法
  9. 面试(hardware)
  10. angr - re - ais3_crackme