CF#637 C. Nastya and Strange Generator
2024-08-26 05:43:49
C. Nastya and Strange Generator
题意
有一个随机全排列生成器,给出你一个全排列,让判断是否可以通过这个生成器产生。
生成器工作方式:
第i步为数字i寻找位置pos。
首先pos是一个空位置,定义每个空位置的价值为左边连续有数字的位置数,会为数字i在价值最大的一个或者多个位置中选择一个位置。
比如上图,第三个位置的值是2,第4个位置的值是0,这时4就选择了第3个位置。
思路
写一下就会发现,这个生成器生成的全排列是有规律的。
n的全排列
x+y+1 x+y+2.....n x+1 x+2... x+y 1 2 3 4.......x
可以知道如果当前位小于后一位,一定是小1。如果有不是小1的,就说明不能通过生成器生成
代码
#include<bits/stdc++.h>
#define pb push_back
using namespace std;
typedef long long ll;
const int N=2e5+10;
const int mod=1e9+7;
const int inf=0x3f3f3f3f;
int arr[N],vis[N];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%d",&arr[i]);
int flag=0;
for(int i=n;i>1;i--)
{
if(arr[i]>arr[i-1])
{
if(arr[i]-arr[i-1]!=1)
{
flag=1;
break;
}
}
}
if(flag) printf("No\n");
else printf("Yes\n");
}
return 0;
}
最新文章
- Java:单例模式的七种写法
- 1.Linux系统安装
- 用javascript得到客户端IP的新方法
- Android自定义进度条颜色
- Java命名:
- Java 第五天 Spring IOC 配置文件
- web前端知识
- Android Studio默认产生Fragment
- python3网络编程之socket
- AMDP + XSLX Workbench 报表开发模式
- ListView属性及divider设置分割线
- sql 中 and 和 or的坑
- day 11 - 1 装饰器
- Confluence 6 属性的一个活动
- eclipse c++11 cmake gnuradio
- vscode setting.jsonxx
- 拜托!面试请不要再问我Spring Cloud底层原理[z]
- Orchard Core 版本冲突 The type &#39;FormTagHelper&#39; exists in both &#39;Microsoft.AspNetCore.Mvc.TagHelpers, Version=2.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60&#39; and...
- 结合IdentityServer4配置Ocelot的Json配置文件管理更新
- 图表ASP:Chart