定重向

news/2024/9/29 11:40:29

$\quad $ 说一个随机数据很快的方法。

$\quad $ 考虑优化 \(O(Tn ^2)\) 的暴力,首先枚举删数的位置,然后求出此时的最小序列。

$\quad $ 我们发现,当此时枚举的序列已经大于答案序列了,再去枚举该位置就毫无意义了,直接停止枚举即可,这样就会有70分。

$\quad $ 那么还可以怎么优化呢?

$\quad $ 注意到当原序列某一段全是0的时候,我们去删除这其中的各个元素所求出的答案是一致的,那么就可以利用并查集,在枚举过一个0之后直接将其后连续的0跳过。

$\quad $ 题库数据太水了,这样直接就是800ms,已经比大部分 \(O(Tn)\) 的做法快了。但还是可以卡掉,只要让原序列前一半的数确定,后一半0和非零交替即可。

$\quad $ 这样这个做法就直接退化成 \(O(Tn ^2)\) 了,甚至不用多测。

在这放个码吧
#define yhl 0
#include<bits/stdc++.h>
const int N=2e5+10;
#define int long long
int t,n,a[N],fa[N];
bool vis[N];
inline int read(){int ans=yhl;char ch=getchar_unlocked();while(ch<'0'||ch>'9')ch=getchar_unlocked();while(ch>='0'&&ch<='9')ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar_unlocked();return ans;
}
void print(int x){(x>9)&&(print(x/10),yhl);putchar_unlocked(x%10|48);
}
inline int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);}
struct string{int a[N],siz;
}ans;
signed main(){freopen("repeat.in","r",stdin);freopen("repeat.out","w",stdout);t=read();while(t--){n=read();ans.siz=yhl;memset(vis,0,sizeof vis);for(int i=1;i<=n;i++)ans.a[++ans.siz]=n*n;for(int i=1;i<=n;i++)a[i]=read(),vis[a[i]]=(bool)a[i],fa[i]=i;for(int i=1;i<n;i++)(!a[i])&&(!a[i+1])&&(fa[i]=i+1);for(int i=1;i<=n;){int top=1;string op;op.siz=yhl;vis[a[i]]=yhl;bool flag=1,ft=yhl;for(int j=1;j<=n&&flag;j++){if(i!=j){if(!a[j]){while(vis[top])top++;op.a[++op.siz]=top;top++;}else op.a[++op.siz]=a[j];if(op.a[op.siz]<ans.a[op.siz])ft=1;if(!(ft)&&op.a[op.siz]>ans.a[op.siz])flag=yhl;}}vis[a[i]]=1;if(flag)ans=op;i=find(i)+1;}for(int i=1;i<=ans.siz;i++)print(ans.a[i]),putchar_unlocked(' ');putchar_unlocked('\n');}return yhl;
}

$\quad $ 自己封了个string,其实没什么必要。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

工作繁杂,如何防止工作遗漏遗忘?

来源:tita.com 不知道大家工作中是否有这样的情况:1.工作过程中工作任务经常被打断,打乱正常的工作节奏; 2.因为不方便统一记录工作及工作要求,经常忘记给领导反馈工作进展; 3.因为工作繁多,经常会出现工作遗漏遗忘的现象。 …… 如果你的工作计划出现了这样的问题,就是…

GaussDB数据库特性-物化视图简介

一、前言 随着企业数据量的不断增长和业务需求的复杂性增加,选择一个高效、可靠且智能的数据存储和管理解决方案变得越来越重要。GaussDB是一种先进的关系型数据库管理系统,为企业提供了强大的数据处理能力,其物化视图(Materialized Views)功能在数据查询和管理方面具有重…

微软账号注册

注册地址 https://signup.live.com/signup 少侠,我看你气度不凡天赋异禀,骨骼精奇,这么帅,来了就帮推荐一把吧 我的最近更新 最新发布文章、框架、咨询等,来看看吧

解决:PC微信弹窗《当前客户端版本过低,请前往应用商店升级到最新版本客户端后再登录》

目录1. 背景 2. 利用cheat Engine直接修改内存 3. 利用Python代码直接修改内存1. 背景虽然人类都是喜新厌旧的,但也不是什么东西都是新的好。今天换了台服务器,发现正常使用微信,弹窗提醒说版本太低了,根本不给登录。没办法啊,机器人只兼容这个版本的,只能到处找解决方案…

黑马PM-内容项目-需求收集管理

什么是需求需求如何收集 常见需求收集方式竞品分析用户访谈实地调研需求管理

浅浅记录学习情况叭

Basic Concepts对于一个给定的网络G=(V,E),其中V为网络的节点集,E为网络的边集. Trace(迹): 将G划分为q个社区,我们用一个qxq的对称矩阵e来表示该划分,e中的每个元素表示连接社区i与社区j的边在G的全部边中所占的比例显然有∑i,jeij=1。矩阵e的迹Tr(e)表示连接社区内部节点的边…

sentinel-transport-SPI-HeartbeatSenderInitFunc

说明 我们引入以下依赖<dependency><groupId>com.alibaba.csp</groupId><artifactId>sentinel-transport-simple-http</artifactId><version>1.8.6</version> </dependency>配置环境变量-Dcsp.sentinel.dashboard.server=loca…

这些年出版的书籍——归档整理

随着出版的书籍越来越多,收到的各种邮件也越来越频繁,遂于百忙之中,抽空整理一下书籍相关的资料和信息。《ASP.NET MVC企业级实战》出版日期:2017年3月目录:https://www.cnblogs.com/jiekzou/p/5625762.html随书源码:因某些原因,原百度云盘下载地址已被封,qq群文件里面…