Prince and Princess 動態規劃

2021-07-09 16:55:38 字數 737 閱讀 7637

題目大意:

求兩個序列的最長子序列

**:#include#include#include#includeusing namespace std;

int n, p, q;

const int maxn = 250*250;

int num1[maxn];

int hash[maxn], stack[maxn];

int main()

int top=0;

stack[0] = -1;

for(int i=1; i<=q; i++) {

scanf("%d", &x);

x = num1[x];

if(x) {

if(x > stack[top]) stack[++top]=x;

else {//這裡一開始想的很簡單,覺得只要與倒二個比較,若比待插入的數字小,則替換最後乙個數字,後來發現不行,還是要找到第乙個比他大的位置替換.

int l=1, r=top;

while(l<=r) {

int mid = (l+r)/2;

if(stack[mid]

思路:一開始看題目覺得好水,用二位陣列做,後來發現dp[250*250][250*250]是不行的,看了某博主的做法,只需一維陣列.

用乙個一維陣列記錄第一行輸入資料(下標為值,儲存位置),輸入第二組時,只有在判斷輸入的數出現在了第一組才進行相應操作,即用乙個陣列儲存有序序列,最後陣列下標即為長度.

Prince and Princess問題解決

這是突然看到的乙個非常有意思的題,是acm icpc的原題,在這裡稍微做一些分析,希望對大家有幫助。王子m和公主hff相愛,想要娶公主。雖然公主非常願意,但是並不是王國裡每個人都支援這一場婚姻。而為了娶到公主,王子需要完成乙個挑戰 在n個房間中找出公主在哪。每個房間有乙個人,他們彼此知道誰在哪個房間...

Colored Rectangles 動態規劃

題意 三種木棍,分別有 r對 g對 b對兩種不同木棍對可以弄移乙個矩形,要求矩形面積總和最大 思路 看題面,這種幾個變數互相影響並且最終目標固定的題目感覺就要用dp,而且資料比較小應該就是能用三維dp,雖然我比賽時沒做出來,但是我想的挺明白的,狀態轉移就是dp i j k max dp i 1 j ...

hdu1513 Palindrome 動態規劃

求讓乙個字串變為回文串所需最少插入字元數 定義狀態dp i j 表示從左到右i個字元,從右到左j個字元,要讓他們回文需要插入多少字元 顯然,a i a j 時,dp i j d p i 1 j 1 a i a j 時,就需要插入乙個字元,因此dp i j m in d p i 1 j dp i j ...