机器人军团【动态规划】

机器人军团
时间限制: 1 Sec 内存限制: 64 MB
提交: 279 解决: 139
[提交] [状态] [命题人:admin]
题目描述
邪狼:“怎么感觉这些机器人比我还聪明?不是说人工智能永远不能超越人类吗?”

天顶星人:“你们真是目光短浅,自大而愚蠢!你要知道,如果有意识的智慧生命在无穷无尽的岁月里居然做不到无意识的宇宙曾做过的事(产生智慧生命),这就好像一只无知的猴子在琴键上跳了亿万年居然跳出了一支贝多芬第九交响曲,而有智慧的生物居然几千年也学不会一支简单的小夜曲那样荒谬。如果说永远都做不到,那这在你们的哲学里,不就是神秘论和不可知论了吗?要知道世事无绝对。”

话说在天顶星人的指导下,修罗王建造了一支机器人军团,机器人排成一行,且身高分别为b1,b2,…,bn。修罗王准备从中选出一组满足最长不下降子序列规则的机器人组成一支精锐卫队。所谓不下降子序列(Longest Increasing Subsequence,LIS)定义为:设有由n个不相同的整数组成的数列b[n],若有下标i1<i2<…<iL且b[i1]<b[i2]<…<b[iL],则称存在一个长度为L的不下降序列。

例如13,7,9,16,38,24,37,18,44,19,21,22,63,15。有13<16<38<44<63 长度为5的不下降子序列。但经过观察,实际还有7<9<16<18<19<21<22<63 长度为8的不下降子序列。那么是不是还有更长的不下降子序列呢?请找出最长不下降子序列的长度。

输入
第一行为n,表示n(n≤100000)个数。第二行为n个数的值。

输出
一个整数,即最长不下降序列的长度。

样例输入
复制样例数据
4
1 3 1 2
样例输出
2

解题思路:
dp[i]dp[i]dp[i]来代表以iii结尾的最长上升子序列的最大长度。
因此,对于每一次更新dp[i]dp[i]dp[i]时,仅需从开始遍历到iii,如果遍历的值会小于arr[i]arr[i]arr[i],更新依次dp[i]dp[i]dp[i]即可,即
dp[i]=max(dp[i],dp[j]+1)dp[i]=max(dp[i],dp[j]+1)dp[i]=max(dp[i],dp[j]+1)(i:1(i:1(i:1~ n,j:1n,j:1n,j:1~ i−1)i-1)i1)

代码:

