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;?

?

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/445659.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/445659.shtml
英文地址,請注明出處:http://en.pswp.cn/news/445659.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

dp打開思路2:POJ2533 HDU1114 HDU1260 HDU1160(水題不水)

題目&#xff1a;https://vjudge.net/contest/68966#overview POJ2533 最長上升子序列&#xff0c;很平常的題&#xff0c;但是維持單調隊列二分還是值得一貼的&#xff0c;O(nlogn) 關鍵思想&#xff1a;出現在單調隊列里的數都在當前接收的數之前&#xff0c;所以找到最小…

二分查找及一般拓展總結

二分-不止是查找哦 二分過程&#xff1a;首先&#xff0c;假設表中元素是按升序排列&#xff0c;將表中間位置記錄的關鍵字與查找關鍵字比較&#xff0c;如果兩者相等&#xff0c;則查找成功&#xff1b;否則利用中間位置記錄將表分成前、后兩個子表&#xff0c;如果中間位置記…

第三次課 課上代碼

這次可能比較簡短&#xff0c;這樣也好&#xff0c;可讀性比較強。 別問我為什么&#xff0c;我不會告訴你們我把代碼關了的哼哼。 簡單復習、注意事項及小知識強調講解 作業講解 列表的遍歷 For循環&#xff08;這個參考切片&#xff0c;視頻有詳細講解&#xff0c;一樣的…

排序算法基本介紹及python實現(含詳細注釋)

對數組排序可以說是編程基礎中的基礎&#xff0c;本文對八種排序方法做簡要介紹并用python實現。 代碼中注釋很全&#xff0c;適合復習和萌新學習。這是剛入學自己寫的&#xff0c;可能難免比不上標準的寫法&#xff0c;但是懶得改了。 文末會放和排序相關的基本拓展總結鏈接…

第二次作業 講解及展示

第二次作業&#xff0c;同學們雖然在認真完成&#xff0c;但是或多或少都出了一些錯誤&#xff0c;一班張婷&#xff0c;四班武儀人&#xff0c;六班楊澤宇&#xff0c;八班候雯潔&#xff0c;安錦陽&#xff0c;劉凈圓&#xff0c;這些同學完成的較為出色&#xff0c;錯誤較少…

深搜DFS\廣搜BFS 圖初步入門

首先&#xff0c;不管是BFS還是DFS&#xff0c;由于時間和空間的局限性&#xff0c;它們只能解決數據量比較小的問題。 深搜&#xff0c;顧名思義&#xff0c;它從某個狀態開始&#xff0c;不斷的轉移狀態&#xff0c;直到無法轉移&#xff0c;然后退回到上一步的狀態&#xf…

素數基本(埃氏篩法/線性篩法)

一、檢查n是否為素數 最簡單思路&#xff1a;所有可能的因數全部試一遍。 int gg(int n) {for(int i2;i<n;i){if((n%i)0)return 0;//有因數就不是素數咯}return 1; } 進一步思考&#xff1a;沒必要枚舉所有的數&#xff0c;每一個小于n^(1/2)的因數i&#xff0c;一定有一個大…

歐幾里得gcd/extend_gcd

正式敘述前還寫了一點自己的小感受。 問題&#xff1a;求兩個正整數a&#xff0c;b的最大公約數。 大神看來是很簡單的問題&#xff0c;但是對于去年夏天剛學python的我來說&#xff0c;這是個很難的問題&#xff0c;還記得當時一晚上睡不著都在想怎么快一點的求出最大公約數…

python基礎技巧總結(一)

最近總結一下python基礎知識&#xff0c;就暫時棄坑了。 本文總結只屬于python的一些騷操作。。。 后面文章自行去博客學習交流 原地交換 Python 提供了一個直觀的在一行代碼中賦值與交換&#xff08;變量值&#xff09;的方法 x, y 10, 20 print(x, y)x, y y, x print(x…

python基礎技巧總結(二)

