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. 机器学习概念之特征选择(Feature selection)之VectorSlicer算法介绍

    不多说,直接上干货! VectorSlicer 算法介绍: VectorSlicer是一个转换器,输入特征向量,输出原始特征向量子集.VectorSlicer接收带有特定索引的向量列,通过对这些索引的 ...

  2. 洛谷P3773 [CTSC2017]吉夫特(Lucas定理,dp)

    题意 满足$b_1 < b_2 < \dots < b_k$且$a_{b_1} \geqslant a_{b_2} \geqslant \dots \geqslant a_{b_k} ...

  3. postgresql版sde(10.4.1)安装说明

    从ArcGIS 10.3开始,彻底没有了sde的安装包,安装sde数据库需要先安装arcgis desktop,通过arccatalog建数据库,同时也不能建sde服务,只能使用直连 以下演示在sde ...

  4. 应用开始界面简单倒计时的dialog

    activity_main.xml 下面图片显示的还要在activity_main.xml里面加个TextView <?xml version="1.0" encoding= ...

  5. UVA 10900 So you want to be a 2n-aire? 2元富翁 (数学期望,贪心)

    题意:你一开始有1元钱,接下来又n<=30个问题,只需答对1个问题手上的钱就翻倍,最多答对n个,得到的钱是2n.而每个问题答对的概率是[t,1]之间平均分布,那么问最优情况下得到奖金的期望值是多 ...

  6. Solidity 智能合约开发

    需要专用浏览器或部署节点支持. Solidity (中文:固态,固体)是一种语法与Javascript相似的高级语言,它为Ethereum虚拟机(EVM)编译代码而设计. Solidity是静态类型的 ...

  7. mybatis中app的查询语句

    SELECT * FROM ( SELECT (@rownum := @rownum + ) AS rownum,c.* FROM (SELECT @rownum := ) r, ( select * ...

  8. tomcat 虚拟目录配置

    1.虚拟目录优点 原始 拷贝到webapps下,然后启动tomcat,就可以访问webapps下的项目.eclipse配置tomcat的原理也是这种方式. 虚拟目录 定位到eclipse工作目录下,实 ...

  9. 【整理】 vue-cli 打包后显示favicon.ico小图标

    vue-cli 打包后显示favicon.ico小图标 https://www.cnblogs.com/mmzuo-798/p/9285013.html

  10. 创建线程的三种方式_Callable和Runnable的区别

    Java 提供了三种创建线程的方法 通过实现Runnable接口 通过继承Thread接口 通过Callable和Future创建线程 通过实现 Runnable 接口来创建线程 public cla ...