zoukankan      html  css  js  c++  java
  • C. Nastya and Strange Generator (思维,假题)

    题目大意:这个题的题目大意不好理解,有n个数,然后向一个数组里填数,首先这个数组arr是空的,有一个R数组和count数组,R[j]的值是从j到n,如果arr[i]为空,i保证最小,那么R[j]=i,如果找不到这样的i,那么R[j]就让他空着。count数组,count[i]表示位置i出现的次数。从1<=t<=n为每个数挑选位置,要求位置count[i]最大,选好后arr[i]=t,注意t从1到n逐渐增大。

    题解:这TM绝对是个假的题目,读题20分钟,读完就有了思路,然后就是实现不了,最后才发现真tm水....

    先放1,此时的R【】={1,2,3,4,5},count[]={1,1,1,1,1,1}。再放2,如果把1放在3,此时的R【】={1,2,4,4,5},count[]={1,1,0,2,5},那么2一定要放再4这个位置,同理3一定放在5这个位置。如果刚开始我们把1放再5这个位置,R【】={1,2,3,4,x},count[]={1,1,1,1,0},然后2可以随便放。所以我们就可以发现规律了,当把a放在pos时,a+1一定放再pos+1....直到pos>n或者pos这个位置被比它小的数给占用了。

    所以我们可以总结为arr[i+1]要么比arr[i]小,要么=arr[i]+1。

    code:

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1e5+7;
    int arr[N];
    void solve(){
        int n;
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>arr[i];
        }
        for(int i=2;i<=n;i++) {
            if(arr[i]-arr[i-1]>=2) {
                cout<<"No"<<endl;
                return ;
            }
        }
        cout<<"Yes"<<endl;
    }
    
    int main(){
        int t;
        cin>>t;
        while(t--) solve();
        return 0;
    }
  • 相关阅读:
    简单工厂模式
    c# 接口属性继承
    web安全测试---跨站点脚本测试
    web安全测试---WebScarab工具介绍
    Appscan安全漏洞扫描使用(转)
    web安全测试---AppScan扫描工具(转)
    修改DB-LINK连接数方法
    LoadRunner 11破解方法
    数据库学习网站和linux学习网站
    关于误删表可在回收站中闪回
  • 原文地址:https://www.cnblogs.com/Accepting/p/12765773.html
Copyright © 2011-2022 走看看