CF1341C. Nastya and Strange Generator(思维 模拟 构造)

简介: CF1341C. Nastya and Strange Generator(思维 模拟 构造)

linkkkk

题意:

给出n,要求将1   n 的数放到n个位置,问给出的p数组能否按照如下规则放置得到。

规则是:r数组满足r i > = i并且r i没有被占用,c i表示r数组里值为i的数的个数。每次选择c数组的最大值放置对应的位置放置,如果有多个位置的话,任意选择一个放置。

思路:

模拟一下样例后发现,如果一个元素放在了第k个位置,那么下一个元素会放在第k + 1个位置,因为这时候c k + 1 = = 2。但是如果k kk是数组里最后一个位置呢,那么下一个位置就可以从前面的位置任意选择不受限制了。

用f l a g表示放置是否受到限制,如果k不是最后一个位置,那么下一个位置必须是k + 1

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+10,inf=0x3f3f3f3f;
int n,p[maxn],st[maxn];
int main(){
    int _;cin>>_;
    while(_--){
        cin>>n;
        for(int i=1;i<=n;i++) cin>>p[i],st[i]=0;
        int las=n,flag=1,flag1=1;
        if(p[1]==las){
            flag=0;las--;
        }
        st[p[1]]=1;
        for(int i=2;i<=n;i++){
            st[p[i]]=1;
            if(flag){
                if(p[i]!=p[i-1]+1){
                    flag1=0;break;
                }
            }
            if(p[i]==las){
                flag=0;
                while(st[las]) las--;
            }
            else flag=1;
        }
        if(!flag1) puts("No");
        else puts("Yes");
    }
    return 0;
}

参考


目录
相关文章
|
3月前
|
存储 缓存 安全
learn_C_deep_9 (汇编角度理解return的含义、const 的各种应用场景、volatile 的基本理解与实验证明)
learn_C_deep_9 (汇编角度理解return的含义、const 的各种应用场景、volatile 的基本理解与实验证明)
|
人工智能 BI
CF761D Dasha and Very Difficult Problem(构造 思维)
CF761D Dasha and Very Difficult Problem(构造 思维)
54 0
CF1567D. Expression Evaluation Error(思维 贪心)
CF1567D. Expression Evaluation Error(思维 贪心)
46 0
[North Central NA Contest 2018] Rational Ratio | 规律 细节模拟
Description Every (positive) rational number can be expressed as a ratio of two (positive) integers. However, in decimal form, rational numbers often have an infifinitely repeating pattern, e.g., 1/7 = 0.142857142857142857…
93 0
[North Central NA Contest 2018] Rational Ratio | 规律 细节模拟
|
前端开发 JavaScript Java
前端培训-中级阶段(32)-set、map、proxy、symbol、reflect、generator
前端最基础的就是 HTML+CSS+Javascript。掌握了这三门技术就算入门,但也仅仅是入门,现在前端开发的定义已经远远不止这些。前端小课堂(HTML/CSS/JS),本着提升技术水平,打牢基础知识的中心思想,我们开课啦(每周四)。
121 0
前端培训-中级阶段(32)-set、map、proxy、symbol、reflect、generator
|
C#
改善代码设计 —— 简化函数调用(Making Method “.NET研究”Calls Simpler)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
846 0
|
C#
改善代码设计 —— 简化函数调用(Making Method Calls Simple“.NET技术”r)
  系列博客       1. 改善代码上海网站建设设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
900 0
|
C#
一起谈.NET技术,改善代码设计 —— 简化函数调用(Making Method Calls Simpler)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
923 0
一起谈.NET技术,改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
675 0
改善代码设计 —— “.NET研究”优化物件之间的特性(Moving Features Between Objects)
  系列博客       1. 改善代码设计 —— 优化函数的构成(Composing Methods)       2. 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)       3.
894 0