A:不断的消除两个相邻的相等字符,简单题。

真心不习惯STL。。

#include<iostream>
#include <string>
#include <vector>
using namespace std;
class DoubleLetter {
public:
string ableToSolve(string S) {
while (){
int flag=;
for (int i=;i<S.size();i++)
if (S[i]==S[i-])
{
S.erase(i-,);
flag=;
}
if (!flag||S.size()==) break;
}
if (S.size()==) return "Possible";
else return "Impossible";
}
}; // Powered by FileEdit
// Powered by TZTester 1.01 [25-Feb-2003]
// Powered by CodeProcessor

B:给出有N个节点一棵树,求在M个两两的点距离相等求出最大的M值(N<=10);

先FLoyd求出所有点与点之间的距离。

然后用类似状态压缩DP的方式枚举满足的方案。

然后比较出最大值。

#include<iostream>
#include <string>
#include <vector>
#include<string.h>
using namespace std;
int b[];
int dis[][];
int mp[][]; class Egalitarianism3Easy {
public:
int maxCities(int n, vector <int> a, vector <int> b, vector <int> len) {
memset(dis,0x3f3f3f,sizeof(dis)); for (int i=;i<=n;i++) dis[i][i]=; for (int i=;i<a.size();i++) dis[a[i]][b[i]]=dis[b[i]][a[i]]=len[i]; for (int k=;k<=n;k++)
for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
dis[i][j]=min(dis[i][j],dis[i][k]+dis[k][j]); int Max=;
for (int i=;i<(<<n);i++)
{
vector<int> V;
V.clear();
for (int j=;j<n;j++)
if (((i>>j)&)==) V.push_back(j+); int m=V.size();
int same=dis[V[]][V[m-]];
int flag=; for (int k=;k<m;k++)
for (int j=;j<m;j++)
if (k!=j&&dis[V[k]][V[j]]!=same)
{
flag=;
break;
}
if (flag) Max=max(Max,m);
}
return Max;
}
};

C:很锻炼思维的题目。

参考他人的做法:

用类似后缀数组的方式。

只是数组套数组真心醉了。

我的方案是求出满足跟S一样序号的最小的字符串,然后比较与S的值.

代码中有详细注释。

#include<iostream>
#include <string>
#include <vector>
#include<string.h>
#include<algorithm>
using namespace std;
class SuffixArrayDiv2 {
public:
string arr[];
int p[],a[];
//注意P:表示字符串排完序后,所对应原来数组的下标
// A:表示原先字符串在排序后的下标
// 这里很绕,熟悉后缀数组的应该了解
char c[];
string smallerOne(string s) {
for (int i=;i<s.size();i++)
arr[i]=&s[i];//保存后缀
sort(arr,arr+s.size()); int len=s.size();
for (int i=;i<s.size();i++){
p[i]=len-arr[i].size();
a[len-arr[i].size()]=i;
}
a[len]=-;
c[p[]]='a';
for (int i=;i<len;i++){
if (a[p[i-]+]<a[p[i]+]) c[p[i]]=c[p[i-]];
//这个表示:我们确定位置为p[i]的字符,
//如果当前字符串s1,与后面的字符串s2(都是排序后的字符串)
//比较它们后面+1的字符串的大小。这里可以忽视我的解释
else c[p[i]]=c[p[i-]]+;
}
string ans;
for (int i=;i<len;i++) ans+=c[i];
if (ans<s) return "Exists";
else return "Does not exist"; }
}; int main()
{
SuffixArrayDiv2 b;
string s;
cin>>s;
cout<<b.smallerOne(s);
return ;
}

Topcoder SRM 630div 2的更多相关文章

  1. TopCoder SRM 560 Div 1 - Problem 1000 BoundedOptimization & Codeforces 839 E

    传送门:https://284914869.github.io/AEoj/560.html 题目简述: 定义"项"为两个不同变量相乘. 求一个由多个不同"项"相 ...

  2. Topcoder SRM 643 Div1 250<peter_pan>

    Topcoder SRM 643 Div1 250 Problem 给一个整数N,再给一个vector<long long>v; N可以表示成若干个素数的乘积,N=p0*p1*p2*... ...

  3. Topcoder Srm 726 Div1 Hard

    Topcoder Srm 726 Div1 Hard 解题思路: 问题可以看做一个二分图,左边一个点向右边一段区间连边,匹配了左边一个点就能获得对应的权值,最大化所得到的权值的和. 然后可以证明一个结 ...

  4. TopCoder SRM 667 Div.2题解

    概览: T1 枚举 T2 状压DP T3 DP TopCoder SRM 667 Div.2 T1 解题思路 由于数据范围很小,所以直接枚举所有点,判断是否可行.时间复杂度O(δX × δY),空间复 ...

  5. Topcoder Srm 673 Div2 1000 BearPermutations2

    \(>Topcoder \space Srm \space 673 \space Div2 \space 1000 \space BearPermutations2<\) 题目大意 : 对 ...

  6. Topcoder Srm 671 Div2 1000 BearDestroysDiv2

    \(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一 ...

  7. [topcoder]SRM 646 DIV 2

    第一题:K等于1或者2,非常简单.略.K更多的情况,http://www.cnblogs.com/lautsie/p/4242975.html,值得思考. 第二题:http://www.cnblogs ...

  8. [topcoder]SRM 633 DIV 2

    第一题,http://community.topcoder.com/stat?c=problem_statement&pm=13462&rd=16076 模拟就可以了. #includ ...

  9. TopCoder<SRM>上的一道1100分的题目解析附代码

    首先我们来简单看一下这道题的statement Problem Statement      Note that in the following problem statement, all quo ...

随机推荐

  1. PHP取当前页面完整URL地址

    #测试网址: http://localhost/blog/testurl.php?id=5 //获取域名或主机地址 echo $_SERVER['HTTP_HOST']."<br> ...

  2. selenium+python cooking用法 (转)

    selenium-webdriver(python)--cookie处理 driver.get_cookies() 获得cookie信息 add_cookie(cookie_dict)  向cooki ...

  3. Python核心编程--学习笔记--6--序列(下)列表、元组

    11 列表 类似于C语言的数组,但是列表可以包含不同类型的任意对象.列表是可变类型. 创建列表——手动赋值.工厂函数: >>> aList = [12, 'abc'] >> ...

  4. ORACLE-RAC-11G-R2_INSTALL

    ORACLE 11.2.0.3 RAC INSTALL                                                                       20 ...

  5. 九度oj 1349 数字在排序数组中出现的次数

    原题链接:http://ac.jobdu.com/problem.php?pid=1349 二分.. #include<algorithm> #include<iostream> ...

  6. windows phone 豆瓣api的封装

    利用周末的时候,重新封装一下豆瓣的api,就当是练手吧!其实现在网上好用的api很多,在这个demo里面基本上已经将整体框架搭建起来,本来想继续完善下去的.但是其实accesstoken的时候,一直拿 ...

  7. 【译】理解与分析ios应用的崩溃报告

    源网址: http://developer.apple.com/library/ios/#technotes/tn2151/_index.html 当一个应用程序崩溃时,创建一份“崩溃报告”对于理解崩 ...

  8. [LAMP]——mod_security和mod_evasive模块的安装

    系统版本:Red Hat 6 httpd版本:httpd-2.4.20 tar包:modsecurity-apache_2.5.9.tar.gz   mod_evasive_1.10.1.tar.gz ...

  9. STL之map

    参见http://www.cplusplus.com/reference/map/map/ template < class Key,                               ...

  10. php大文件下载

    <?php header("Content-Type:text/html;charset:utf-8"); //class FileDownServer{ //$file_n ...