多組資料,首先是乙個整數t,表示測試資料的組數。每組資料的格式為:
第1 行:乙個大寫字串,表示第乙個佇列的小車的顏色,1 <= n <= 5000
第2 行:乙個大寫字串,表示第二個佇列的小車的顏色,1 <= m <= 5000
每組資料輸出一行,表示合併方案的最小l(c)的總和
2 aaabbcy
abbbcdeey
gbby
yrrgb
10 12
30%的資料t = 1,2 <= n, m <= 20
100%的資料t <= 5, 1 <= n, m <= 5000
凍龜題,就不賣關子了,直接給狀態。
f[i][j]記錄前i 輛第一隊的車與前j 輛第二隊的車合併的最小代價。
討論最後乙個(第i+j)位置放哪一隊的車。顯然,如果最後放的這輛車的顏色之後未出現過,那麼代價應加上(i+j)。為了消除後效性,如果這種顏色的車子之前未出現過,代價減去(i+j)。
上偽**或許好理解一些。
temp1=f[i-1][j],temp2=f[i][j-1];
if(一隊第i 輛車的顏色之前未出現過)temp1-=i+j;
if(一隊第i 輛車的顏色之後未出現過)temp1+=i+j;
if(二隊第j 輛車的顏色之前未出現過)temp2-=i+j;
if(二隊第j 輛車的顏色之後未出現過)temp2+=i+j;
f[i][j]=min(temp1,temp2);
此外,似乎要用滾動陣列?
不太清楚。
比較喜歡寫記憶化搜尋~
#include
#include
#include
#include
using namespace std;
char s[2][5005];
int n,f[5005][5005],l1[26],r1[26],l2[26],r2[26],h[5005][5005];
int g(int x,int y)
int main()
for(j=0;j<26;j++)
for(i=n;i;--i)
if(s[0][i]-'a'==j)
for(j=0;j<26;j++)
for(i=1;i<=m;i++)
if(s[1][i]-'a'==j)
for(j=0;j<26;j++)
for(i=m;i;--i)
if(s[1][i]-'a'==j)
printf("%d\n",g(n,m));
}return 0;
}
滾動的小車
滾動的小車 動畫技術作為計算機圖形學的一部分,已廣泛應用。產生動畫所採用的方法,有 以下幾種 1 bitblt動畫,關鍵在於畫面儲存和重放。主要用於處理螢幕的一部分,動畫速 度受到顯示解析度 顯示模式及圖形大小等限制。2 線框動畫,關鍵在於圖形頁面的互換,處理物件是分別存放在不同圖形頁面上 的一系列...
智慧型循跡小車 循跡小車電子製作
第一步根據元器件清單清點器件,看是否缺件少件。下圖是元器件全家福 第二步依次焊接元器件 要先焊接小的元器件,再焊接大的元器件,最後粘上電池座和馬達。焊接好所有元器件後再次肉眼檢查有沒有焊反,虛焊漏焊的點。確認無誤後,進行第三步。第三步裝上電池除錯。電馬達的2根線可能會裝反,光敏電阻和發光二極體的相對...
STM32平衡小車 平衡小車的PID環體會心得
2018年12月11日17 47 56更新 平衡環 p可增加響應速度 p過小,響應太慢,不能達到直立。p過大,會出現大幅度的低頻抖動。d可消除p大了之後產生的大幅低頻抖動。d過大,會出現高頻抖動。速度環 p可增加速度的響應,i和p有比例關係i p 200.p過小,響應慢,出現的現象是加速減速慢,遲鈍...