Topcoder SRM 630div 2
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的更多相关文章
- TopCoder SRM 560 Div 1 - Problem 1000 BoundedOptimization & Codeforces 839 E
传送门:https://284914869.github.io/AEoj/560.html 题目简述: 定义"项"为两个不同变量相乘. 求一个由多个不同"项"相 ...
- Topcoder SRM 643 Div1 250<peter_pan>
Topcoder SRM 643 Div1 250 Problem 给一个整数N,再给一个vector<long long>v; N可以表示成若干个素数的乘积,N=p0*p1*p2*... ...
- Topcoder Srm 726 Div1 Hard
Topcoder Srm 726 Div1 Hard 解题思路: 问题可以看做一个二分图,左边一个点向右边一段区间连边,匹配了左边一个点就能获得对应的权值,最大化所得到的权值的和. 然后可以证明一个结 ...
- TopCoder SRM 667 Div.2题解
概览: T1 枚举 T2 状压DP T3 DP TopCoder SRM 667 Div.2 T1 解题思路 由于数据范围很小,所以直接枚举所有点,判断是否可行.时间复杂度O(δX × δY),空间复 ...
- Topcoder Srm 673 Div2 1000 BearPermutations2
\(>Topcoder \space Srm \space 673 \space Div2 \space 1000 \space BearPermutations2<\) 题目大意 : 对 ...
- Topcoder Srm 671 Div2 1000 BearDestroysDiv2
\(>Topcoder \space Srm \space 671 \space Div2 \space 1000 \space BearDestroysDiv2<\) 题目大意 : 有一 ...
- [topcoder]SRM 646 DIV 2
第一题:K等于1或者2,非常简单.略.K更多的情况,http://www.cnblogs.com/lautsie/p/4242975.html,值得思考. 第二题:http://www.cnblogs ...
- [topcoder]SRM 633 DIV 2
第一题,http://community.topcoder.com/stat?c=problem_statement&pm=13462&rd=16076 模拟就可以了. #includ ...
- TopCoder<SRM>上的一道1100分的题目解析附代码
首先我们来简单看一下这道题的statement Problem Statement Note that in the following problem statement, all quo ...
随机推荐
- 等价表达式 (codevs 1107)题解
[问题描述] 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式,题目的要求是判断选项中哪些 ...
- [.NET 4.5] ADO.NET / ASP.NET 使用 Async 和 Await 异步 存取数据库
此为文章备份,原文出处(我的网站) [.NET 4.5] ADO.NET / ASP.NET 使用 Async 和 Await 异步 存取数据库 http://www.dotblogs.com.tw ...
- 转:OK6410内存及启动流程
一.内存 只是从大体上介绍,并没有涉及寄存器的操作 6410的系统资源为:256MB DDR .2GB NANDFlash 如下图所示: ROM是只读存储器,RAM是随机存储器. 区别: 1.ROM( ...
- 第六章 管理类型(In .net4.5) 之 创建类型
1. 概述 本章内容包括 C#5中如何更好的创建类型以及如何扩展现有类型. 2. 主要内容 2.1 如何选择类型 C#类型系统包括三种类型:值类型.引用类型.指针类型.(指针类型用于非托管代码,很少使 ...
- PuTTY 中文教程
PuTTY 中文教程 更新记录 2006-11-29初步完成想写的这些东西 2007-06-11PuTTY 的最新版本到了0.6:修改了一下 SSH 隧道:添加了 SSH 反向隧道:添加了用 SSH ...
- 一些关于python的小感想
python是一门优秀的语言,但随之而来的是大量的知识,各种模块,相信一个人的大脑是很难记住如此多的内容.这时后的我们就应该想办法避免去记忆这么多的内容. 1.查看官方文档(英语很重要,啥也不说了) ...
- 自学Python二 Python中的屠龙刀(续)
函数 秉承着一切皆对象的理念,函数作为对象,可以为其赋值新的对象名,也可以作为参数传递给其他函数! 正常的诸如空函数,默认参数等等我们就不提了,在这里着重提一下默认参数里面的坑和lambda函数. 当 ...
- IOS应用程序升级
IOS应用程序升级流程介绍:IOS手机端应用程序需要升级时,打开服务器端html文件(本文为ucab.html文件)->点击在线安装->打开plist文件(本文中为ucab.plist文件 ...
- MVC 初始 Log4net (一)
以前没有使用过Log4net 插件来记录日志文件,今天研究了一下,算是有点小眉目了,只是简单的使用一下:来写一篇博客自己记录一下,希望大神们多多包涵,小伙伴多多给提些建议,相互学习,我也是初始阶段,有 ...
- My First Django Project - <Django + MySQL + Ajax> (1)
因为最近工作有些信息需要额外花时间去收集,但是现在有相关的operations每天记录状态,但是没有一个很好的状态收集工具,将状态收集起来,所以很多情况下我们不知道是状态变好了,还是变差.如果使用EX ...