• hdu 2711


    地址:http://acm.hdu.edu.cn/showproblem.php?pid=2711

    题意:有n个牛排成一列,每个牛有序号(1~n),给出每个牛之前有多少个序号小于当前牛的牛数,求序号。第一头牛的未给出。

    mark:直接从后往前,每次找小于它但是没被选过的序号有多少个,暴力,效率是O(n^2),200+ms。

    正解应该是树状数组之类的,懒得写了。

    代码:

     1 # include <stdio.h>
     2 # include <string.h>
     3 
     4 
     5 int dp[8010], ans[8010], a[8010] ;
     6 int n ;
     7 
     8 int main ()
     9 {
    10     int i, j, cnt  ;
    11     while (~scanf ("%d", &n))
    12     {
    13         memset (dp, 0, sizeof(dp)) ;
    14         for (i = 2 ; i <= n ; i++)
    15             scanf ("%d", &a[i]) ;
    16         for (i = n ; i >= 1 ; i--)
    17         {
    18             cnt = 0 ;
    19             for (j = 1 ; dp[j]==1 || cnt < a[i];j++)
    20                 if (dp[j]==0)cnt++ ;
    21             ans[i] = j ;
    22             dp[j] = 1 ;
    23         }
    24         for (i = 1 ; i <= n ; i++)
    25             printf ("%d\n", ans[i]) ;
    26     }
    27     return 0 ;
    28 }
  • 相关阅读:
    psp4
    一维循环数组最大子数组求解
    psp3
    psp2
    求二维数组最大连续子数组
    计算连续最大子数组问题
    psp1
    关于30道题目问题
    Java 文件操作
    java iterator
  • 原文地址:https://www.cnblogs.com/lzsz1212/p/2543837.html
Copyright © 2020-2023  润新知