http://poj.org/problem?id=3007

 #include<cstdio>
#include<algorithm>
#include<cstring>
#define maxn 600000
using namespace std; struct node
{
char s[];
node *next;
};
int ans;
node *hash[maxn]; void insert(char s[])
{
int k=strlen(s);
int sum=;
for(int i=; i<k; i++)
{
sum+=s[i]*i;
}
//printf("%d %s\n",sum,s);
if(!hash[sum])
{
node *p=new node();
strcpy(p->s,s);
hash[sum]=p;
ans++;
//printf("*%d %s\n",sum,s);
}
else
{
node *p=hash[sum];
if(!strcmp(p->s,s)) return ;
else
{
while(p->next!=NULL)
{
if(!strcmp(p->next->s,s))
return ;
p=p->next;
}
node *q=new node();
strcpy(q->s,s);
p->next=q;
ans++;
//printf("*%d %s\n",sum,s);
}
}
return ;
} void change(char s1[],char s2[],char s3[],char s4[])
{
int k1=strlen(s1);
int k2=strlen(s2);
int t1=,t2=;
for(int i=k1-; i>=; i--)
{
s3[t1++]=s1[i];
}
s3[t1]='\0';
for(int j=k2-; j>=; j--)
{
s4[t2++]=s2[j];
}
s4[t2]='\0';
} void merge(char str1[],char str2[],char str3[])
{
int m=;
int k1=strlen(str1);
int k2=strlen(str2);
for(int i=; i<k1; i++)
{
str3[m++]=str1[i];
}
for(int j=; j<k2; j++)
{
str3[m++]=str2[j];
}
str3[m]='\0';
} int main()
{
int t;
char str[],s1[],s2[],s3[],s4[],s[];
scanf("%d",&t);
while(t--){
ans=;
scanf("%s",str);
if(strlen(str)==){
printf("1\n");
continue;
}
memset(hash,,sizeof(hash));
int k=strlen(str);
for(int i=; i<=k-; i++)
{
//printf("%d\n",i);
int t1=,t2=,j;
for(j=; j<i; j++)
{
s1[t1++]=str[j];
}
s1[t1]='\0';
for(; j<k; j++)
{
s2[t2++]=str[j];
}
s2[t2]='\0';
change(s1,s2,s3,s4);
merge(s1,s4,s);
insert(s);
merge(s1,s2,s);
insert(s);
merge(s2,s3,s);
insert(s);
merge(s4,s1,s);
insert(s);
merge(s2,s1,s);
insert(s);
merge(s3,s2,s);
insert(s);
merge(s4,s3,s);
insert(s);
merge(s3,s4,s);
insert(s);
}
printf("%d\n",ans);
}
return ;
}

poj Organize Your Train part II的更多相关文章

  1. POJ 3007 Organize Your Train part II

    题意: 如上图所示,将一个字符串进行分割,反转等操作后不同字符串的个数: 例如字符串abba:可以按三种比例分割:1:3:2:2:3:1 部分反转可以得到如下所有的字符串: 去掉重复可以得到六个不同的 ...

  2. POJ 3007 Organize Your Train part II (字典树 静态)

    Organize Your Train part II Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6478   Acce ...

  3. POJ 3007:Organize Your Train part II

    Organize Your Train part II Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7561   Acce ...

  4. Organize Your Train part II 字典树(此题专卡STL)

    Organize Your Train part II Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 8787   Acce ...

  5. poj 3007 Organize Your Train part II(二叉排序树)

    题目:http://poj.org/problem?id=3007 题意:按照图示的改变字符串,问有多少种..字符串.. 思路:分几种排序的方法,,刚开始用map 超时(map效率不高啊..),后来搜 ...

  6. POJ 3007 Organize Your Train part II(哈希链地址法)

    http://poj.org/problem?id=3007 题意 :给你一个字符串,让你无论从什么地方分割,把这个字符串分成两部分s1和s2,然后再求出s3和s4,让你进行组合,看能出来多少种不同的 ...

  7. poj 3007 Organize Your Train part II(静态字典树哈希)

    Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6700 Accepted: 1922 Description RJ Freigh ...

  8. Organize Your Train part II(hash)

    http://poj.org/problem?id=3007 第一次用STL做的,TLE了,自己构造字符串哈希函数才可以.. TLE代码: #include <cstdio> #inclu ...

  9. Organize Your Train part II-POJ3007模拟

    Organize Your Train part II Time Limit: 1000MS Memory Limit: 65536K Description RJ Freight, a Japane ...

随机推荐

  1. MongoDB 聚合

    聚合操作过程中的数据记录和计算结果返回.聚合操作分组值从多个文档,并可以执行各种操作,分组数据返回单个结果.在SQL COUNT(*)和group by 相当于MongoDB的聚集. aggregat ...

  2. Android图片框架---Glide

    Glide *** 使用* 一.添加依赖* compile 'com.github.bumptech.glide:glide:3.7.0'* compile 'com.android.support: ...

  3. [转] 多线程下变量-gcc原子操作 __sync_fetch_and_add等

    http://blog.sina.com.cn/s/blog_6f5b220601013zw3.html 非常好的原子操作,不用加锁:__sync_fetch_and_add GCC 提供的原子操作 ...

  4. Protobuf的自动反射消息类型的方法

    1. 每个消息头部中带上type name,作为消息的类型标识 2. 通过type name可以找到描述符Descriptor*, FindMessageTypeByName 3. 通过描述符Desc ...

  5. C++转换函数

    1. 赋值操作时把右操作数隐式转化为左操作数2. 通过普通单参数构造函数把其他类型的对象隐式转换为我们的类类型3. 通过转换函数operator type()这种成员函数可以把类类型转成其他类型,这样 ...

  6. 深入探索C++对象模型-1

    概述 在实际生产中,遇到一个复杂的类,如果能看出这个类的内存模型结构,那么以后的操作基本就没有难度的: 所以说,学会分析一个类的内存模型,是每一个C++程序员必须要会的知识. 下面,就让我们来了解C+ ...

  7. select poll epoll三者之间的比较

    一.概述 说到Linux下的IO复用,系统提供了三个系统调用,分别是select poll epoll.那么这三者之间有什么不同呢,什么时候使用三个之间的其中一个呢? 下面,我将从系统调用原型来分析其 ...

  8. 案例:计算1!+2!+3!+......+n!

    /* * 1!+2!+3!+......+n! * */ import java.util.Scanner; public class ForTest{ public static void main ...

  9. EXT ajax简单实例

    转载:http://www.cnblogs.com/xiepeixing/archive/2012/10/24/2736751.html EXT ajax request是ext中对于ajax请求的实 ...

  10. asp.net中@page 指令的属性Inherits、Src、CodeBehind区别

    在 ASP.NET 中使用代码隐藏方法来设计Web 窗体,可使页代码能够更清晰地从 HTML 内容中分离到完全单独的文件中. <%@ Page language="c#" C ...