正睿七连测 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- ...
随机推荐
- Arraylist面试三连问
点赞在看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 本文在公众号文章已同步,还有各种一线大厂面试原题.我的学习系列笔记. Arraylist为什么要加transient? ArrayList源 ...
- HashSet与TreeSet的区别
HashSet元素唯一,无序,依靠hashcode(),toString()实现元素的唯一性 TreeSet元素唯一,有序,依靠bTo实现比较,即继承Comparable类并重写compareTo(O ...
- 基于DSP_CPLD_aP8942A_LM1791的语音控制
语音驱动程序 drv_voice.c 语音服务程序 srv_voice.c 1.先运行初始化函数,主要是设置初始音量,并建立一个软件定时器来,以10ms的周期来调用语音播放函数. 1 void s ...
- 100ms的SQL把服务器搞崩溃了
前言 一个项目上线了两个月,除了一些反馈的优化和小Bug之外,项目一切顺利:前期是属于推广阶段,可能使用人员没那么多,当然对于项目部署肯定提前想到并发量了,所以早就把集群安排上,而且还在测试环境搞了一 ...
- [LBS学习笔记4]地理特征POI、AOI、路径轨迹
1 简述 今天继续LBS地理信息的学习,目标是写到10篇博客的时候,做出一个地图工具页面用,包含地图空间索引Geohash.S2.H3的可视化展示. 地理特征分为点(POI).线(路径).面(AOI) ...
- Apollo的docker配置详解步骤
Apollo 的docker配置 基础环境 centOS7 + Docker服务 + mysql服务 1. 下载Apollo的包 git clone https://github.com/ctripc ...
- 【mq】从零开始实现 mq-09-消费者拉取消息 pull message
前景回顾 [mq]从零开始实现 mq-01-生产者.消费者启动 [mq]从零开始实现 mq-02-如何实现生产者调用消费者? [mq]从零开始实现 mq-03-引入 broker 中间人 [mq]从零 ...
- Linux磁盘和文件系统知识总结
硬盘操作 为什么要给硬盘分区? 如果你需要在一块硬盘上用到多个文件系统,那么你就需要对硬盘进行分区,以便用不同的分区支持不同的文件系统.(但一个硬盘只能有一个分区表!)反过来说,如果你整块硬盘都用同样 ...
- 五、C++运算符重载,使面向对象编程更方便
复数类CComplex 编译器做对象运算的时候,会调用对象的运算符重载函数(优先调用成员方法):如果没有成员方法,就砸全局作用域找合适的运算符重载函数 ++和--运算符是单目运算符,在参数列表里放上一 ...
- 278. First Bad Version - LeetCode
Question 278. First Bad Version Solution 题目大意:产品有5个版本1,2,3,4,5其中下一个版本依赖上一个版本,即版本4是坏的,5也就是坏的,现在要求哪个版本 ...