博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【CodeForces 1265B --- Beautiful Numbers】
阅读量:2038 次
发布时间:2019-04-28

本文共 3318 字,大约阅读时间需要 11 分钟。

【CodeForces 1265B --- Beautiful Numbers】

题目来源:

Description

You are given a permutation p=[p1,p2,…,pn] of integers from 1 to n. Let’s call the number m (1≤m≤n) beautiful, if there exists two indices l,r (1≤l≤r≤n), such that the numbers [pl,pl+1,…,pr] is a permutation of numbers 1,2,…,m.

For example, let p=[4,5,1,3,2,6]. In this case, the numbers 1,3,5,6 are beautiful and 2,4 are not. It is because:

  • if l=3 and r=3 we will have a permutation [1] for m=1;
  • if l=3 and r=5 we will have a permutation [1,3,2] for m=3;
  • if l=1 and r=5 we will have a permutation [4,5,1,3,2] for m=5;
  • if l=1 and r=6 we will have a permutation [4,5,1,3,2,6] for m=6;

it is impossible to take some l and r, such that [pl,pl+1,…,pr] is a permutation of numbers 1,2,…,m for m=2 and for m=4.

You are given a permutation p=[p1,p2,…,pn]. For all m (1≤m≤n) determine if it is a beautiful number or not.

Input

The first line contains the only integer t (1≤t≤1000) — the number of test cases in the input. The next lines contain the description of test cases.

The first line of a test case contains a number n (1≤n≤2⋅105) — the length of the given permutation p. The next line contains n integers p1,p2,…,pn (1≤pi≤n, all pi are different) — the given permutation p.

It is guaranteed, that the sum of n from all test cases in the input doesn’t exceed 2⋅105.

Output

Print t lines — the answers to test cases in the order they are given in the input.

The answer to a test case is the string of length n, there the i-th character is equal to 1 if i is a beautiful number and is equal to 0 if i is not a beautiful number.

Sample Input

3

6
4 5 1 3 2 6
5
5 3 1 2 4
4
1 4 3 2

Sample Output

101011

11111
1001

Note

The first test case is described in the problem statement.

In the second test case all numbers from 1 to 5 are beautiful:

  • if l=3 and r=3 we will have a permutation [1] for m=1;
  • if l=3 and r=4 we will have a permutation [1,2] for m=2;
  • if l=2 and r=4 we will have a permutation [3,1,2] for m=3;
  • if l=2 and r=5 we will have a permutation [3,1,2,4] for m=4;
  • if l=1 and r=5 we will have a permutation [5,3,1,2,4] for m=5.

解题思路:

排序后维护最大值位置mx和最小值位置mi,i=0依次遍历,当mx-mi==i时代表成立,反之为0;

具体看代码。

AC代码1:

#include 
using namespace std;#define SIS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)#define endl '\n'const int MAXN = 2e5+5;pair
arr[MAXN]; int main(){
SIS; int T,n,x; cin >> T; while(T--) {
cin >> n; int mi=0x3f3f3f3f,mx=0; for(int i=0;i
> arr[i].first; arr[i].second=i; } sort(arr,arr+n); vector
v(n); for(int i=0;i

仔细一想本题输入的是1-n的n个不重复的数,所以根本不需要排序。

AC代码2:

#include 
using namespace std;#define SIS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)#define endl '\n'const int MAXN = 2e5+5;int arr[MAXN];int main(){
SIS; int T,n,x; cin >> T; while(T--) {
cin >> n; int mi=0x3f3f3f3f,mx=0; for(int i=1;i<=n;i++) {
cin >> x; arr[x]=i; } vector
v(n); for(int i=1;i<=n;i++) {
mi=min(arr[i],mi); mx=max(arr[i],mx); if(mx-mi==i-1) v[i-1]=1; else v[i-1]=0; } for(auto x:v) cout << x; cout << endl; } return 0;}

转载地址:http://eiyof.baihongyu.com/

你可能感兴趣的文章
Java出现No enclosing instance of type E is accessible
查看>>
java CountDownLatch测试并发数
查看>>
缓存穿透、缓存并发、缓存失效之思路变迁
查看>>
利用redis + lua解决抢红包高并发的问题
查看>>
一次查询耗时的分析过程
查看>>
Jmeter中的几个重要测试指标释义
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
VisualVM 提示 tomcat 不受此jvm支持解决办法
查看>>
如何在excel每一行数据后面都加一个逗号
查看>>
java之架构基础-动态代理&cglib
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
Java程序内存分析:使用mat工具分析内存占用
查看>>
使用 VisualVM 进行性能分析及调优
查看>>
删除vi编辑产生的.swp文件
查看>>
laypage同一页面加入多处分页实现
查看>>
数据库连接池C3P0最常用配置
查看>>
线上遇到插入重复数据(重复提交)
查看>>
tomcat连接超时
查看>>
Tomcat调优总结
查看>>