美團點評A輪B題

2021-08-02 19:27:32 字數 1494 閱讀 1443

題目鏈結

題意是給兩個字串,問合併之後可以得到的最長回文串有多長.

如dba abcd 合併後可以成為 dabcbad 最長回文串即為它本身.

求一串字串的最長回文串的dp解法是dp[i][j]為1表示i到j為合法回文串,為0表示不合法,當(s[i] == s[j]&& dp[i+1][j-1]) dp[i][j] = 1, 空串的時候也是合法的.

兩個字串的做法在一串的基礎上加兩維狀態即可,即dp[i][j][k][l]表示a串的i到j且b串的k到l是否為合法回文串.注意把空串的情況處理一下

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

#define long long long

const long inf=0x3f3f3f3f;

const long mod=1e9+ 7;

const

double pi=acos(-1.0);

#define clri(x) memset(x,-1,sizeof(x))

#define clr0(x) memset(x,0,sizeof x)

#define clr1(x) memset(x,inf,sizeof x)

#define clr2(x) memset(x,-inf,sizeof x)

#define eps 1e-10

#define lson l , mid , rt<< 1

#define rson mid + 1 ,r , (rt<<1)+1

#define root 1, m , 1

int dp[53][53][53][53] ;

char a[60] , b[60] ;

int main()

if(a[i] == a[j] && dp[i+1][j-1][k][k-1])

dp[i][j][k][k-1] = 1;}}

for(int k =1 ; k <= alen + 1; ++ k)

for(int len1 = 0; len1 <= blen ; ++len1)

if(b[i] == b[j] && dp[k][k-1][i+1][j-1])

dp[k][k-1][i][j] = 1;}}

int ans = 0 ;

for(int len1 = 0; len1 <= alen ; ++ len1)}}

}printf("%d\n",ans) ;

}return

0 ;}

CodeM美團點評程式設計大賽A輪 C 倒水

程式設計題 倒水 時間限制 1秒 空間限制 32768k 有乙個大水缸,裡面水的溫度為t單位,體積為c公升。另有n杯水 假設每個杯子的容量是無限的 每杯水的溫度為t i 單位,體積為c i 公升。現在要把大水缸的水倒入n杯水中,使得n杯水的溫度相同,請問這可能嗎?並求出可行的最高溫度,保留4位小數。...

CodeM美團點評程式設計大賽A輪 C 倒水

倒水 時間限制 1秒 空間限制 32768k 有乙個大水缸,裡面水的溫度為t單位,體積為c公升。另有n杯水 假設每個杯子的容量是無限的 每杯水的溫度為t i 單位,體積為c i 公升。現在要把大水缸的水倒入n杯水中,使得n杯水的溫度相同,請問這可能嗎?並求出可行的最高溫度,保留4位小數。注意 一杯溫...

codeM 美團b輪 E 子串

時間限制 1秒 空間限制 32768k 給出乙個正整數n,我們把1.n在k進製下的表示連起來記為s n,k 例如s 16,16 123456789abcdef10,s 5,2 11011100101。現在對於給定的n和字串t,我們想知道是否存在乙個k 2 k 16 使得t是s n,k 的子串。輸入描...