NFLSOJ 做题记录

news/2025/3/22 13:32:12/文章来源:https://www.cnblogs.com/A1C3/p/18777984

2025/3/17

比赛场次:http://www.nfls.com.cn:20035/contest/1691

总用时:40min

通过:ABCD

未通过:E

E

题目描述

对于一个排列 \(p\),定义其价值为满足 \(p_i = i\) 的位置个数。

给定一个长度为 \(n\) 的序列 \(p\),现在要求把其中一段翻转,使得其价值最大。输出最优决策下相对于原序列增加的权值。

\(n \le 5 \times 10^5\)

Solution

首先计算原排列中的固定点数目,使用前缀和数组 \(s\),其中 \(s_i\) 表示前 \(i\) 个元素中的固定点数目。

对于每个可能的翻转区间 \([l, r]\),令 \(s = l+r\)。翻转后,原位置 \(i\) 的元素会被移动到位置 \(s-i\)。若翻转后的位置 \(j\) 满足 \(p_j = j\),则原元素必须满足 \(p_i = s-i\),即 \(p_i+i = s\)。因此,所有满足该条件的元素可能成为翻转后的固定点。

将满足 \(p_i+i = s\) 的元素 \(i\) 存入向量 \(vt_s\) 中。这样,每个 \(s\) 对应可能的翻转区间 \([l, r]\),其中 \(l + r = s\)

通过枚举所有可能的 \(s\) 和对应的 \(j\),找到最大增加的权值,即为所求结果。其中对于每个 \(s\),遍历 \(vt_s\) 中的元素 \(j\),计算翻转区间 \([\min(j, s-j), \max(j, s-j)]\) 带来的增加的权值。该增加的权值等于新增的固定点数目(即满足条件的元素数目)减去原区间内的固定点数目。时间复杂度为 \(O(n \log n)\)

#include <bits/stdc++.h>
using namespace std;
using LL = long long;
const int N = 5e5 + 7;
LL s[N<<1];
vector<LL> vt[N<<1];
int main() {int n;scanf("%d", &n);for (int i = 1; i <= n; ++i) {LL x;scanf("%lld", &x);vt[x+i].push_back(i);s[i] = s[i-1] + (x==i);}LL ans = 0;for (int i = 2; i <= n<<1; ++i)for (auto j : vt[i])ans = max(ans, upper_bound(vt[i].begin(), vt[i].end(), max(j, i-j))-lower_bound(vt[i].begin(), vt[i].end(), min(j, i-j))-s[max(j, i-j)]+s[min(j, i-j)-1]);printf("%lld", ans);return 0;
}

2025/3/21

比赛场次:http://www.nfls.com.cn:20035/contest/1694

总用时:1h

通过:

未通过:

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

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

相关文章

实验1 C语言输入输出和简单程序编写补充

任务二:判断它能否构成三角形 #include <stdio.h> int main(){ double a, b, c; scanf_s("%lf%lf%lf", &a, &b, &c); if ((a + b > c) && (a + c > b) && (b + c > a)) printf("能构成三角…

ASE15N45-ASEMI智能家居专用ASE15N45

ASE15N45-ASEMI智能家居专用ASE15N45编辑:ll ASE15N45-ASEMI智能家居专用ASE15N45 型号:ASE15N45 品牌:ASEMI 封装:TO-220 批号:最新 最大漏源电流:15A 漏源击穿电压:450V RDS(ON)Max:0.38Ω 引脚数量:3 沟道类型:N沟道MOS管、中低压MOS管 漏电流:ua 特性:N沟道M…

什么是RabbitMQ入门

一.什么是RabbitMQ 中间件(Middleware)是处于操作系统和应用程序之间的软件,也有人认为它应该属于操作系统中的一部分。人们在使用中间件时,往往是一组中间件集成在一起,构成一个平台(包括开发平台和运行平台),但在这组中间件中必须要有一个通信中间件,即中间件=平台+…

使用BL0937 IC进行交流电源监控

一个简单的电路来监测交流电源,接线板可以插在任何地方,显示电压,电流和功率。交流电源监控是当今物联网相关应用中的一个惊人功能,例如智能风扇,开关和板。一些优秀的公司董事会在他们的产品中实施了这项技术,并持续监控供应的输出功率。在本地设备层面监控电源有其自身…

20244224 实验一《Python程序设计》实验一报告

课程:《Python程序设计》 班级: 2442 姓名: 旦曾央京 学号:20244224 实验教师:王志强 实验日期:2025年3月18日 必修/选修: 公选课 1.实验内容 1.熟悉Python开发环境; 2.练习Python运行、调试技能; 3.编写程序,练习变量和类型、字符串、对象、缩进和注释等; 4.编…

【智慧构造题】CF1427E Xum

我们发现这个原数为奇数的条件比较神秘,于是我们考虑每次把这个数字第一位 \(1\) 给干了。 考虑怎么构造。 令 $d=\lfloor \log_2 x \rfloor $ 令 \(x=1abc1\) \(x1=1abc10000\) \(x2=1abc0abc1\) \(x3=x2+x1=1abc01abc1\) \(x4=x ⊕ x3=1abc000000\) \(x5=x1+x1=1abc100000…

DataGrip结果运行在代码区域

DataGrip运行过后发现运行的结果在代码区域解决方式进入设置界面 点击左上角File(文件)->settings(设置) 搜索栏输入results或output and results 找到下面的设置界面 找到Results下的 Show results in editor ,取消勾选

我们接着创建项目中的app

在pycharm中运行以下代码python manage.py startapp teslaapp运行后呢会在目录中在创建一个名字叫teslaapp的包接着我们还需要在项目Tesla包中的setting文件中 添加我们刚创建的app名称

CMU_15445_Project4_BonusTask_Serializable_Verification

Serializable Verification 我们知道 MVCC 并不能解决幻读以及写偏差的问题, 仅通过 MVCC 的事务调度是无法保证数据库引擎的 ACID 原则的, 那么为了保证数据库的 ACID 原则, 即使在调度的过程中无法保证, 可以通过在 Commit 的时候, 通过验证, Abort 可能造成写偏差于幻读的事…

使用低代码平台设计UI

由于自己不是专业的设计师,就自己简单画个UI界面,那么就可以用到下面的低代码平台 http://120.92.142.115:81/vform3/ 里面可以选择体验vue3模板 进入下面图中的设计界面可以自己拖动组件 修改组件展示给用户的标签名称 以及数据传输时发送的字段名称 可以设置是否必填 默认值…

使用 Hosting 构建 WPF 程序 - prism 篇

WPF + .NET Generic Host + Prism + CommunityToolkit.Mvvm在 使用 Hosting 构建 WPF 程序 - Stylet 篇 中,使用 Hosting + Stylet 的方式,构建了一个 WPF 框架, 本文用于记录使用 .NET Generic Host + Prism 构建 WPF 所需的修改,仅供参考。 示例代码:Jasongrass/Demo.Ap…

如何构建一个用于3D扫描的电动转台

在这个项目中,我将向您展示如何构建一个用于3D扫描的电动转台。这个DIY项目由三个主要部分组成:顶板、中央齿轮驱动板和底座。顶板保持静止,作为放置待扫描物体的平台。在设计的核心,中间板的特点是一个内部齿轮机构,隐藏在视线之外,这是由一个步进电机驱动。这个齿轮板旋…