zoukankan      html  css  js  c++  java
  • 洛谷 P2008 大朋友的数字

    题目背景

    在NOIP2013的赛场上,常神牛华丽丽的手残了,小朋友的数字一题只得了10分。于是,他要恶搞一下这道题。

    题目描述

    有一批大朋友(年龄15岁以上),他们每人手上拿着一个数字,当然这个数字只有1位,也就是0到9之间。每个大朋友的分数为在他之前的最长不下降子序列中所有数之和。(这个序列必须以它作为结尾!)如有多个最长不下降子序列,那么取编号字典序最小的。现在告诉你有n个大朋友,以及他们各自的数字,请你求出他们每个人的分数。

    输入输出格式

    输入格式:

     

    输入文件为bignum.in。

    第一行,1个数n。

    第二行,n个数,分别表示每个人的数字。

     

    输出格式:

     

    输出文件为bignum.out。

    一行,n个数,分别表示每个人的分数。

     

    输入输出样例

    输入样例#1: 复制
    【输入输出样例1】
    5
    1 2 5 3 4
    【输入输出样例2】
    5
    1 7 5 9 6
    输出样例#1: 复制
    【输入输出样例1】
    1 3 8 6 10
    【输入输出样例2】
    1 8 6 17 12

    说明

    【样例解释1】

    五个人分数分别为(1),(1+2),(1+2+5),(1+2+3),(1+2+3+4).

    【样例解释2】

    五个人分数分别为(1),(1+7),(1+5),(1+7+9){还有一个(1,5,9)},(1+5+6)。

    【数据规模】

    对于50%的数据,1≤n≤500;

    对于80%的数据,1≤n≤1000;

    对于100%的数据,1≤n≤10,000。

    思路:动规

    最长单增子序列的板子。

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    int n;
    int num[10010],tmp[10010],ans[10010];
    int main(){
        scanf("%d",&n);
        for(int i=1;i<=n;i++)    scanf("%d",&num[i]);
        for(int i=1;i<=n;i++){
            tmp[i]=1;
            for(int j=1;j<i;j++)
                if(num[i]>=num[j])
                    if(tmp[i]<tmp[j]+1){
                        tmp[i]=tmp[j]+1;
                        ans[i]=ans[j];
                    }
            ans[i]+=num[i];
        }
        for(int i=1;i<=n;i++)
            cout<<ans[i]<<" ";
    }
    细雨斜风作晓寒。淡烟疏柳媚晴滩。入淮清洛渐漫漫。 雪沫乳花浮午盏,蓼茸蒿笋试春盘。人间有味是清欢。
  • 相关阅读:
    元素单侧阴影效果
    有关动画的总结
    吸底效果
    使用seajs来引入js代码
    引用POPUI来实现弹窗效果,且弹窗中的内容可以点击事件
    Js文本溢出自动添加省略号ellipsis
    line-hieght与vertical-align的区别与联系
    实现文本框中输入限制字数的效果
    下拉菜单的实现
    基本SQL命令 (1.SQL命令使用规则/2.库管理/3.表管理/4.表记录管理/5.更改库,库的默认字符集/6.连接数据库的过程/7.数据类型)
  • 原文地址:https://www.cnblogs.com/cangT-Tlan/p/7995128.html
Copyright © 2011-2022 走看看