區間dp-hdu-4745-Two Rabbits
題目連結:
題目意思:
給n個環狀的數,A、B兩人沿相反的方向走,每單位時間走一步,要求相同時間兩人到達相同的數,且同一位置同一個人不能走兩次,走過的位置不能越過。
解題思路:
根據迴文非連續序列的性質,從前往後,和從後往前序列是一樣的,所以只用求出區間內最長的迴文序列即可,又由於是環狀,所以分成兩部分,1~i i+1~n,A可以從i走到1,然後從n走到i+1,B可以從1走到i,從i+1走到n .
程式碼:
#include<iostream> #include<cmath> #include<cstdio> #include<cstdlib> #include<string> #include<cstring> #include<algorithm> #include<vector> #include<map> #include<set> #include<stack> #include<list> #include<queue> #include<ctime> #define eps 1e-6 #define INF 0x3fffffff #define PI acos(-1.0) #define ll __int64 #define lson l,m,(rt<<1) #define rson m+1,r,(rt<<1)|1 #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; #define Maxn 1100 int sa[Maxn]; int dp[Maxn][Maxn]; int main() { //freopen("in.txt","r",stdin); //freopen("out.txt","w",stdout); int n; while(scanf("%d",&n)&&n) { memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) { scanf("%d",&sa[i]); dp[i][i]=1; } for(int i=2;i<=n;i++) { for(int j=1;j+i-1<=n;j++) { int k=i+j-1; dp[j][k]=max(dp[j][k],max(dp[j+1][k],dp[j][k-1])); if(sa[j]==sa[k]) dp[j][k]=max(dp[j][k],dp[j+1][k-1]+2); } } int ans=0; for(int i=1;i<=n;i++) ans=max(ans,dp[1][i]+dp[i+1][n]); printf("%d\n",ans); } return 0; }
相關推薦
區間dp-hdu-4745-Two Rabbits
題目連結: 題目意思: 給n個環狀的數,A、B兩人沿相反的方向走,每單位時間走一步,要求相同時間兩人到達相同的數,且同一位置同一個人不能走兩次,走過的位置不能越過。 解題思路: 根據迴文非連續序列的性質,從前往後,和從後往前序列是一樣的,所以只用求出區間內最長的迴文序列即
HDU4745 Two Rabbits【最長迴文子序列 區間DP】
Two Rabbits Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others) Total Submission(s): 2479 Accepted Su
HDU 5273 區間DP
main 一個 clu can ring 區間dp printf std scan 輸入一組數,m次詢問 問每一個詢問區間的逆序數有多少 區間DP簡單題 #include "stdio.h" #include "string.h" int dp[1010][1010
2017多校第9場 HDU 6170 Two strings DP
ems str php hdu 鏈接 兩種 namespace turn bit 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=6170 題意:給了2個字符串,其中第2個字符串包含.和*兩種特別字符,問第二個字符串能否和第一個
HDU 5791 Two (DP)
stream fine out tor printf bsp brush eps std 題意:給定兩個串,讓你求出,兩個串字串,相同的個數。 析:dp[i][j] 表示 第一個第 i 個位置,第二串第 j 個位置,有多少相同的串, 如果 a[i] == b[j] 那麽
HDU 5791 Two——DP
oci get sin com .com blank lan targe target 逼矩旅劫蒂毓乙橇綻醫潑斡蘸http://t.docin.com/adhcg9321 戲浩郎酚琢拾坡憑啪官咳http://t.docin.com/sina_5847836848 誓遜甲用匝
HDU 5115 區間dp
others take source [1] des def tro round 有一個 Dire Wolf Time Limit: 5000/5000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Oth
You Are the One HDU - 4283(區間dp)
eas value script names elf for stdio.h 表示 text You Are the One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Jav
HDU 4632 Palindrome subsequence(區間DP求回文子序列數)
pan get color math stdout 一個 inf 序列 star 題目鏈接:http://acm.hdu.edu.cn/showproblem.php?pid=4632 題目大意:給你若幹個字符串,回答每個字符串有多少個回文子序列(可以不連續的子串)。解題
hdu 5115 Dire Wolf 區間dp
區間 fir print for () fine scanf include hdu 題目大意:有n頭狼,每頭狼初始戰力為ai, 每頭狼為給相鄰的狼加bi 戰力,讓你規定擊殺順序使得自己受到的傷害最小。 思路:訓練的時候一直沒有想出來,知道是區間dp,並且知道要枚舉
HDU - 2476 , H - String painter [ 區間dp ]
Problem Describe There are two strings A and B with equal length. Both strings are made up of lower case letters. Now you have a powerful stri
Hdu 3516 tree construction(區間DP四邊形優化)
題目連結:http://acm.hdu.edu.cn/showproblem.php?pid=3516 題意:給出n個點,後一個點在前一個點的右下方,然後用直線沿著座標軸將這些點連線起來,問最短的距離是多少。 思路:首先是用區間DP來列出狀態轉移方程,我列出來的方程是dp[i][j]=m
[區間DP] G - You Are the One HDU - 4283
You Are the One Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5707&nb
hdu 6212 區間dp
題意:祖瑪遊戲,最少的彈藥消除所有珠子 思路:區間dp,注意列舉中間空一個珠子的情況,這裡要注意的是中間不能有兩個,並且兩邊的加中間列舉的也不能是三個(因為這樣不管先取左右都會直接被消除掉) 程式碼: #include<bits/stdc++.h> using nam
【HDU - 5900】QSC and Master(區間dp)
題幹: Every school has some legends, Northeastern University is the same. Enter from the north gate of Northeastern University,You are facing
hdu 6212 區間dp Zuma (記憶化搜)
題意: 現在有一個01串,保證相同的連續不會超過2,現在可以向1其中的任意一個位置包括兩端插入一個0 或者1 ,如果組成3個或以上的連續的相同,則可以消除這個,然後剩下的接起來。直到所有的拿完,問最少插入幾個? 思路: 200 區間dp呀,dp[ l ][ r ] 表示
[區間dp] Dire Wolf HDU
區間DP 算是裸板吧 這次求的是最小值 題目大意:總共有N只狼排成一排,每隻狼都有一個基礎攻擊力ai,以及被擊殺後可給別的狼提供的攻擊力bi(一隻狼被攻擊的話,它相鄰的狼會為它提供額外的攻擊力bi),你擊殺一隻狼都會減少與這隻狼攻擊力加上相鄰的狼提供
HDU 5115 Dire Wolf (區間dp)
題意: 一群狼排成一排,每隻狼有一個固定攻擊值a[i],還有附加值他左右與它相鄰的狼給它的附加值,因此它對人的攻擊總值是固定攻擊值+附加值,一個人消滅第i只狼的同時會受到它的總攻擊值的傷害,問一個人要
hdu 4283"You Are the One"(區間DP)
傳送門 https://www.cnblogs.com/violet-acmer/p/9852294.html 題意: 有n個屌絲排成一排,每個屌絲都有一個不開心值a[ i ]( i=1,2,3,.....n ),如果第 i 個屌絲第 k 個上場,那麼他的不開心度就是(k-1)*a[
HDU-5115 Dire Wolf (區間dp)
Dire wolves, also known as Dark wolves, are extraordinarily large and powerful wolves. Many, if not all, Dire Wolves appear to orig