【链接】 我是链接,点我呀:)

【题意】

在这里输入题意

【题解】

先用枚举回文串中点的方法。
得到这个字符串中出现的所有的回文。
得到他们的左端点以及右端点。
整理成一个pair数组
然后排序。
对于每一个回文串。
查找起点比这个回文串的终点大的所有回文串的个数。

【代码】

#include <bits/stdc++.h>
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define all(x) x.begin(),x.end()
#define pb push_back
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
using namespace std; const double pi = acos(-1);
const int dx[4] = {0,0,1,-1};
const int dy[4] = {1,-1,0,0};
const int N = 2000; int n;
char s[N+10];
vector<pair<int,int> > v; int main(){
#ifdef LOCAL_DEFINE
freopen("rush_in.txt", "r", stdin);
#endif
ios::sync_with_stdio(0),cin.tie(0);
cin >>(s+1);
n = strlen(s+1);
for (int i = 1;i <= n;i++){
int l = i,r = i;
while (l>=1 && r<= n){
if (s[l]!=s[r]) break;
v.push_back({l,r});
l--;r++;
}
l = i-1,r = i;
while (l>=1 && r<= n){
if (s[l]!=s[r]) break;
v.push_back({l,r});
l--;r++;
}
} sort(v.begin(),v.end()); long long ans = 0;
for (int i = 0;i < (int)v.size();i++){
int x = v[i].second;
int l = 0,r = (int)v.size()-1,temp = -1;
while (l<=r){
int mid = (l+r)>>1;
if (x<v[mid].first){
temp = mid;
r = mid -1;
}else{
l = mid+1;
}
}
if (temp==-1) continue;
ans += v.size()-temp;
}
cout<<ans<<endl;
return 0;
}

最新文章

  1. daydayup2 codeforces143C
  2. c#多态之抽象类与接口的一点收获~~
  3. reactjs 入门
  4. ASA QOS限速
  5. Canvas翻转方法
  6. Deploying OpenFire for IM (instant message) service (TCP/IP service) with database MySQL , client Spark on linux部署OpenFire IM 消息中间件服务
  7. POJ 1584 A Round Peg in a Ground Hole
  8. JS中使用正则表达式替换对象里的大小写
  9. Nginx反向代理、负载均衡、动静分离、缓存、压缩、防盗链、跨域访问
  10. sys 模块的应用
  11. win10安装java
  12. SpirngBoot之整合Swagger2
  13. LearnOpenGL 你好,三角形[转]--附源码
  14. Awk 从入门到放弃(4) — Aws 格式化
  15. select case when if 的一些用法
  16. 2018.11.23 Cypress BLE module test
  17. Maven 安装jar文件到本地repository
  18. 算法笔记(c++)--关于01背包的滚动数组
  19. Scrum立会报告+燃尽图(十月十五日总第六次):视频上传及选题介绍工作
  20. 使用Java实现八种基本排序

热门文章

  1. selenium+java实现浏览器前进、后退和刷新
  2. ASP.NET-signalR学习笔记
  3. BA-Delta知识点
  4. wordpress迁移以及遇到的一些问题[mysql备份导入导出][固定链接404]
  5. 假设让我又一次设计一款Android App
  6. 从零单排入门机器学习:线性回归(linear regression)实践篇
  7. Android 推断程序在手机中是否是活动状态或者正在执行状态
  8. 创建cifs系统案例之“实现将Windows磁盘共享至Linux”
  9. POJ1274 The Perfect Stall 二分图,匈牙利算法
  10. 英语发音规则---R字母