//#pragma GCC optimize(3,"Ofast","inline")
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cmath>
#include <cstdlib>
#include <cstring>
#include <map>
#include <stack>
#include <queue>
#include <vector>
#include <bitset>
#include <set>
#include <utility>
#include <sstream>
#include <iomanip>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
#define inf 0x3f3f3f3f
#define rep(i,l,r) for(int i=l;i<=r;i++)
#define lep(i,l,r) for(int i=l;i>=r;i--)
#define ms(arr) memset(arr,0,sizeof(arr))
//priority_queue<int,vector<int> ,greater<int> >q;
const int maxn = (int)1e5 + 5;
const ll mod = 1e9+7;
int arr[100100];
int dp[100100];
int main() 
{#ifndef ONLINE_JUDGEfreopen("in.txt", "r", stdin);#endif//freopen("out.txt", "w", stdout);//ios::sync_with_stdio(0),cin.tie(0);int n;scanf("%d",&n);rep(i,1,n) {scanf("%d",&arr[i]);dp[i]=1;}int ans=0;rep(i,1,n) {for(int j=1;j<i;j++) {if(arr[j]<arr[i]) {dp[i]=max(dp[i],dp[j]+1);}}}rep(i,1,n) {ans=max(ans,dp[i]);}printf("%d\n",ans);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536261.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【动态规划】抄近路

【动态规划】抄近路 时间限制: 1 Sec 内存限制: 64 MB 提交: 105 解决: 68 [提交] [状态] [命题人:admin] 题目描述 “最近不知道怎么回事&#xff0c;感觉我们这个城市变成了一个神奇的地方&#xff0c;有时在路上走着走着人就消失了&#xff01;走着走着突然又有人出现了&…

【动态规划】魔法石矿

【动态规划】魔法石矿 时间限制: 1 Sec 内存限制: 64 MB 提交: 116 解决: 27 [提交] [状态] [命题人:admin] 题目描述 为了找到回家的路&#xff0c;张琪曼施展魔法&#xff0c;从高维空间召唤出了一种叫作“读者”的生物&#xff0c;据说“读者”这种生物无所不能&#xff0c;…

Knapsack Cryptosystem【折半+查找】

链接&#xff1a;https://ac.nowcoder.com/acm/contest/889/D 来源&#xff1a;牛客网 Amy asks Mr. B problem D. Please help Mr. B to solve the following problem. Amy wants to crack Merkle–Hellman knapsack cryptosystem. Please help it. Given an array {ai} wi…

All men are brothers【并查集+数学】

链接&#xff1a;https://ac.nowcoder.com/acm/contest/889/E 来源&#xff1a;牛客网 题目描述 Amy asks Mr. B problem E. Please help Mr. B to solve the following problem. There are n people, who don’t know each other at the beginning. There are m turns. In e…

Light bulbs【差分】

19.98% 1000ms 8192K There are NN light bulbs indexed from 00 to N-1N−1. Initially, all of them are off. A FLIP operation switches the state of a contiguous subset of bulbs. FLIP(L, R)FLIP(L,R)means to flip all bulbs xx such that L \leq x \leq RL≤x≤R. S…

Digit sum【暴力+打表】

Digit sum 33.57% 2000ms 131072K A digit sum S_b(n)S b ​ (n) is a sum of the base-bb digits of nn. Such as S_{10}(233) 2 3 3 8S 10 ​ (233)2338, S_{2}(8)1 0 0 1S 2 ​ (8)1001, S_{2}(7)1 1 1 3S 2 ​ (7)1113. Given NN and bb, you need to calcu…

P1040 加分二叉树【dp+深搜】

题目描述 设一个nn个节点的二叉树tree的中序遍历为&#xff08;1,2,3,…,n1,2,3,…,n&#xff09;&#xff0c;其中数字1,2,3,…,n1,2,3,…,n为节点编号。每个节点都有一个分数&#xff08;均为正整数&#xff09;&#xff0c;记第ii个节点的分数为di,treedi,tree及它的每个子树…

Helloworld【C#】

c#Helloworld 题目描述 请输出样例所示内容 输出 样例输出 ********** Hello,world! ********** using System;namespace ConsoleApp1 {class Program{static void Main(string[] args){Console.WriteLine("**********");Console.WriteLine("Hello,world!&…

判断闰年【C#】

判断闰年 题目描述 使用C#编写一个控制台应用。输入-一个年份&#xff0c;判断是否润年(被4整除&#xff0c;且不被100整除&#xff0c;或者被400整除)。 是闰年输出yes&#xff0c;不是输出no 输入 一个年份 输出 yes或者no 样例输入 1996 样例输出 yes using Syst…

采用递归求第n位数【C#】

题目描述 一数列的规则如下&#xff1a;1、1、2、3、5、8、13、21、34......。求第n位数是多少&#xff1f; 输入 输入一个正整数&#xff0c;代表求第几位数字 输出 输出第n位数字 样例输入 30 样例输出 832040 提示 输入数字必须大于零 using System;namespace C…

歌手的分数【C#】

歌手的分数 题目描述 一青年歌手参加比赛。使用C#编写-一个控制台应用&#xff0c;输入10位评委打分(分值只能为正整数)&#xff0c;计算并输出歌手的平均分(去掉一一个最高分和一一个最低分)。平均分以double数据类型输出。 输入 1 2 3 4 5 6 7 8 9 10 输出 5.5 样例输…

冒泡排序算法(C#)

冒泡排序算法&#xff08;C#&#xff09; 题目描述 使用C#编写一个控制台应用。输入10个整数存入数组中&#xff0c;然后使用冒泡排序算法对一维数组的元素从小到大进行排序&#xff0c;并输出。 输入 在控制台中输入数字&#xff0c;存入一维数组 输出 输出排序后的数…

水仙花数【C#】

题目描述 春天是鲜花的季节&#xff0c;水仙花就是其中最迷人的代表&#xff0c;数学上有个水仙花数&#xff0c;他是这样定义的&#xff1a; “水仙花数”是指一个三位数&#xff0c;它的各位数字的立方和等于其本身&#xff0c;比如&#xff1a;1531^35^33^3。 现在要求输出…

C#异或运算符的使用【C#】

C#异或运算符的使用 题目描述 编写一个控制台应用&#xff0c;采用异或运算符&#xff0c;实现两个整型变量值的交换。并在Program类的Main进行验证。 输入 依次输入2个整数 输出 输出交换前、后两个变量的值 样例输入 12 78样例输出 before exchange first12,second7…

C#类方法【C#】

C#类方法 题目描述 在类Class1中&#xff0c;编写一个类方法IsEven(string number)用于输出参数的奇偶性。并在Program类的Main进行验证性输出。 class Program { static void Main(string[] args) { Console.Write("Input Integer:&quo…

C#中的Switch语句【C#】

C#中的Switch语句 题目描述 编写一个控制台应用&#xff0c;实现以下功能&#xff1a;根据输入的字符&#xff0c;输出通过、不通过和输入成绩无效。 &#xff08;1&#xff09;无论输入A、B、C、D&#xff0c;都输出通过&#xff1b; &#xff08;2&#xff09;输入E&#x…

c#输出最大值、最小值和平均值(A)【C#】

c#输出最大值、最小值和平均值(A) 题目描述 使用C#编写一个控制台应用。输入10个正整数存入数组中&#xff0c;输出最大值、最小值和平均值 输入 输入10个正整数 输出 最大值、最小值和平均值 样例输入 1 2 3 4 5 6 7 8 9 10 样例输出 10 1 5.5 using System;namesp…

c#输出最大值、最小值和平均值(B)【C#】

c#输出最大值、最小值和平均值&#xff08;B&#xff09; 题目描述 使用C#编写一个控制台应用。输入若干个正整数存入数组中&#xff08;输入exit表示输入结束&#xff09;&#xff0c;输出最大值、最小值和平均值输入 输入若干个正整数存入数组中输出 输出最大值、最小值和平…

C#提取文件名【C#】

C#提取文件名 题目描述 假设有一个字符串包含了文件名、扩展名和路径&#xff0c;如strFileName“D:\C#程序设计\实验3\MyFile.TXT”。请使用C#编写一个静态方法&#xff0c;该方法能够取出路径中的文件名“MyFile.TXT”。 输入 一个包含了文件名&#xff0c;扩展名和路径的…

C#解密出生日期【C#】

C#解密出生日期 题目描述 使用C#编写一个静态方法。该方法能够根据出生日期&#xff0c;&#xff08;1&#xff09;计算此人的年龄&#xff1b;&#xff08;2&#xff09;计算从现在到其60周岁期间&#xff0c;总共多少天。 输入 一个人的出生日期&#xff1b; 输出 第一…