VJ A - Three Indices 7.26
Posted syrupwrld999
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VJ A - Three Indices 7.26相关的知识,希望对你有一定的参考价值。
#include<bits/stdc++.h>
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const ll nl=1e5+5;
/*
有一串数包含了1~n,(是前n个自然数打乱的组合),从中找出三个数i,j,k使j大于i和k,且它们的下标要从小到大,输出这三个数的下标
用一个初始化为0的数组标记(只要这个数比前面的数小就标记为1)
而未标记的数(除了第一个数)一定也大于它前面的那个数,否则会被标记为1
这样数组b只要存在序列01就表示一定存在题目让找的i,j,k(0对应j,1对应k)
只要输出最先出现的这三个数就可以
2 1 4 3
0 1 0 1
#define ll long long
#define speed_up ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
using namespace std;
const ll nl=1e5+5;
/*
有一串数包含了1~n,(是前n个自然数打乱的组合),从中找出三个数i,j,k使j大于i和k,且它们的下标要从小到大,输出这三个数的下标
用一个初始化为0的数组标记(只要这个数比前面的数小就标记为1)
而未标记的数(除了第一个数)一定也大于它前面的那个数,否则会被标记为1
这样数组b只要存在序列01就表示一定存在题目让找的i,j,k(0对应j,1对应k)
只要输出最先出现的这三个数就可以
2 1 4 3
0 1 0 1
4 6 1 2 5 3
0 0 1 0 0 1
0 0 1 0 0 1
5 3 1 2 4
0 1 1 0 0
从第二位开始没有序列01
*/
int main()
{
speed_up;
int t,n;
cin>>t;
while(t--)
{
cin>>n;
int a[n],b[n]={0};
for(int i=0;i<n;i++)
{
cin>>a[i];
if(i>0&&a[i-1]>a[i])
{
b[i]=1;
}
}
int s=0;
for(int i=2;i<n;i++)
{
if(b[i-1]==0&&b[i]==1)
{
cout<<"YES"<<endl;
cout<<i-1<<" "<<i<<" "<<i+1<<" "<<endl;
s=1;
break;
}
}
if(s==0)
{
cout<<"NO"<<endl;
}
}
0 1 1 0 0
从第二位开始没有序列01
*/
int main()
{
speed_up;
int t,n;
cin>>t;
while(t--)
{
cin>>n;
int a[n],b[n]={0};
for(int i=0;i<n;i++)
{
cin>>a[i];
if(i>0&&a[i-1]>a[i])
{
b[i]=1;
}
}
int s=0;
for(int i=2;i<n;i++)
{
if(b[i-1]==0&&b[i]==1)
{
cout<<"YES"<<endl;
cout<<i-1<<" "<<i<<" "<<i+1<<" "<<endl;
s=1;
break;
}
}
if(s==0)
{
cout<<"NO"<<endl;
}
}
return 0;
}
}
以上是关于VJ A - Three Indices 7.26的主要内容,如果未能解决你的问题,请参考以下文章
Educational Codeforces Round 91 (Rated for Div. 2) A. Three Indices