正睿七连测 DAY5 T2
题是水题,也不难想,本来是想打暴力先过个小数据,
本来就想再搞搞优化试试能不能过,毕竟这个题理论上 O( $n^2$ ) 是能过的
主要是觉得这个优化很有可取之处,本来超时,一加这个优化就好很多了,一下就过了
改前的代码:

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define NUM 10010
using namespace std;
int n;
int a[NUM],dui[NUM];
struct dian{
int l,r;
char da;
};
dian ans[NUM];
int main(){
cin >> n;
for( int i = 1;i <= n;i++ ){
int t;
cin >> t;
a[i] = t + '0';
dui[t] = i;
}
ans[1].da = '1';ans[n].da = '1';
if( abs( dui[1] - dui[2] ) == 1 ){
ans[2].da = '1';
ans[2].l = min( dui[1],dui[2] );
ans[2].r = max( dui[1],dui[2] );
}
else ans[2].da = '0';
for( int i = 3;i < n;i++ ){
if( ans[i-1].da == '1' ){
if( a[ans[i-1].l-1] == i+'0' ){
ans[i].da = '1';
ans[i].l = ans[i-1].l - 1;
ans[i].r = ans[i-1].r;
continue;
}
if( a[ans[i-1].r+1] == i+'0' ){
ans[i].da = '1';
ans[i].l = ans[i-1].l;
ans[i].r = ans[i-1].r + 1;
continue;
}
ans[i].da = '0';
continue;
}
int ok = 1;
for( int j = 1;j <= n-i+1;j++ ){
int k;ok = 1;
for( k = 0;k <= i-1;k++ ){
if( a[k+j] > i+'0' ){
ok = 0;
break;
}
}
if( ok ){
ans[i].da = '1';
ans[i].l = j;
ans[i].r = j+i-1;
ok = 2;
break;
}
}
if( ok == 2 ) continue;
else ans[i].da = '0';
}
for( int i = 1;i <= n;i++ ){
cout << ans[i].da;
}
return 0;
}
改后的代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#define NUM 10010
using namespace std;
int n;
int a[NUM],dui[NUM];
struct dian{
int l,r;
char da;
};
dian ans[NUM];
int main(){
cin >> n;
for( int i = 1;i <= n;i++ ){
int t;
cin >> t;
a[i] = t + '0';
dui[t] = i;
}
ans[1].da = '1';ans[n].da = '1';
if( abs( dui[1] - dui[2] ) == 1 ){
ans[2].da = '1';
ans[2].l = min( dui[1],dui[2] );
ans[2].r = max( dui[1],dui[2] );
}
else ans[2].da = '0';
for( int i = 3;i < n;i++ ){
if( ans[i-1].da == '1' ){
if( a[ans[i-1].l-1] == i+'0' ){
ans[i].da = '1';
ans[i].l = ans[i-1].l - 1;
ans[i].r = ans[i-1].r;
continue;
}
if( a[ans[i-1].r+1] == i+'0' ){
ans[i].da = '1';
ans[i].l = ans[i-1].l;
ans[i].r = ans[i-1].r + 1;
continue;
}
ans[i].da = '0';
continue;
}
int ok = 1;
for( int j = 1;j <= n-i+1; ){
int k;ok = 1;
for( k = 0;k <= i-1;k++ ){
if( a[k+j] > i+'0' ){
ok = 0;
break;
}
}
if( ok ){
ans[i].da = '1';
ans[i].l = j;
ans[i].r = j+i-1;
ok = 2;
break;
}
if( k > 0 ) j = k+j;
else j++;
}
if( ok == 2 ) continue;
else ans[i].da = '0';
}
for( int i = 1;i <= n;i++ ){
cout << ans[i].da;
}
return 0;
}
以后还可以用这个优化,大大滴好使 (*^▽^*)
正睿七连测 DAY5 T2的更多相关文章
- 8.8 正睿暑期集训营 Day5
目录 2018.8.8 正睿暑期集训营 Day5 总结 A 友谊巨轮(线段树 动态开点) B 璀璨光滑 C 构解巨树 考试代码 A B C 2018.8.8 正睿暑期集训营 Day5 时间:3.5h( ...
- 正睿OI提高组十连测 day1 总结
可能是最简单的一场比赛了吧,结果却打得这么差... T1是个找规律题,结果一开始愚蠢地找错了规律,然后又对拍,到1h多一点才过掉 然后看t2和t3,以为t2是个水题,t3也只要处理一下就好了,先写t2 ...
- 11.6 正睿停课训练 Day17
目录 2018.11.6 正睿停课训练 Day17 A chinese(思路 计数) B physics(单调队列/剪枝 DP) C chemistry(期望 DP) 考试代码 A B C 2018. ...
- 10.29 正睿停课训练 Day11
目录 2018.10.29 正睿停课训练 Day11 A 线段树什么的最讨厌了(思路 DFS) B 已经没有什么好害怕的了(差分 前缀和) C 我才不是萝莉控呢(DP 贪心 哈夫曼树) 考试代码 A ...
- 10.23 正睿停课训练 Day7
目录 2018.10.23 正睿停课训练 Day7 A 矩形(组合) B 翻转(思路) C 求和(思路 三元环计数) 考试代码 B1 B2 C 2018.10.23 正睿停课训练 Day7 期望得分: ...
- 8.5 正睿暑期集训营 Day2
目录 2018.8.5 正睿暑期集训营 Day2 总结 A.占领地区(前缀和) B.配对(组合) C 导数卷积(NTT) 考试代码 T1 T2 T3 2018.8.5 正睿暑期集训营 Day2 时间: ...
- 8.4 正睿暑期集训营 Day1
目录 2018.8.4 正睿暑期集训营 Day1 A 数对子 B 逆序对 C 盖房子 考试代码 A B C 2018.8.4 正睿暑期集训营 Day1 时间:4.5h(实际) 期望得分:30+50+3 ...
- 7.30 正睿暑期集训营 A班训练赛
目录 2018.7.30 正睿暑期集训营 A班训练赛 T1 A.蔡老板分果子(Hash) T2 B.蔡老板送外卖(并查集 最小生成树) T3 C.蔡老板学数学(DP NTT) 考试代码 T2 T3 2 ...
- 正睿OI国庆day1
正睿OI国庆day1 T1 \[ S_n=1*S_{n-1}+1*F_{n-1}+1*F_{n-2}+1*f_{n-1}+1*f_{n-2} \] \[ F_{n}=0*S_{n-1}+1*F_{n- ...
随机推荐
- 运行npm install命令的时候会发生什么?
摘要:我们日常在下载第三方依赖的时候,都会用到一个命令npm install,那么你知道,在运行这个命令的时候都会发生什么吗? 本文分享自华为云社区<运行npm install命令的时候会发生什 ...
- 基础学习:MYSQL命令大全(持续更新中---最近一次:2019.12.6)
启动mysql : mysql -hlocalhost -uroot -p创建数据库:create database 数据库名字;指定要操作的数据库:use 数===据库名字;查看数据表建表语句:sh ...
- 不懂 Zookeeper?来看看这篇文章
开源Linux 长按二维码加关注~ 高并发分布式开发技术体系已然非常的庞大,从国内互联网企业使用情况,可发现RPC.Dubbo.ZK是最基础的技能要求.关于Zookeeper你是不是还停留在Dubbo ...
- 一文带你读懂zookeeper在大数据生态的应用
一个执着于技术的公众号 一.简述 在一群动物掌管的世界中,动物没有人类聪明的思想,为了保持动物世界的生态平衡,这时,动物管理员-zookeeper诞生了. 打开Apache zookeeper的官网, ...
- Linux强制用户首次登录修改密码
一个执着于技术的公众号 地方 前言 Linux强制用户首次登陆修改密码,这应该是RHCE认证中用户管理部分, 属于很基础的内容了.可是我忘记了,所以就有了下面的记录~ 实验过程 1.创建用户并设置登录 ...
- redis 基础1
1.redis是什么? redis是非关系型数据库key-value数据库,开源免费.是当下NoSQL技术之一 2.redis能干吗? (1)内存存储,可以持久化,redis存储在内存中,内存的话是断 ...
- install dns server on ubuntu
参考 CSDN/Ubuntu环境下安装和配置DNS服务器 在 Ubuntu 上安裝 DNS server Install BIND 9 on Ubuntu and Configure It for U ...
- 20212115 实验三 《python程序设计》实验报告
实验报告 20212115<python程序设计>实验三报告 课程:<Python程序设计>班级: 2121姓名: 朱时鸿学号:20212115实验教师:王志强老师实验日期:2 ...
- Node.js躬行记(21)——花10分钟入门Node.js
Node.js 不是一门语言,而是一个基于 V8 引擎的运行时环境,下图是一张架构图. 由图可知,Node.js 底层除了 JavaScript 代码之外,还有大量的 C/C++ 代码. 常说 Nod ...
- STM32内存知识
在了解STM32内存之前需要了解 MCU 的型号和MDK 中的.map 文件,很多刚学习 stm32 时都不会过多的去了解 MCU 的选型,是在太枯燥了.这里在从新了解一下,久了就熟悉了. 一.STM ...