一總結的鏈接&#xff1a; 好&#xff0c;我們繼續 一次性初始化多個變量 可以直接賦值&#xff1a; a,b,c,d1,2,3,4 可以利用列表&#xff1a; List [1,2,3] x,y,zList print(x, y, z) #-> 1 2 3 &#xff08;元素個數應與列表長度相同&#xff09; 打印模塊路徑 im…

python基礎技巧總結(三)

前兩篇文章&#xff1a; https://blog.csdn.net/hebtu666/article/details/81698235 https://blog.csdn.net/hebtu666/article/details/81698329 我們繼續總結&#xff1a; 開啟文件分享 Python 允許運行一個 HTTP 服務器來從根路徑共享文件&#xff0c;下面是開啟服務器的…

python基礎技巧總結(四)

前三期請到我博客里找 https://blog.csdn.net/hebtu666 我們繼續總結 except的用法和作用 try/except: 捕捉由PYTHON自身或寫程序過程中引發的異常并恢復 except: 捕捉所有其他異常 except name: 只捕捉特定的異常 except name, value: 捕捉異常及格外的數據(實例) exce…

python基礎技巧總結(五)

前四期到博客找&#xff1a;https://blog.csdn.net/hebtu666 我們繼續說一些好用的函數 split Python split() 通過指定分隔符對字符串進行切片&#xff0c;如果參數 num 有指定值&#xff0c;則僅分隔 num 個子字符串。 語法&#xff1a; str.split(str"", num…

堆的簡單實現

關于堆不做過多介紹 堆就是兒子的值一定不小于父親的值并且樹的節點都是按照從上到下&#xff0c;從左到右緊湊排列的樹。 &#xff08;本文為二叉堆&#xff09; 具體實現并不需要指針二叉樹&#xff0c;用數組儲存并且利用公式找到父子即可。 父&#xff1a;(i-1)/2 子:…

二叉搜索樹實現

本文給出二叉搜索樹介紹和實現 首先說它的性質&#xff1a;所有的節點都滿足&#xff0c;左子樹上所有的節點都比自己小&#xff0c;右邊的都比自己大。 那這個結構有什么有用呢&#xff1f; 首先可以快速二分查找。還可以中序遍歷得到升序序列&#xff0c;等等。。。 基本操…

python基礎小白題

題目1&#xff1a;有1、2、3、4四個數&#xff0c;能組成多少個互不相同且無重復的三位數&#xff1f;都是多少&#xff1f; list_num[1,2,3,4] all_num[] for i in list_num: for j in list_num: for k in list_num : if (i!j) and (i!k) and (j!k): numi*100j*10k all_num…

python基礎小白題2

題目11&#xff1a;判斷101-200之間有多少個素數&#xff0c;并輸出所有素數。 num[] for i in range(100,201): ji//2 for k in range(2,j): if i%k0: break else: num.append(i) print(一共有%d個素數\n這些素數是&#xff1a; %len(num),num ) 輸出結果&am…

python基礎小白題3

題目021&#xff1a;猴子吃桃問題 猴子第一天摘下若干個桃子&#xff0c;當即吃了一半&#xff0c;還不癮&#xff0c;又多吃了一個 第二天早上又將剩下的桃子吃掉一半&#xff0c;又多吃了一個。 以后每天早上都吃了前一天剩下的一半零一個。 到第10天早上想再吃時&#x…

python基礎小白題4

題目031&#xff1a;請輸入星期幾的第一個字母來判斷一下是星期幾&#xff0c;如果第一個字母一樣&#xff0c;則繼續判斷第二個字母。 def tm031(): 【個人備注】&#xff1a;按照題意要求實現了就行 week [monday,tuesday,wednesday,thursday,friday,saturday,sunday] inp…

python基礎小白題5

題目045&#xff1a;統計 1 到 100 之和。 def tm045(): 【個人備注】&#xff1a;簡單&#xff0c;但官網有人寫的更簡單 s 0 for i in range(1,101): si print(s) # 更簡潔的方法 print(sum(range(1,101))) 題目046&#xff1a;求輸入數字的平方&#xff0c;如果平方運算…