Codeforces Round 987 (Div. 2) ABCD

链接:

Codeforces Round 987 (Div. 2)

A:Penchick and Modern Monument

大意:

       单调非增序列操作多少步变成单调非减

思路:

       最后的数一定是相同的,为出现次数最多的那个数,结果就是n减去出现次数最多的数

代码:

#include <bits/stdc++.h>using namespace std;
#define int long long
const int N = 2e5 + 10, INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
#define pb push_back
#define  vi vector<int>
#define  vvi vector<vector<int>>
#define  vii vector<pair<int, int>>
#define ff first 
#define ss second 
// ++   ~!    */+-    <<>>    <>  ==   &^|   &&|| =void solve()
{int n;cin >> n;vi a(n + 1);for (int i = 1; i <= n; i++)cin >> a[i];int mx = 0;for (int i = 1; i <= n; i++){int j = i;while (i <= n && a[i] == a[j])i++;mx = max(i - j, mx);i--;}cout << n - mx << endl;
}signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t = 1;cin >> t;while (t--) solve();return 0;
}
/*   /\_/\
*   (= ._.)
*   / >  \>
*/

 B:Penchick and Satay Sticks

大意:

        一个排列转换成123456...n的最小字典序排列,每次转换只能相邻1个并且数值不能相差超过1,求是否能转换 

思路:

        相差不能超过1,则只能与位置相邻的数进行交换,即如果i不在位置i上,必然就在位置i-1或者i + 1上,如果都没有,就不能转换

        那么可以从左到右遍历,如果 i !=a[i] 并且跟后边差1,就跟右边交换即可,换完还不等,就不能转换

代码:

#include <bits/stdc++.h>using namespace std;
#define int long long
const int N = 2e5 + 10, INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
#define pb push_back
#define  vi vector<int>
#define  vvi vector<vector<int>>
#define  vii vector<pair<int, int>>
#define ff first 
#define ss second 
// ++   ~!    */+-    <<>>    <>  ==   &^|   &&|| =void solve()
{int n;cin >> n;vi a(n + 1);for (int i = 1; i <= n; i++)cin >> a[i];for (int i = 1; i <= n; i++){if (a[i] != i){if(i + 1 <= n && a[i + 1] == i && abs(a[i + 1] - a[i])==1)swap(a[i], a[i + 1]);else{cout << "NO" << endl;return;}}}cout << "YES" << endl;
}signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t = 1; cin >> t;while (t--) solve();return 0;
}
/*   /\_/\
*   (= ._.)
*   / >  \>
*/

C:Penchick and BBQ Buns

大意:

        给一个长度n的每个点上都赋一个值,如果赋了相同的值,任意两个相同的值之间要满足距离之差等于某个整数的平方和,求赋值方案,没有则输出-1

思路:

        先对n进行奇偶分析,如果偶数的话就好了,直接两两相邻,距离差为1

        奇数的话可以转换成偶数的情况,我们需要一个三个点的那就是距离为9和距离为16的,最小的情况下给1,10,26同种,发现1-10之间可以填偶数个,直接填就行,10到26之间填奇数个,可以多一个距离差为4的一个在10-26之内,一个在之外,这样距离差为4的里面再塞一对,前面的几对也塞一下就行了,所以27是最小的奇数合法情况

代码:

#include <bits/stdc++.h>using namespace std;
#define int long long
const int N = 2e5 + 10, INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
#define pb push_back
#define  vi vector<int>
#define  vvi vector<vector<int>>
#define  vii vector<pair<int, int>>
#define ff first 
#define ss second 
// ++   ~!    */+-    <<>>    <>  ==   &^|   &&|| =void solve()
{int n;cin >> n;if (n & 1){if (n < 27)cout << -1 << endl;else{vi ans(n + 1);int cnt = 2;int num = 0;for (int i = 1; i <= n; i++){if (i == 1 || i == 10 || i == 26)ans[i] = 1e6;else if (i == 23 || i == 27)ans[i] = 1e6-1;else{ans[i] = cnt;num++;if (num == 2){num = 0;cnt++;}}}for (int i = 1; i <= n; i++)cout << ans[i] << ' ';}}else{int num = n / 2;for (int i = 1; i <= num; i++)cout << i << " " << i << " ";cout << endl;}}signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t = 1;cin >> t;while (t--) solve();return 0;
}
/*   /\_/\
*   (= ._.)
*   / >  \>
*/

D:Penchick and Desert Rabbit

大意:

        一个数组,位于i的数可以跳到右边比他小的数,可以跳到左边比他大的数,求从每一位开始最后可以跳到的最大数

