http://community.topcoder.com/stat?c=problem_statement&pm=12730&rd=15701

这道题有点意思。首先把字符串变成回文,多个字符可能有交叉的等同关系,那么有些字符最终都要是要变成同一个。这个是可以用并查集来做的,标程怕并不是所有人都知道并查集,就用了图的DFS来做。这里用并查集的朴素版本来做,但x = comp[x];y = comp[y];这两句话必不可少,否则下面的循环过程中变化。

#include <string>
#include <vector>
using namespace std; class GooseTattarrattatDiv1 {
public:
int getmin(string S);
}; int GooseTattarrattatDiv1::getmin(string S) {
vector<int> count(26);
for (int i = 0; i < S.length(); i++) {
count[S[i]-'a']++;
}
int len = S.length();
vector<int> comp(26);
for (int i = 0; i < 26; i++) {
comp[i] = i;
}
for (int i = 0; i < len/2; i++) {
int x = S[i] - 'a';
int y = S[len - i - 1] - 'a';
x = comp[x];
y = comp[y];
for (int c = 0; c < 26; c++) {
if (comp[c] == x) {
comp[c] = y;
}
}
}
int ans = 0;
for (int i = 0; i < 26; i++) {
int size = 0;
int _max = 0;
for (int c = 0; c < 26; c++) {
if (comp[c] != i) continue;
size += count[c];
_max = max(count[c], _max);
}
ans += size - _max;
}
return ans;
};

  

*[topcoder]GooseTattarrattatDiv1的更多相关文章

  1. TopCoder kawigiEdit插件配置

    kawigiEdit插件可以提高 TopCoder编译,提交效率,可以管理保存每次SRM的代码. kawigiEdit下载地址:http://code.google.com/p/kawigiedit/ ...

  2. 记第一次TopCoder, 练习SRM 583 div2 250

    今天第一次做topcoder,没有比赛,所以找的最新一期的SRM练习,做了第一道题. 题目大意是说 给一个数字字符串,任意交换两位,使数字变为最小,不能有前导0. 看到题目以后,先想到的找规律,发现要 ...

  3. TopCoder比赛总结表

    TopCoder                        250                              500                                 ...

  4. Topcoder几例C++字符串应用

    本文写于9月初,是利用Topcoder准备应聘时的机试环节临时补习的C++的一部分内容.签约之后,没有再进行练习,此文暂告一段落. 换句话说,就是本文太监了,一直做草稿看着别扭,删掉又觉得可惜,索性发 ...

  5. TopCoder

    在TopCoder下载好luncher,网址:https://www.topcoder.com/community/competitive%20programming/ 选择launch web ar ...

  6. TopCoder SRM 596 DIV 1 250

    body { font-family: Monospaced; font-size: 12pt } pre { font-family: Monospaced; font-size: 12pt } P ...

  7. 求拓扑排序的数量,例题 topcoder srm 654 div2 500

    周赛时遇到的一道比较有意思的题目: Problem Statement      There are N rooms in Maki's new house. The rooms are number ...

  8. TopCoder SRM 590

     第一次做TC,不太习惯,各种调试,只做了一题...... Problem Statement     Fox Ciel is going to play Gomoku with her friend ...

  9. Topcoder Arena插件配置和训练指南

    一. Arena插件配置 1. 下载Arena 指针:http://community.topcoder.com/tc?module=MyHome 左边Competitions->Algorit ...

随机推荐

  1. self指向函数地址 动态调用函数的简单例子

    #import <Foundation/Foundation.h> @interface Person : NSObject - (void)test1; - (void)test2:(N ...

  2. AngularJS开发相关配置

    安装步骤: 1. Node.js,下载地址:https://nodejs.org/en/ 2. Git 下载地址:https://git-scm.com/download/ 3. Python (需为 ...

  3. 关于delete

    上面三图在debug下,delete的时候会以fe ee覆盖指针所指向要回收内存前后较大一块区域的值. 下图对于release下delete的时候会先用fe ee覆盖指针所指位置起6*4=24字节, ...

  4. 面向切面的Spring

    在软件开发中,发布于应用中多处的功能被称为横切关注点.通常,这些横切关注点从概念上是与应用的业务逻辑相分离的(但往往直接嵌入到应用的业务逻辑之中).将横切关注点与业务逻辑相分离是AOP所要解决的. 一 ...

  5. 用一天的时间学习Java EE中的SSH框架

    首先说明一下,本人目前主要从事.NET领域的工作,但对于C++.Java.OC等语言也略知一二,周末闲来无事,特花费一天的时间学习了一下Java中的SSH框架,希望把学习过程中的心得体会与园友们进行分 ...

  6. 浅谈Javascript闭包

    垃圾回收器 我个人把闭包抽象的称之为”阻止垃圾回收器的函数”或者”有权访问另一个函数内部变量的函数"(当然这个是我个人的理解方式,每个人可能会有不同的理解方式),为什么这样说?这样说还得说说 ...

  7. linux ubuntu ppa源

    ubuntu10.04添加删除PPA源 增加ppa资源以后,今后的版本更新什么的都会从launchpad去下载,在国内访问launchpad速度比乌龟还慢   Ubuntu里,PPA代表一种非稳定版本 ...

  8. .net 将excel转成html文件

    最近在做一个打印预览功能,但是开始没有头绪后来用excel做了一个模板,然后根据excel模板来生成新的excel并将其存储为html,可以通过http请求在浏览器中读取,并且打印,其他的不多说.方法 ...

  9. php mysqli多个查询的例子

    php中Mysqli多个查询的例子,感兴趣的朋友可以参考下. php中Mysqli多个查询的例子,感兴趣的朋友可以参考下. mysqli_multi_query(mysqli link,string ...

  10. 由于Linux操作平台屡次受到黑客的“青睐”,LINUX公司也越来越注重产品的安全问题。

    Guardian Digital公司和安全管理服务提供商(MSSP)Guardent公司推出的新产品将提高开放式源代码和Linux产品的安全性能. Guardian Digital公司将于本月底在纽约 ...