abc392 题解合集

news/2025/2/15 21:29:51/文章来源:https://www.cnblogs.com/Kenma/p/18717426

\(perf:2000\)

啥啊。

越来越过分了是吧。

我现在不仅怀疑参赛者有人机,还怀疑出题者是人机。

D

以最中间的 \(1\) 作为基准点,两边向这个 \(1\) 靠拢即可。

复杂度 \(O(n)\)

#include<bits/stdc++.h>
#define int long long
using namespace std;
char ch;
int n,a[2000005],l,r,ans,cnt,tmp,p;
signed main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n;for(int i=1;i<=n;i++){cin>>ch;a[i]=ch-'0';} for(int i=1;i<=n;i++){if(a[i]) cnt++;}if(cnt<=1){cout<<0;return 0;}tmp=0;for(int i=1;i<=n;i++){if(a[i]) tmp++; if(tmp==(cnt+1)/2){p=i;break;}};l=p-1,r=p+1;for(int i=p-1;i>=1;i--){if(a[i]){a[l]=i;ans+=(l-i);l--;}}for(int i=p+1;i<=n;i++){if(a[i]){a[r]=i;ans+=(i-r);r++;}}cout<<ans;return 0;
}

E

预处理出每个数的所有因数,开个桶记录每个数作为因数的出现次数,查询每个数的因数中,出现次数至少为 \(k\) 的最大的即可。

复杂度 \(O(n \ln n)\)

#include<bits/stdc++.h>
using namespace std;
int n,k,maxn,ans,a[2000005],b[2000005];
vector<int> v[2000005];
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>k;for(int i=1;i<=n;i++){cin>>a[i];maxn=max(maxn,a[i]);}for(int i=1;i<=maxn;i++){for(int j=i;j<=maxn;j+=i){v[j].push_back(i);}}for(int i=1;i<=n;i++){for(int j=0;j<v[a[i]].size();j++){b[v[a[i]][j]]++;}}for(int i=1;i<=n;i++){ans=0;for(int j=0;j<v[a[i]].size();j++){if(b[v[a[i]][j]]>=k) ans=max(ans,v[a[i]][j]);}cout<<ans<<'\n';}return 0;
}

F

考虑 LIS 的一种 DP 方式:设 \(f_i\) 表示以 \(i\) 结尾的 LIS。

转移:

\[f_{a_i}=\max_{j=1}^{i-1} f_{j}+1 \]

用 BIT 可以优化到 \(O(n \log n)\)

考虑将询问挂到每个点上,从左到右扫维护 \(f\) 即可。

需要离散化。

复杂度 \(O((n+m)\log n)\)

#include<bits/stdc++.h>
using namespace std;
int n,m,maxn,x[2000005],k[2000005],a[2000005],ans[2000005];
struct node{int id,k;
};
vector<node> v[2000005];
vector<int> t;
#define lowbit(i) ((i)&(-(i)))
int c[2000005];
void modify(int x,int k){for(int i=x;i<=maxn;i+=lowbit(i)){c[i]=max(c[i],k);}
}
int query(int x){int ans=0;for(int i=x;i;i-=lowbit(i)){ans=max(ans,c[i]);}return ans;
}
int main(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];t.push_back(a[i]);}for(int i=1;i<=m;i++){cin>>x[i]>>k[i];t.push_back(k[i]); }sort(t.begin(),t.end());t.erase(unique(t.begin(),t.end()),t.end());maxn=t.size();for(int i=1;i<=n;i++){a[i]=lower_bound(t.begin(),t.end(),a[i])-t.begin()+1;}for(int i=1;i<=m;i++){k[i]=lower_bound(t.begin(),t.end(),k[i])-t.begin()+1;v[x[i]].push_back((node){i,k[i]});}for(int i=1;i<=n;i++){modify(a[i],query(a[i]-1)+1);for(int j=0;j<v[i].size();j++){ans[v[i][j].id]=query(v[i][j].k);}}for(int i=1;i<=m;i++){cout<<ans[i]<<'\n';}return 0;
}

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

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

