B - Reverse and Compare 小小思维题
2024-09-06 11:33:31
http://agc019.contest.atcoder.jp/tasks/agc019_b
一开始的做法是,
用总数减去回文子串数目,因为回文子串怎么翻转都不影响答案。
然后,如果翻转afucka,那么和翻转fuck,得到的串是一样的。
但是如果是先是用total - 回文子串数目,再减去afucka这样的,一头一尾相同,但是又不是回文串的字符串,复杂度要O(n^2)
考虑到回文串也是一头一尾相同的,那么相当于翻转一头一尾不相同的字符串才能得到新的贡献
相当于total - (一头一尾相同的)
#include <bits/stdc++.h>
#define IOS ios::sync_with_stdio(false)
using namespace std;
#define inf (0x3f3f3f3f)
typedef long long int LL;
const int maxn = * + ;
char str[maxn];
int num[maxn];
void work() {
scanf("%s", str + );
int lenstr = strlen(str + );
LL ans = 1LL * lenstr * (lenstr - ) / + ;
for (int i = ; i <= lenstr; ++i) {
num[str[i]]++;
}
for (int i = 'a'; i <= 'z'; ++i) {
ans -= 1LL * num[i] * (num[i] - ) / ;
}
cout << ans << endl;
} int main() {
#ifdef local
freopen("data.txt", "r", stdin);
// freopen("data.txt", "w", stdout);
#endif
work();
return ;
}
最新文章
- three.js加入监控
- Js的引用关系示例和总结
- liunx 服务内存消耗100% 怎么处理
- Python 读书系列
- Mac OS X Yosemite 10.10 配置 Apache+PHP 教程注意事项
- TestNG目录
- JQUERY1.9学习笔记 之内容过滤器(三) has选择器
- Locally weighted linear regression(局部加权线性回归)
- [原]node.js使用感想
- apache在window server 2003下的安全配置
- Git通过密钥对远程仓库上传和更新详细操作
- Python爬虫之多线程下载豆瓣Top250电影图片
- A1124. Raffle for Weibo Followers
- 定时调度篇之Quartz.Net详解(被替换)
- DataStream_操作基本类型数据的流对象
- java基本数据结构和算法
- 十个强大的DevOps基础设施自动化工具,不容错过
- C#基础第六天-作业-利用面向对象的思想去实现名片
- fb 发布桌面应用图标
- ORB_SLAM2 源码阅读 ORB_SLAM2::Initializer