DP,动态规划   树状数组   最长不下降子序列

by  GeneralLiu

题目

就是说给一串由 0~9 组成的序列

求 以 i (1~n) 结尾 的 最长不下降子序列 的 和

(最长不下降子序列不唯一时选编号字典序最小的)

两步

1 求最长不下降子序列

2 求 步骤1 的和

1

O(n^2) 暴力不必说 (因为数字只有 0~9 十个, 即10*n, 所以就是 O(n)啊)

O(n logn) 树状数组 log10≈3.几,即3*n 也可以算 O(n)啊;

对于 数值x 查询 以0~x结尾的 最长不下降子序列 长度

所得长度 +1 即为所求

用 树状数组 维护

!!!!

树状数组没有 0 啊

那就每个数 查询和更新 都加一

因为这个我卡了 TLE 当时相当不解

2

再开一个数组保存序列和

在步骤1中一起维护即可

详见代码 query() 和 update()

代码

#include<bits/stdc++.h>
using namespace std;
#define low k&-k
int ret,l,n,tree[],s[];
void query(int k){ //查询
ret=s[k],l=tree[k]; //ret为序列和 l为长度 两个全局变量
for(k-=low;k;k-=low)
if(l<tree[k])//因为要保证字典序 所以 == 时 答案不改
l=tree[k],ret=s[k]; //长度更改时 序列和才会更改
}
void update(int k){ //更新
for(;k<=;k+=low)
if(tree[k]<l) //因为要保证字典序 所以 == 时 不作修改
tree[k]=l,s[k]=ret; //长度更新时 序列和才会更新
}
int main(){
scanf("%d",&n);
for(int v,i=;i<=n;i++){
scanf("%d",&v);
query(v+); //树状数组没有 0 要统一 +1
ret+=v;
l++;//长度再加上 本身
printf("%d ",ret);
update(v+);
}
return ;
}/*5
0 2 5 3 4*/

洛谷 P2008 大朋友的数字的更多相关文章

  1. P2008 大朋友的数字

    题目描述 有一批大朋友(年龄15岁以上),他们每人手上拿着一个数字,当然这个数字只有1位,也就是0到9之间.每个大朋友的分数为在他之前的最长不下降子序列中所有数之和.(这个序列必须以它作为结尾!)如有 ...

  2. 洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game

    洛谷 2953 [USACO09OPEN]牛的数字游戏Cow Digit Game 题目描述 Bessie is playing a number game against Farmer John, ...

  3. 洛谷P1538迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  4. 洛谷 P1851 好朋友

    题目背景 小可可和所有其他同学的手腕上都戴有一个射频识别序列号码牌,这样老师就可以方便的计算出他们的人数.很多同学都有一个“好朋友” .如果 A 的序列号的约数之和恰好等于B 的序列号,那么 A的好朋 ...

  5. 洛谷P 1427 小鱼的数字游戏

    题目描述 小鱼最近被要求参加一个数字游戏,要求它把看到的一串数字(长度不一定,以0结束,最多不超过100个,数字不超过2^32-1),记住了然后反着念出来(表示结束的数字0就不要念出来了).这对小鱼的 ...

  6. 洛谷 P1538 迎春舞会之数字舞蹈

    题目背景 HNSDFZ的同学们为了庆祝春节,准备排练一场舞会. 题目描述 在越来越讲究合作的时代,人们注意的更多的不是个人物的舞姿,而是集体的排列. 为了配合每年的倒计时,同学们决定排出——“数字舞蹈 ...

  7. 【洛谷】2602: [ZJOI2010]数字计数【数位DP】

    P2602 [ZJOI2010]数字计数 题目描述 给定两个正整数a和b,求在[a,b]中的所有整数中,每个数码(digit)各出现了多少次. 输入输出格式 输入格式: 输入文件中仅包含一行两个整数a ...

  8. 【洛谷P1982】小朋友的数字

    小朋友的数字 题目链接 题目翻译: 每个小朋友有一个数字,构成一个数字序列a1,a2…an 我们定义“特征值”fi为a1~ai中的最大连续子段和 再定义“分数”si为1~i-1中最大的(sj+fj), ...

  9. 洛谷U32670 小凯的数字(比赛)

    题目网址 https://www.luogu.org/problemnew/show/U32670 题目背景 NOIP2018 原创模拟题T1 NOIP DAY1 T1 or DAY 2 T1 难度 ...

随机推荐

  1. 508 Most Frequent Subtree Sum 出现频率最高的子树和

    详见:https://leetcode.com/problems/most-frequent-subtree-sum/description/ C++: /** * Definition for a ...

  2. FFmpegUtil

    这几天没事研究音频玩 比如 X配音app的配音功能 录一段 pcm或者wav格式的文件 替换mp4指定位置的音频刚开始卡在 pcm混合以及pcm指定位置插入.思路 一段段的视频进行切割 用到MP4Co ...

  3. C#: static关键字的作用(转)

    C#: static关键字的作用   static意思是静态,可以修饰类.字段.属性.方法 标记为static的就不用创建实例对象调用了,可以通过类名直接点出来 static三种用法: 1.用于变量前 ...

  4. ABP教程(四)- 开始一个简单的任务管理系统 - 实现UI端的增删改查

    接上一篇:ABP教程(三)- 开始一个简单的任务管理系统 – 后端编码 1.实现UI端的增删改查 1.1添加增删改查代码 打开SimpleTaskSystem.sln解决方案,添加一个“包含视图的MV ...

  5. elasticsearch6安装head插件

    1.head 插件Github地址:https://github.com/mobz/elasticsearch-head 2.npm install 3.npm run start 由于head插件监 ...

  6. canvas基础绘制-倒计时(上)

    效果: html: <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  7. jsapi4加载的首个图层的范围被默认作为地图范围,且不能修改的解决

    在map加载的第一个图层的图层范围(fullExtent),会被默认设置为map的全图范围,且不能更改,从一般地图控件角度来说,应该有fullExtent属性,作为地图的全图范围,但很遗憾jsapi4 ...

  8. elasticsearch 2.4在head删除数据(使用Delete By Query插件)

    之所以说明是2.4版,是因为不同版本删除的语法不一样(例如跟5.x就不同) 首先安装Delete By Query插件,方式跟安装head插件差不多,安装命令:plugin install delet ...

  9. elasticsearch 2.4.0安装说明

    首先从官网下载安装包,是个压缩文件,然后解压 在es目录下找到es的配置文件 修改集群(cluster)名称 PS:一般情况下一台机只部署一个es程序,也就是一个集群,默认集群名是ewater_mai ...

  10. objectbox基础

    objectbox基础 参考链接 官网地址 http://objectbox.io github地址 https://github.com/objectbox/objectbox-java https ...