题意

第一行输入一个正整数 \(T(1 \leq T \leq 1000)\),代表共有 \(T\) 组测试用例,对于每组测试用例:

第一行输入一个正整数 \(n(4 \leq n \leq 5000)\),第二行输入 \(n\) 个正整数 \(p_i(1 \leq p_i \leq n)\)。

对于 \(1 \leq i < j < k < l \leq n\),若有 \(a_i < a_k,a_j > a_l\)成立,我们称 \([a_i, a_j, a_k, a_l]\) 是合法四元组。

你需要统计出合法四元组的数目。

题解

有关三元组、四元组之类的题型,通常先思考中间的数,再思考两端的数,是比较容易的思考方式。

观察数据范围,\(4 \leq n \leq 5000\),因此时间复杂度只需要控制在 \(O(n^2)\) 及以内即可。

那不妨枚举 \(a_j\) 和 \(a_k\),此时\(a_i\) ∈ {\(a_1, a_2, ..., a_{j-1}\)},\(a_l\) ∈ {\(a_{k+1}, a_{k+2}, ..., a_{n}\)}。对于前 \(j - 1\) 个元素,使用插入排序进行维护,随后可以用二分法维护出满足 \(a_i < a_k\) 的数对数量。对于后 \(n-k\) 个元素,使用 \(cnt\) 统计满足 \(a_j > a_l\) 的数对数量,当 \(k\) 往后移动时,同步维护新的 \(cnt\)。

参考代码

void solve() {
ans = 0LL;
cin >> n;
for (int i = 0; i < n; ++ i) cin >> a[i];
for (int i = 1, j; i < n - 2; ++ i) {
int cnt = 0;
int itemp = a[i - 1];
for (j = i - 2; j >= 0; -- j) {
if (itemp < a[j]) a[j + 1] = a[j];
else break;
}
a[j + 1] = itemp;
for (j = i + 1; j < n; ++ j) cnt += a[i] > a[j];
for (j = i + 1; j < n; ++ j) {
cnt -= a[i] > a[j];
if (!cnt) break;
ans += (lower_bound(a, a + i, a[j]) - a) * cnt;
}
}
cout << ans << '\n';
}

【处理元组有关的题型的技巧】codeforces 1677 A. Tokitsukaze and Strange Inequality的更多相关文章

  1. codeforces 373 A - Efim and Strange Grade(算数模拟)

    codeforces 373 A - Efim and Strange Grade(算数模拟) 原题:Efim and Strange Grade 题意:给出一个n位的实型数,你可以选择t次在任意位进 ...

  2. CTF web题型解题技巧

    工具集 基础工具:Burpsuite,python,firefox(hackbar,foxyproxy,user-agent,swither等) 扫描工具:nmap,nessus,openvas sq ...

  3. codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)

    题目链接:http://codeforces.com/contest/842/problem/D 题解:像这种求一段异或什么的都可以考虑用字典树而且mex显然可以利用贪心+01字典树,和线段树差不多就 ...

  4. Codeforces - 1191F - Tokitsukaze and Strange Rectangle - 组合数学 - 扫描线

    https://codeforces.com/contest/1191/problem/F 看了一下题解的思路,感觉除了最后一段以外没什么启发. 首先离散化x加快速度,免得搞多一个log.其实y不需要 ...

  5. Tokitsukaze and Strange Rectangle CodeForces - 1191F (树状数组,计数)

    大意: 给定$n$个平面点, 定义集合$S(l,r,a)$表示横坐标$[l,r]$纵坐标$[a,\infty]$内的所有点. 求可以得到多少种不同的集合. 从上往下枚举底层最右侧点, 树状数组统计贡献 ...

  6. Codeforces 1190D. Tokitsukaze and Strange Rectangle

    传送门 注意到矩形往上是无限的,考虑把点按 $y$ 从大到小考虑 对于枚举到高度为 $h$ 的点,设当前高度大于等于 $h$ 的点的所有点的不同的 $x$ 坐标数量为 $cnt$ 那么对于这一层高度 ...

  7. Codeforces Round #430 (Div. 2) 【A、B、C、D题】

    [感谢牛老板对D题的指点OTZ] codeforces 842 A. Kirill And The Game[暴力] 给定a的范围[l,r],b的范围[x,y],问是否存在a/b等于k.直接暴力判断即 ...

  8. 学习Python--函数进阶

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形 ...

  9. python函数进阶(函数参数、返回值、递归函数)

    函数进阶 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数根据 有没有参数 以及 有没有返回值,可以 相互组合,一共有 4 种 组合形 ...

  10. python基础7 - 函数2

    4. 使用元组让函数返回多个值 利用 元组 同时返回温度和湿度 def measure(): """返回当前的温度""" temp = 39 ...

随机推荐

  1. SpringBoot——更换Tomcat服务器为 Jetty 服务器

    Jetty服务器(可能会用到) Jetty 比 Tomcat更轻量级,可拓展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换为Jetty 首先要启动Jetty服务器  -->  ...

  2. HuggingChat macOS 版现已发布

    Hugging Face 的开源聊天应用程序 Hugging Chat,现已推出适用于 macOS 的版本. 主要特点 Hugging Chat macOS 版本具有以下亮点: 强大的模型支持: 用户 ...

  3. Nuxt.js 应用中的 app:suspense:resolve 钩子详解

    title: Nuxt.js 应用中的 app:suspense:resolve 钩子详解 date: 2024/10/6 updated: 2024/10/6 author: cmdragon ex ...

  4. Diffusion系列 - DDPM 公式推导 + 代码 -(二)

    Denoising Diffusion Probabilistic Model(DDPM)原理 1. 生成模型对比 记 真实图片为 \(x_0\),噪声图片为 \(x_t\),噪声变量 \(z\sim ...

  5. iOS关于列表布局的几种实现方式小结

    最近在项目开发中,遇到了常见的列表布局样式,功能的要求是最多六行,动态展示.当时想到的方案是,抽象出一个cell,初始化六个标签,动态的控制显示和隐藏,这样功能上没有问题,就是代码有些冗余.请教了身边 ...

  6. 11 Self-Attention相比较 RNN和LSTM的优缺点

    博客配套视频链接: https://space.bilibili.com/383551518?spm_id_from=333.1007.0.0 b 站直接看 配套 github 链接:https:// ...

  7. FluxCD 多集群应用的设计与实现

    前言 FluxCD 是 CNCF 的孵化项目,可以让我们以 GitOps 的方式轻松地交付应用.和另一个同类的 CNCF 孵化项目 ArgoCD 不同,FluxCD 是许多 toolkit 的集合,天 ...

  8. PHP中$GLOBALS和global的区别,简单了解符号表、zval

    前言 单位里有一套老代码,写了这么一个换库逻辑. function conn() { global $conn; if ($conn) { unset($conn); } $conn = mysqli ...

  9. React 防抖(Debounce)Hook

    防抖动 (debounce)是常见的需求,那么如何搭配 React Hooks 实现防抖动呢,下面演示两种方案. 方案一 副作用防抖 /** * * @param {React.EffectCallb ...

  10. ESP8266+ MQTT+SG90(舵机) platformio

    ESP8266 + MQTT + SG90(舵机) platformio 连线 ESP8266 MG90S(舵机) GND 棕色 VCC 红色 模拟引脚 橙色 源代码 https://gitee.co ...