题解 CF1550C. Manhattan Subarrays (思维)
来源:Educational Codeforces Round 111 (Rated for Div. 2)
不难但很好的思维题
设 \(d(p,q)\) 为 \(p,q\) 两点之间的曼哈顿距离
给定三个点,如果 \(d(p,r) = d(p,q) + d(q,r)\) 则三个点是
坏三元组。在给定的序列中每个点都是 \((b_i,i)\) 请判断序列中有多少个好子序列,长度为 \(1\) 和 \(2\) 也为好序列
在 \(i < j < k\) 的情况下, \(d(p,r) = d(p,q) + d(q,r)\) 可以直接转化为:\(|b_i - b_k| = |b_i - b_j| + |b_j - b_k|\)
正如 \(i < j < k\) 一样,如果 \(b_i \le b_j \le b_k\) 或者 \(b_i \ge b_j \ge b_k\) 时肯定是坏序列了
所以我们可以直接遍历判断情况
代码
int main() {
cin.tie(nullptr)->sync_with_stdio(false);
int _; for (cin >> _; _--;) {
int n;
cin >> n;
vectora(n);
auto check = [&](int L, int R) {
for (int i = L; i <= R; ++i)for (int j = i + 1; j <= R; ++j)
for (int k = j + 1; k <= R; ++k) {
if (a[i] <= a[j] and a[j] <= a[k]) return 0;
if (a[i] >= a[j] and a[j] >= a[k]) return 0;
}
return 1;
};
int ans = 0;
for (int &x : a) cin >> x;
for (int i = 0; i < n; ++i)
for (int j = i; j < n; ++j)
if (check(i, j)) ans += 1;
else break;
cout << ans << "\n";
}
}
题解 CF1550C. Manhattan Subarrays (思维)的更多相关文章
- 第十五届北京师范大学程序设计竞赛现场决赛题解&源码(A.思维,C,模拟,水,坑,E,几何,思维,K,字符串处理)
#include <bits/stdc++.h> using namespace std; int main() { int T,n,a,b; while(cin>>T) { ...
- 2021record
2021-10-14 P2577 [ZJOI2004]午餐 2021-10-13 CF815C Karen and Supermarket(小小紫题,可笑可笑) P6748 『MdOI R3』Fall ...
- noip做题记录+挑战一句话题解?
因为灵巧实在太弱辽不得不做点noip续下命QQAQQQ 2018 积木大赛/铺设道路 傻逼原题? 然后傻逼的我居然检查了半天是不是有陷阱最后花了差不多一个小时才做掉我做过的原题...真的傻逼了我:( ...
- BZOJ 2734 洛谷 3226 [HNOI2012]集合选数【状压DP】【思维题】
[题解] 思维题,看了别人的博客才会写. 写出这样的矩阵: 1,3,9,... 2,6,18,... 4,12.36,... 8,24,72,... 我们要做的就是从矩阵中选出一些数字,但是不能选相邻 ...
- 「题解」「CF1019B」The hat
目录 题目 背景 程序输出 交互程序输入 题解 程序 题目 背景 这是一道交互题. 一共有 \(n\) 个人做成一圈,他们的编号从 \(1\) 到 \(n\). 现在每个人的手里面都有一个数字 \(a ...
- TC SRM 593 DIV2 1000
很棒的DP,不过没想出,看题解了..思维很重要. #include <iostream> #include <cstdio> #include <cstring> ...
- bzoj 1925: [Sdoi2010]地精部落
Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从左到右的 N 段,每段有一个独一无二的高度 Hi, ...
- BZOJ5018: [Snoi2017]英雄联盟
Description 正在上大学的小皮球热爱英雄联盟这款游戏,而且打的很菜,被网友们戏称为「小学生」.现在,小皮球终于受不 了网友们的嘲讽,决定变强了,他变强的方法就是:买皮肤!小皮球只会玩N个英雄 ...
- 【CF903G】Yet Another Maxflow Problem 线段树
[CF903G]Yet Another Maxflow Problem 题意:一张图分为两部分,左边有n个点A,右边有m个点B,所有Ai->Ai+1有边,所有Bi->Bi+1有边,某些Ai ...
- Communication System(动态规划)
个人心得:百度推荐的简单DP题,自己做了下发现真得水,看了题解发现他们的思维真得比我好太多太多, 这是一段漫长的锻炼路呀. 关于这道题,我最开始用DP的思路,找子状态,发现自己根本就不会找DP状态数组 ...
随机推荐
- Vue04-vue-router
vue-router 目前前端流行的三大框架, 都有自己的路由实现: Angular:ngRouter React:ReactRouter Vue:vue-router Vue Router 是 Vu ...
- 【Javaweb】tomcat目录介绍
bin 专门用来存放tomcat服务器的可执行程序 conf 专门用来存放tomcat服务器的配置文件 lib 专门用来存放tomcat服务器的jar包 logs 专门用来存放tomcat服务器运行时 ...
- 通过Span实现高性能数组,实例解析
Span<T> 是 C# 7.2 引入的一个强大的数据结构,用于表示内存中的一块连续数据.它可以用于实现高性能的数组操作,而无需额外的内存分配.在本文中,我将详细介绍如何使用 Span&l ...
- DevOps|研发提效-敏捷开发之每日站立会
对于研发效能团队建设和组织,本文不再赘述,可以参考之前的文章,已经讲得很透彻了.本文重点讲我们日常是怎么开站立会,怎么让团队跑起来,高效能产出的.每日站立会,15分钟到30分钟,看似非常短的一个会,但 ...
- 【漏洞分析】Reflection Token 反射型代币攻击事件通用分析思路
在本篇文章中,我将通过一个攻击事件引出 Reflection Token 攻击事件的一个通用分析思路. 关于 Reflection Token 的其他案例分析,可以参考BEVO代币攻击事件分析及复现一 ...
- MongoDB (操作数据库,操作集合,操作文档)的笔记
https://www.bilibili.com/video/BV1gV411H7jN/?spm_id_from=333.999.0.0&vd_source=92305fa48ea41cb7b ...
- 可视化学习:WebGL的基础使用
引言 继续复习可视化的学习.WebGL和其他Web端的图形系统存在很大的不同,是OpenGL ES规范在浏览器的实现,它最大的不同就在于它更接近底层,可以由开发者直接操作GPU来实现绘图,性能很好,可 ...
- GKCTF2020WP-Crypto Misc
Crypto 小学生的密码学 题目 e(x)=11x+6(mod26) 密文:welcylk (flag为base64形式) 我的解答: 考点:仿射密码,已知a,b 结果base64加密即可 flag ...
- .Net中的AutoScrollPosition问题 (panel 滚动条的位置设定)
本文转自:http://www.cnblogs.com/h2appy/archive/2008/04/23/1167400.html 有Panel类型的窗体panel1,其AutoScroll设为了T ...
- Windows Server 2019/2016 配置自动更新和更换大陆更新服务器
文章原地址: 运行 > gpedit.msc -> 计算机配置 -> 管理模板 -> Windows 组件 -> Windows 更新 下面中右侧三个选项是本篇教程中会介 ...