日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

dp打开思路:HDU1029 HDU1087 HDU1176 HDU1257 POJ1458(水题不水)

發布時間:2023/12/13 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 dp打开思路:HDU1029 HDU1087 HDU1176 HDU1257 POJ1458(水题不水) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目:https://vjudge.net/contest/68966#overview

HDU - 1029

題意:找出出現次數超過一半的數字

蠢思路:排序找中間

DP:掃一遍一個變量count記錄解出現的次數,是當前解就++,否則--,count為負就換掉當前解。(解釋:想象解全都挨在一起(前面),count先達到最大,然后減為1或0,而其他數字先出現,可能會使正確解的count減為負數,但都會使正確解在后面更多,從而保證了結束時肯定為正確解)代碼拿來

?

//在代碼可讀性較好的前提下才追求代碼簡潔,所以沒有縮哦 #include <stdio.h> #include <stdlib.h> #include <string.h> int main() {int n;while(scanf("%d",&n)!=EOF){int temp,k=0;int count=0;while(n--){scanf("%d",&temp);if(temp==k)count++;else{count--;if(count<0){count=0;k=temp;}}}printf("%d\n",k);} }

HDU 1087

題意:找遞增子序列的最大和

思路:和最長遞增子序列類似,只是dp[i]=max(之前的)+第i個數的值。

?

HDU - 1176?

題意:略,百度原題自己看

思路:dp[t][x] ?表示第t秒第x個位置上有餡餅掉落,把所有餡餅都填入表,從底往上走,走到最上面,求經過和最大。

注:剛開始想不到是這種題,還是思維不夠開啊,用二維表示時間和一維空間,很巧妙。(萌新跳轉https://blog.csdn.net/hebtu666/article/details/79964233第二題)

?

HDU - 1257?

題意:就是求一個最長上升子序列啊

解釋:對于這個最長上升子序列而言,每一個數代表一個攔截系統的最小值,并且由于序列是上升的,每一個數都不能再攔截序列中的下一個數,因為下一個數更大,因此這個子序列的長度就是攔截系統數。

注:我原來以為是找最長下降子序列并對剩下的數遞歸,直到沒有數字,看有幾個序列。是我腦子不夠活。

?poj-1458

最長公共子序列

經典題

核心代碼

dp[i][j]=max(dp[i-1][j],dp[i][j-1]);

if(str1[i-1]==str2[j-1]) dp[i][j]=dp[i-1][j-1]+1;?

?

?

?

總結

以上是生活随笔為你收集整理的dp打开思路:HDU1029 HDU1087 HDU1176 HDU1257 POJ1458(水题不水)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。