正睿七连测 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- ...
随机推荐
- FileNotFoundError: [Errno 2] No such file or directory: 'image/1.jpg'问题解决
FileNotFoundError: [Errno 2] No such file or directory: 'image/1.jpg'问题 最近在学习爬虫,想爬一些图片并保存到本地,但是在下载图片 ...
- XCTF练习题---MISC---give_you_flag
XCTF练习题---MISC---give_you_flag flag:flag{e7d478cf6b915f50ab1277f78502a2c5} 解题步骤: 1.观察题目,下载附件 2.打开发现是 ...
- 4.18-token验证
在postman编写的每一个叫测试用例,既然收测试用例,那么就会有结果对比 API测试断言tests(判断一个接口测试用例是否成功,或者说是通过,是根据断言的三个条件都成立的情况下得到的结果) 协议状 ...
- Pytorch Linear ()简单推导
pytorch,nn.Linear 下图中的A是权重矩阵,b是偏置. in_features输入样本的张量大小 out_features输出样本的张量大小 bias是偏置 # 测试代码 # batch ...
- 想学会SOLID原则,看这一篇文章就够了!
背景 在我们日常工作中,代码写着写着就出现下列的一些臭味.但是还好我们有SOLID这把'尺子', 可以拿着它不断去衡量我们写的代码,除去代码臭味.这就是我们要学习SOLID原则的原因所在. 设计的臭味 ...
- VUE3 之 Teleport - 这个系列的教程通俗易懂,适合新手
1. 概述 老话说的好:宰相肚里能撑船,但凡成功的人,都有一种博大的胸怀. 言归正传,今天我们来聊聊 VUE 中 Teleport 的使用. 2. Teleport 2.1 遮罩效果的实现 < ...
- C语言函数调用栈
C语言函数调用栈 栈溢出(stack overflow)是最常见的二进制漏洞,在介绍栈溢出之前,我们首先需要了解函数调用栈. 函数调用栈是一块连续的用来保存函数运行状态的内存区域,调用函数(calle ...
- 力扣算法:LC 704-二分查找,LC 27-移除元素--js
LC 704-二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1. 示例 ...
- 【网站】windows phpstudy v8.1搭建https
这两天在搭建微擎,使用了官方推荐的一键安装环境,在搭建完站点后,想开启https. 发现如下图所示,无论关闭网站,还是关闭nginx.都无法建立https.网上也找不到相关流程,后来试着关闭nginx ...
- 基于SqlSugar的开发框架循序渐进介绍(5)-- 在服务层使用接口注入方式实现IOC控制反转
在前面随笔,我们介绍过这个基于SqlSugar的开发框架,我们区分Interface.Modal.Service三个目录来放置不同的内容,其中Modal是SqlSugar的映射实体,Interface ...