思路:

        有一个性质就是,一个数如果能跳到另一个数上,那么这两个位置的答案会一样

        首先要想的是要跳到最大,应该是先往右跳,跳到最靠右的,然后往左跳才会有最大的,但是从左到右找最靠右的不太好找,pass

        从右往左找的话,可以知道最靠右的就是自己,然后这个的答案就是前n个取最大,并且可知右边的能跳的肯定大于等于左边的能跳到的数,对于位置i,直接取i后面数的最小值,看看i是否大于后面最小值,如果大于,那么,那么i肯定直接或间接能到i + 1,那么i的答案跟i + 1的答案是相同的;如果小于等于,那么i到不了右边任何一个,只能取前面的最大值。

        所以求一下前缀最大值和后缀最小值依次从右往左即可。

代码:

#include <bits/stdc++.h>using namespace std;
#define int long long
const int N = 2e5 + 10, INF = 0x3f3f3f3f;
const int mod = 1e9 + 7;
#define pb push_back
#define  vi vector<int>
#define  vvi vector<vector<int>>
#define  vii vector<pair<int, int>>
#define ff first 
#define ss second 
// ++   ~!    */+-    <<>>    <>  ==   &^|   &&|| =void solve()
{int n;cin >> n;vi a(n + 1);for (int i = 1; i <= n; i++)cin >> a[i];vi ans(n + 1), p(n + 1), s(n + 1);p[1] = a[1], s[n] = a[n];for (int i = 2; i <= n; i++)p[i] = max(p[i - 1], a[i]);for (int i = n - 1; i > 0; i--)s[i] = min(a[i], s[i + 1]);ans[n] = p[n];for (int i = n - 1; i; i--){if (p[i] > s[i + 1])ans[i] = ans[i + 1];else ans[i] = p[i];}for (int i = 1; i <= n; i++)cout << ans[i] << ' ';cout << endl;
}signed main()
{ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);int t = 1;cin >> t;while (t--) solve();return 0;
}
/*   /\_/\
*   (= ._.)
*   / >  \>
*/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/473237.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【H3C华三 】VRRP与BFD、Track联动配置案例

原创 厦门微思网络 组网需求 如图1所示&#xff0c;区域A和区域B用户所在网络的出口处部署了两台汇聚层设备&#xff08;Device A和Device B&#xff09;。 现要求使用VRRP与BFD、Track联动功能&#xff0c;实现以下需求&#xff1a; • 在Device A和Device B上分别配置两个…

LeetCode --- 143周赛

题目列表 3345. 最小可整除数位乘积 I 3346. 执行操作后元素的最高频率 I 3347. 执行操作后元素的最高频率 II 3348. 最小可整除数位乘积 II 一、最小可整除数位成绩I 由于本题的数据范围比较小&#xff0c;我们直接暴力枚举即可&#xff0c;代码如下 class Solution { p…

从建立TRUST到实现FAIR:可持续海洋经济的数据管理

1. 引言 随着我们对信息管理方式的信任&#xff0c;我们的社会对数字化数据的以来呈指数级增长。为了跟上大数据的需求&#xff0c;通过不断的努力和持续实践&#xff0c;对“good”数据管理方式的共识也在不断发展和演变。 加拿大正在建设国家基础设施和服务以及研究数据管理…

微服务即时通讯系统的实现(客户端)----(2)

目录 1. 将protobuf引入项目当中2. 前后端交互接口定义2.1 核心PB类2.2 HTTP接口定义2.3 websocket接口定义 3. 核心数据结构和PB之间的转换4. 设计数据中心DataCenter类5. 网络通信5.1 定义NetClient类5.2 引入HTTP5.3 引入websocket 6. 小结7. 搭建测试服务器7.1 创建项目7.2…

SpringBoot集成itext导出PDF

添加依赖 <!-- PDF导出 --><dependency><groupId>com.itextpdf</groupId><artifactId>itextpdf</artifactId><version>5.5.11</version></dependency><dependency><groupId>com.itextpdf</groupId>&l…

[ACTF2020]Upload 1--详细解析

信息收集 题目告诉我们是一道upload&#xff0c;也就是文件上传漏洞题目。 进入界面&#xff0c;是一个灯泡&#xff0c;将鼠标放在图标上就会出现文件上传的相应位置&#xff1a; 思路 文件上传漏洞&#xff0c;先看看有没有前端校验。 在js源码中找到了前端校验&#xff…

针对股票评论的情感分类器

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;编程探索专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月16日13点39分 神秘男子影, 秘而不宣藏。 泣意深不见, 男子自持重, 子夜独自沉。 论文链接 点击开启你的论文编程之旅…

大数据-226 离线数仓 - Flume 优化配置 自定义拦截器 拦截原理 了 拦截器实现 Java

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; Java篇开始了&#xff01; 目前开始更新 MyBatis&#xff0c;一起深入浅出&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff0…