相关文章

撑起计算机视觉半边天的ResNet【论文精读】

ResNet论文精读:深度残差学习如何重塑深度学习一、技术演进背景:深度网络的困境与突破 消失的梯度与退化问题 在ResNet提出之前,深度学习领域已通过VGGNet、GoogLeNet等模型验证了网络深度的重要性。然而,当网络深度超过20层时,研究者发现了一个反直觉现象:更深的网络反而…

2025多校冲刺省选模拟赛13

2025多校冲刺省选模拟赛13\(T1\) A. 逆序对 \(56pts\)原题: luogu P5972 [PA 2019] Desant部分分\(56pts\) :爆搜。点击查看代码 int a[50]; pair<int,ll>ans[50]; struct BIT {int c[50];int lowbit(int x){return x&(-x);}void add(int x,int val){for(int i=x;i…

使用 Git 命令和 Github 前须了解的知识

本文不包括 Git 命令的介绍与使用,只分享 Git 的关键概念与 Github 项目的基本工作流程。作者相信先了解它们对后续的学习和工作大有裨益。(如有错误和建议请大家评论告知)版本控制系统 VCS → Version Control System,版本控制系统 → 一个跟踪文件变化、记录修订情况、协…

leetcode hot 02

解题思路:找祖先从底向上递归后序遍历查找,遇到p,q或者空节点就直接返回对应值,当某个节点的左子树、右子树都返回了值,那么就说明该节点就是最近祖先节点,然后把该节点的值继续往上传,直到根节点返回结果。 /*** Definition for a binary tree node.* public class Tre…

Linux介绍及使用

一、linux介绍 1、Linux是一个免费、开源的操作系统,能多用户、多任务、支持多线程和多CPU的操作系统,相对windows更加稳定,在unix系统的基础上开发的系统; 注解:(1)免费:不要钱 (2)源代码公开 (3)多用户 :可以在不同用户操作 (4)多任务:同时执行多个任务 …

Maven 生命周期 Test 阶段遇到的一些问题

Q:无法使用@Test注解,报错 A:最初pom.xml中使用的Junit版本为3,Java 5于 2004 年发布,引入了注解作为语言的一部分。而Junit 3 是在这之前发布的,因此它无法使用注解,将pom.xml中的版本号改为<version>4.13.2</version>后问题解决,可使用@TestQ:在Maven启…

18. 信号

一、什么是信号在 Linux 中,信号是一种用于通知进程发生了某种事件的机制。信号可以由内核、其它进程或者命令行工具发送给目标进程。Linux 系统中由多种信号,每种信号都用一个唯一的数值表示。例如,常见的信号如下:SIGINT (2):这是当用户在终端按下 Ctrl+C 时发送给前台进…

【专题】DeepSeek技术颠覆or创新共赢,开启Al算法变革元年报告汇总PDF洞察(附原数据表)

原文链接: https://tecdat.cn/?p=39544 在科技飞速迭代的当下,人工智能领域正经历着深刻变革,AI Agent 的发展尤为引人瞩目。 随着数字化进程的加速,全球数据量呈指数级增长,如同为 AI Agent 的发展提供了丰沃土壤。海量数据不仅为模型训练提供了坚实基础,更驱动着 AI A…

Python梯度提升模型GBM生态学研究:SFS、RandomizedSearchCV预测黑腿蜱种群分布丰度可视化-

全文链接:https://tecdat.cn/?p=39232 原文出处:拓端数据部落公众号 广义线性模型一直是揭示自然种群分布和丰度背后生态过程的基础统计框架。然而,随着环境和生态数据的快速增长,分析这些大规模数据集需要更先进的统计方法。梯度提升树等现代机器学习框架,能有效识别复杂…

9.7.5 预测

这里的预测过程不是图\(9\)-$14,应该是下面这幅图,这里有误