機器人軍團【動態規劃】

機器人軍團
時間限制: 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)i?1)

代碼:

//#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.pswp.cn/news/536261.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536261.shtml
英文地址,請注明出處:http://en.pswp.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; 輸出 第一…