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. Lucene 4.10.2开发示例

    这里面用的是比较新的Lucene4.10.2 做的一个实例.(lucene的索引不能太大,要不然效率会很低.大于1G的时候就必须考虑分布索引的问题) 先介绍一下Lucene的几个参数意义: Index ...

  2. Android 通过反射让SQlite建表如此简单

    我们通常使用SQlite的时候,假设我们有10张表,我们要写10个建表语句.而建表语句中仅仅有一些字段的名字须要改而已,这样既费时又费力,还easy出错.我们知道写sql语句的时候常常会写错,假设写错 ...

  3. SQL 约束解说

    SQL 约束解说 2009-04-27 09:29 约束主要包含: NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT 1.not null : ...

  4. Oracle MERGE INTO的使用方法

    非常多时候我们会出现例如以下情境,假设一条数据在表中已经存在,对其做update,假设不存在,将新的数据插入.假设不使用Oracle提供的merge语法的话,可能先要上数据库select查询一下看是否 ...

  5. [转] boost------ref的使用(Boost程序库完全开发指南)读书笔记

    http://blog.csdn.net/zengraoli/article/details/9663057 STL和Boost中的算法和函数大量使用了函数对象作为判断式或谓词参数,而这些参数都是传值 ...

  6. spring定时器任务多任务串行执行问题排查

    最近发现个生产问题,定时器任务某些任务没有及时执行.经过研究排查发现spring 定时器任务scheduled-tasks默认配置是单线程串行执行的,这就造成了若某个任务执行时间过长,其他任务一直在排 ...

  7. Android系统移植与驱动开发----第一章

    第一章 Android系统移植与驱动开发 Android源代码定制完全属于自己的嵌入式系统,但是支持的设备不多,所以要移植,而在移植的过程中使用的不得不提的是驱动开发. Android系统构架主要包括 ...

  8. Linux磁盘管理:LVM逻辑卷的创建及使用

    一.创建LVM逻辑卷 事先添加了三块虚拟物理磁盘/dev/sdb 1G, /dev/sdc 2G, /dev/sdd 3G 使用fdisk –l命令查看: [root@localhost ~]# fd ...

  9. JFreeChart当鼠标停留在热点提示自定义信息功能

    当鼠标停留在数据点时,希望有提示信息显示,但是根据业务需要,我们需要自定义显示一下信息!具体功能实现如下: 首先我们要弄明白,Jfreechart鼠标提示信息显示主要是得到一个数据的map对象,该ma ...

  10. codevs 1993 草地排水 USACO

    /*Dinic*/ #include<iostream> #include<cstdio> #include<cstring> #include<queue& ...