zoukankan      html  css  js  c++  java
  • 【t089】数列2

    Time Limit: 1 second
    Memory Limit: 128 MB

    【问题描述】

    虽然msh长大了,但她还是很喜欢找点游戏自娱自乐。有一天,她在纸上写了一串数字:1,1,2,5,4。接着她擦掉了一个1,结
    果发现剩下1,2,4都在自己所在的位置上,即1在第1位,2在第2位,4在第4位。她希望擦掉某些数后,剩下的数列中在自己的
    位置上的数尽量多。她发现这个游戏很好玩,于是开始乐此不疲地玩起来……不过她不能确定最后能有多少个数在自己的位置
    上,所以找到你,请你帮忙计算一下!
    【数据规模】
    对于20%的数据,n≤20;
    对于60%的数据,n≤100;
    对于100%的数据,n≤1000。
    【输入格式】

    第一行为一个数n ,表示数列的长度。 接下来一行为n个用空格隔开的正整数,第i行表示数Ai 。

    【输出格式】

    一行一个整数,表示擦掉某些数后,最后剩下的数列中最多能有多少个数在自己的位置上,即Ai=i最多能有多少。

    Sample Input

    5
    1 1 2 5 4

    Sample Output

    3
    【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t089

    【题解】

    每个数只有删和不删两种结果;
    设f[i][j]表示前i个数中删掉j个数之后,满足a[x]==x的x最多有多少个;
    如果a[i]==i-j;
    则f[i][j] = f[i-1][j]+1;
    表示前i-1个数删掉了j个数字,然后第i个数不删掉;
    那么a[i]==i了;所以加上1;
    同时还有;
    如果a[i]删掉;
    则f[i][j] = max(f[i][j],f[i-1][j-1]);->前i-1个数删掉了j-1个,然后前i个数删掉了j个,那这个状态转移其实就是说删掉了第i个数;
    如果a[i]不删掉;
    则f[i][j]=max(f[i][j],f[i-1][j]);当然如果i-j==a[i]还要加1;
    综上
    if (a[i]==i-j) f[i][j] = f[i-1][j]+1;
    f[i][j] = max(f[i][j],f[i-1][j],f[i-1][j-1]);
    ******************(不删、删)

    【完整代码】

    #include <cstdio>
    #include <algorithm>
    using namespace std;
    #define rei(x) scanf("%d",&x)
    #define rep1(i,x,y) for (int i = x;i <= y;i++)
    
    const int MAXN = 1e3+100;
    
    int n;
    int a[MAXN];
    int f[MAXN][MAXN];
    
    int main()
    {
        //freopen("F:\rush.txt","r",stdin);
        rei(n);
        rep1(i,1,n)
            rei(a[i]);
        rep1(i,1,n)
            rep1(j,0,i)
                {
                    if (i-j==a[i])
                        f[i][j] = f[i-1][j] + 1;
                    f[i][j] = max(f[i][j],f[i-1][j]);
                    f[i][j] = max(f[i][j],f[i-1][j-1]);
                }
        int ma = f[n][0];
        rep1(i,1,n)
            ma = max(ma,f[n][i]);
        printf("%d
    ",ma);
        return 0;
    }
    
  • 相关阅读:
    MySQL数据库索引相关
    springMVC架构说明
    @responseBody注解的使用
    springMVC配置
    17_10_31 ./ ../ / ~/
    Nginx的简单操作
    MySQL中sql语句的优化
    Mac下Redis的简单操作
    github下载与安装(windows版)
    结合工程实践选题调研分析3个同类软件产品
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626681.html
Copyright © 2011-2022 走看看