【工具插件类教学】在 Unity 中使用 iTextSharp 实现 PDF 文件生成与导出

目录 一、准备工作 1. 安装 iTextSharp 2. 准备资源文件 二、创建 ExportPDFTool 脚本 1、初始化 PDF 文件,设置字体 2、添加标题、内容、表格和图片 三、使用工具类生成 PDF 四、源码地址 在 Unity 项目中,我们有时会需要生成带有文本、表格和图片的 PDF 文件,以便…

【Node.js】使用 Node.js 需要了解多少 JavaScript?

在现代开发中&#xff0c;Node.js 已经成为了构建高性能、可扩展的服务器端应用的必备工具。作为一个基于 JavaScript 的运行时环境&#xff0c;Node.js 使得开发者能够使用同一种语言来编写前后端代码&#xff0c;这在全栈开发中尤为重要。那么&#xff0c;使用 Node.js 开发时…

GRE做题笔记(零散的个人经验)

locomotive机车By 1813, the Luddite resistance had all but vanished. all but表示“几乎完全”的程度&#xff0c;或者表示排除piston活塞attributed to 归因于how a sportsperson accounted for their own experience of stress 运动员如何解释自己的压力经历 &#xff0c;…

Android OpenGL ES详解——实例化

目录 一、实例化 1、背景 2、概念 实例化、实例数量 gl_InstanceID 应用举例 二、实例化数组 1、概念 2、应用举例 三、应用举例——小行星带 1、不使用实例化 2、使用实例化 四、总结 一、实例化 1、背景 假如你有一个有许多模型的场景&#xff0c;而这些模型的…

Python3.11.9+selenium,选择证书用多线程+键盘enter解决

Python3.11.9+selenium,选择证书用多线程+键盘enter解决 1、遇到问题:弹出证书选择,无法点击确定 import pyautogui pyautogui.press(enter) 键盘enter也无法点击 2、解决办法:用多线程解决同时执行click链接和Enter点击证书的确定 1、点击操作 # # 通过文本链接文本…

[Android]相关属性功能的裁剪

1.将home界面的search bar 移除 /src/com/android/launcher3/graphics/LauncherPreviewRenderer.java // Add first page QSBif (FeatureFlags.QSB_ON_FIRST_SCREEN) {CellLayout firstScreen mWorkspaceScreens.get(FIRST_SCREEN_ID);View qsb mHomeElementInflater.infla…

linux笔记(防火墙)

一、概述 防火墙的作用 在 Linux 系统中&#xff0c;防火墙用于控制进出系统的网络流量&#xff0c;基于预定义的安全规则允许或拒绝数据包&#xff0c;从而保护系统免受未经授权的访问、恶意攻击&#xff0c;并确保网络服务的安全运行。 二、常见的 Linux 防火墙软件 iptabl…

WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇

WebRTC视频 01 - 视频采集整体架构 WebRTC视频 02 - 视频采集类 VideoCaptureModule [WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇]&#xff08;本文&#xff09; WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇 WebRTC视频 05 - 视频采集类 VideoCaptureDS 下篇 一、前…

高光谱深度学习调研

综述 高光谱深度学习只有小综述&#xff0c;没有大综述。小综述里面场景分类、目标检测的综述比较多。 Wang C, Liu B, Liu L, et al. A review of deep learning used in the hyperspectral image analysis for agriculture[J]. Artificial Intelligence Review, 2021, 54(7)…

计算机视觉 1-8章 (硕士)

文章目录 零、前言1.先行课程&#xff1a;python、深度学习、数字图像处理2.查文献3.环境安装 第一章&#xff1a;概论1.计算机视觉的概念2.机器学习 第二章&#xff1a;图像处理相关基础1.图像的概念2.图像处理3.滤波器4.卷积神经网络CNN5.图像的多层表示&#xff1a;图像金字…

24-Ingest Pipeline Painless Script

将文档中的tags字段按照逗号&#xff08;,&#xff09;分隔符进行分割。 同时为文档&#xff0c;增加一个字段。blog查看量 DELETE tech_blogs#Blog数据&#xff0c;包含3个字段&#xff0c;tags用逗号间隔 PUT tech_blogs/_doc/1 {"title":"Introducing big …

【ubuntu18.04】vm虚拟机复制粘贴键不能用-最后无奈换版本

我是ubuntu16版本的 之前费老大劲安装的vmware tools结果不能用 我又卸载掉&#xff0c;安装了open-vm-tools 首先删除VMware tools sudo vmware-uninstall-tools.pl sudo rm -rf /usr/lib/vmware-tools sudo apt-get autoremove open-vm-tools --purge再下载open-vm-tools s…