当前位置: 首页 > news >正文

牛客小白月赛122 E

https://ac.nowcoder.com/acm/contest/119664

E

计算f(l,r)需要判断[l,r]是否为[1,l-1]+[r+1,n]的子序列(对此我们可以用双指针实现);
如果每次枚举(l,r)时都去判断一次,得到时间复杂度为O(n3*logn)对于n=2000不够;
我们考虑如何预处理以达到快速判断的目的;

方法一

分析

显然对于一个确定的l,若r满足条件,那么显然r-1也满足条件。我们可以通过枚举l,然后从大到小枚举r,找到rmax,那么比r小的都不必进行双指针判断。

更进一步,对于符合条件的(l,r),l增加时,rmax不增;可以进一步减小枚举量 时间复杂度O(n2

代码实现

#include <bits/stdc++.h>
using namespace std;
int n;
int P[10000];
bool check (int l, int r)//返回f(i,j)的值
{int x = l;for (int i = 1; i <= n; i++){if (i == l){i = r;continue;}if (x <= r && P[x] == P[i]){x++;}}return x == r + 1;
};
int main()
{cin >> n;for (int i = 1; i <= n; i++){cin >> P[i];}int ans = 0;for (int i = 2; i < n; i++)//枚举l{int l = i - 1, r = n - 1;while (l < r)//二分查找最大的r{int mid = (l + r + 1) >> 1;if (check(i, mid)){l = mid;}else{r = mid - 1;}}ans += l - i + 1;}cout << ans << endl;return 0;
}

方法二

分析

考虑 ll[i] 和 rr[i] :
ll[i] 是满足[i,i+x-1]是[1,i-1]的子序列的x的最大值
rr[i] 是满足[i-x+1,i]是[i+1,n]的子序列的x的最大值

那么f(i,j)==1等价于ll[l]+rr[r]>r-l;
时间复杂度O(n2

代码实现

#include<bits/stdc++.h>
using namespace std;
int p[10000], ll[10000], rr[10000];
int n;
bool check1(int i, int x) //起点 长度
{int k = i;int t = 1;while (t <= i - 1 ){if (p[k] == p[t]){k++;if (k == i + x)return 1;}t++;}return 0;
}
bool check2(int i, int x) //终点 长度
{int k = i - x + 1;int t = i + 1;while (t <= n){if (p[k] == p[t]){k++;if (k == i + 1)return 1;}t++;}return 0;
}
int main()
{cin >> n;for (int i = 1; i <= n; i++)cin >> p[i];for (int i = 2; i < n; i++){int l = 0, r = n;int mid;while (r - l >= 0){if (r == l){ll[i] = l;break;}mid = (l + r + 1) / 2;if (check1(i, mid))l = mid;elser = mid-1;}}for (int i = 2; i < n; i++){int l = 0, r = n;int mid;while (r - l >= 0){if (r == l){rr[i] = l;break;}mid = (l + r + 1) / 2;if (check2(i, mid))l = mid;elser = mid-1;}}int sum = 0;for (int l = 2; l < n; l++)for (int r = l; r < n; r++)if (ll[l] + rr[r] >= r - l+1)sum++;cout << sum;return 0;
}
http://www.rkmt.cn/news/23503.html

相关文章:

  • 深入解析:深度学习助力眼底疾病精准诊断:系统架构与设计思路解析
  • PCIe扫盲——物理层电气部分基础(二)之De-emphasis
  • 2025年10月豆包关键词排名优化推荐榜:十强服务商多维对比与中立选购指南
  • Open Bug Bounty 安全验证流程解析
  • 2025 年防腐瓦源头厂家最新推荐榜:聚焦塑钢防腐瓦 / PSP 塑钢覆合防腐瓦板等多类型产品,精选优质企业助力精准采购决策
  • uml九种类图介绍
  • 2025 年试验箱厂家最新推荐排行榜:涵盖高低温 / 恒温恒湿 / 冷热冲击等设备,精选研发实力强、质量管控严的优质品牌
  • 撼嗡幌佣渍话仝使卮哺
  • 2025年10月geo优化服务商推荐榜单:聚焦全平台同步优化能力的客观剖析
  • 2025 年试验台厂家最新推荐排行榜:聚焦振动 / 三轴向 / 垂直等类型,精选优质企业助您精准选型
  • 以Java向世界问好——JAVA程序运行机制———使用IDEA开发
  • 2025 年最新推荐铝单板厂家榜单:冲孔 / 木纹 / 双曲 / 氟碳 / 雕花 / 天花 / 外墙 / 金属 / 异型 / 石纹铝单板优选品牌推荐
  • 电脑格式化了还能恢复内容吗?硬盘格式化恢复教程分享
  • Docker Desktop实战、问题记录 - 指南
  • 10 18
  • 2025 年最新推荐!空压机租赁公司综合实力推荐榜单:涵盖无油 / 高压 / 阿特拉斯等机型及二手设备买卖置换,助力企业精准挑选服务商
  • 2025年10月AI搜索营销推荐排名:结合头部案例与合规资质的中立评价
  • 2025 年马赛克厂家最新推荐排行榜单:聚焦行业领军企业核心优势,涵盖陶瓷 / 游泳池 / 喷墨马赛克等多类型产品公司推荐
  • 2025 年最新推荐泳池砖厂家榜单:聚焦优质厂家,助力采购者选对游泳池砖 / 游泳馆砖 / 泳池防滑砖公司品牌推荐
  • 2025 年最新推荐!国内空调机组厂家权威排行榜,含冷凝热回收等多类型机组企业优选指南
  • 2025 年防火阀制造厂家最新推荐权威排行榜:防爆 / 70℃/280℃防火阀及执行机构优质企业全解析
  • 2025 年电动执行器厂家最新推荐排行榜:聚焦开关型 / 风门 / 风阀 / 弹簧复位 / 断电复位品类,精选优质企业助力采购决策
  • 2025 年锅炉厂家最新推荐排行榜:高效节能 + 环保智能核心优势剖析,优质品牌口碑指南蒸汽发生器厂家推荐
  • 2025 年陶瓷阀生产厂家最新推荐口碑榜:电动 / 气动 / 高温等多类型产品品质与用户反馈深度解析
  • 实用指南:【论文阅读】Segment Anything
  • 2025 年最新推荐!刀闸阀生产厂家综合实力榜单出炉,涵盖陶瓷 / 国标 / 电动 / 气动 / 密封 / 手动 / 法兰 / 铸铁多类型产品
  • 2025 年最新推荐!选矿药剂生产厂家实力榜单,覆盖多矿石类型高效环保药剂品牌汇总石英长石 / 赤铁矿褐铁矿锂云母锂辉石 / 石墨煤矿的选矿药剂推荐
  • 2025 年离心泵厂家最新推荐榜单:涵盖化工 / 卧式多级 / 不锈钢等多类型,帮企业选优质设备
  • 2025 年托盘厂家最新推荐榜,聚焦企业技术实力与市场口碑深度解析,筛选优质品牌助力企业采购
  • C# Avalonia 16- Animation- FrameBasedAnimation