HIHO1323 回文字串(區間dp)

2022-02-27 21:42:48 字數 2290 閱讀 8990

思路:區間dp,按照區間長度列舉所有區間和區間的起始位置。這時也可獲取到區間的末位,比對這兩個字元是否相同,如果相同可以更新dp(i,j)=max(dp(i+1,j-1), dp(i,j))。否則,更新三種操作:

dp(i,j)=min(dp(i+1,j),dp(i,j-1),dp(i+1,j-1))+1

1/*2

━━━━━┒ギリギリ♂ eye!

3┓┏┓┏┓┃キリキリ♂ mind!

4┛┗┛┗┛┃\○/

5┓┏┓┏┓┃ /

6┛┗┛┗┛┃ノ)

7┓┏┓┏┓┃

8┛┗┛┗┛┃

9┓┏┓┏┓┃

10┛┗┛┗┛┃

11┓┏┓┏┓┃

12┛┗┛┗┛┃

13┓┏┓┏┓┃

14┃┃┃┃┃┃

15┻┻┻┻┻┻

16*/

17 #include 18 #include 19 #include 20 #include 21 #include 22 #include 23 #include 24 #include 25 #include 26 #include 27 #include 28 #include 29 #include 30 #include 31 #include 32 #include

33 #include 34 #include 35

using

namespace

std;

36#define fr first

37#define sc second

38#define cl clear

39#define bug puts("here!!!")

40#define w(a) while(a--)

41#define pb(a) push_back(a)

42#define rint(a) scanf("%d", &a)

43#define rll(a) scanf("%lld", &a)

44#define rs(a) scanf("%s", a)

45#define cin(a) cin >> a

46#define fread() freopen("in", "r", stdin)

47#define fwrite() freopen("out", "w", stdout)

48#define rep(i, len) for(int i = 0; i < (len); i++)

49#define for(i, a, len) for(int i = (a); i < (len); i++)

50#define cls(a) memset((a), 0, sizeof(a))

51#define clr(a, x) memset((a), (x), sizeof(a))

52#define full(a) memset((a), 0x7f7f7f, sizeof(a))

53#define lrt rt << 1

54#define rrt rt << 1 | 1

55#define pi 3.14159265359

56#define rt return

57#define lowbit(x) x & (-x)

58#define onenum(x) __builtin_popcount(x)

59 typedef long

long

ll;60 typedef long

double

ld;61 typedef unsigned long

long

ull;

62 typedef pairpii;

63 typedef pairpsi;

64 typedef pairpll;

65 typedef mapmsi;

66 typedef vectorvi;

67 typedef vectorvl;

68 typedef vectorvvl;

69 typedef vectorvb;

7071

const

int maxn = 110;72

73int

dp[maxn][maxn];

74char

s[maxn];

75int

n;76

77int

main() 91}

92 printf("

%d\n

", dp[1

][n]);93}

94 rt 0

;95 }

P1435 回文字串(區間dp)

題目背景 ioi2000第一題 題目描述 回文詞是一種對稱的字串。任意給定乙個字串,通過插入若干字元,都可以變成回文詞。此題的任務是,求出將給定字串變成回文詞所需要插入的最少字元數。比如 ab3bd 插入2個字元後可以變成回文詞 dab3bad 或 adb3bda 但是插入少於2個的字元無法變成回文...

1092 回文字串

1092 回文字串 基準時間限制 1 秒 空間限制 131072 kb 分值 10 難度 2級演算法題 回文串是指aba abba cccbccc aaaa這種左右對稱的字串。每個字串都可以通過向中間新增一些字元,使之變為回文字串。例如 abbc 新增2個字元可以變為 acbbca,也可以新增3個變...

1092 回文字串

回文串是指aba abba cccbccc aaaa這種左右對稱的字串。每個字串都可以通過向中間新增一些字元,使之變為回文字串。例如 abbc 新增2個字元可以變為 acbbca,也可以新增3個變為 abbcbba。方案1只需要新增2個字元,是所有方案中新增字元數量最少的。收起輸入乙個字串str,s...