首页 > 其他 > 详细

DP VK Cup 2012 Qualification Round D. Palindrome pairs

时间:2015-04-01 21:30:04      阅读:423      评论:0      收藏:0      [点我收藏+]

 

题目地址:http://blog.csdn.net/shiyuankongbu/article/details/10004443

 1 /*
 2     题意:在i前面找回文子串,在i后面找回文子串相互配对,问有几对
 3     DP:很巧妙的从i出发向两头扩展判断是否相同来找回文串
 4         dpr[i] 代表记录从0到i间的回文子串的个数,dpl[i] 代表记录i之后的回文子串个数
 5         两两相乘就行了
 6     详细解释:http://blog.csdn.net/shiyuankongbu/article/details/10004443
 7 */
 8 #include <cstdio>
 9 #include <algorithm>
10 #include <cmath>
11 #include <iostream>
12 #include <cstring>
13 #include <string>
14 #include <map>
15 #include <vector>
16 #include <set>
17 using namespace std;
18 
19 const int MAXN = 2000 + 10;
20 const int INF = 0x3f3f3f3f;
21 string s;
22 int dpr[MAXN];
23 int dpl[MAXN];
24 
25 bool ok(int x, int y)
26 {
27     int i, j;
28     for (i=x, j=y; i<=y && j>=x; ++i, --j)
29     {
30         if (s[i] != s[j])    return false;
31     }
32 
33     return true;
34 }
35 
36 int main(void)        //VK Cup 2012 Qualification Round D. Palindrome pairs
37 {
38     //freopen ("D.in", "r", stdin);
39 
40     while (cin >> s)
41     {
42         memset (dpr, 0, sizeof (dpr));
43         memset (dpl, 0, sizeof (dpl));
44         long long ans = 0;
45         int len = s.size ();
46 
47         for (int i=0; i<len; ++i)
48         {
49             for (int j=i, k=i; j>=0&&k<len&&s[j]==s[k]; --j, ++k)
50             {
51                 dpl[j]++;    dpr[k]++;
52             }
53             for (int j=i, k=i+1; j>=0&&k<len&&s[j]==s[k]; --j, ++k)
54             {
55                 dpl[j]++;    dpr[k]++;
56             }
57         }
58 
59         for (int i=1; i<len; ++i)
60             dpr[i] += dpr[i-1];
61 
62         for (int i=0; i<len-1; ++i)
63         {
64             ans += dpr[i] * dpl[i+1];
65         }
66 
67         cout << ans << endl;
68     }
69 
70 
71     return 0;
72 }

 

DP VK Cup 2012 Qualification Round D. Palindrome pairs

原文:http://www.cnblogs.com/Running-Time/p/4385218.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!