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. 第一篇:R语言数据可视化概述(基于ggplot2)

    前言 ggplot2是R语言最为强大的作图软件包,强于其自成一派的数据可视化理念.当熟悉了ggplot2的基本套路后,数据可视化工作将变得非常轻松而有条理. 本文主要对ggplot2的可视化理念及开发 ...

  2. Java基础知识强化之集合框架笔记07:Collection集合的遍历之迭代器遍历

    1. Collection的迭代器: Iterator iterator():迭代器,集合的专用遍历方式 2. 代码示例: package cn.itcast_03; import java.util ...

  3. python简单小爬虫爬取易车网图片

    上代码: import requests,urllib.request from bs4 import BeautifulSoup url = 'http://photo.bitauto.com/' ...

  4. Python开发【第九篇】:HTML (二)

    python[第十四篇]HTML基础 时间:2016-08-08 20:57:27      阅读:49      评论:0      收藏:0      [点我收藏+] 标签: 什么是HTML? H ...

  5. ST表poj3264

      /* ST表多次查询区间最小值 设 g[j][i] 表示从第 i 个数到第 i + 2 ^ j - 1 个数之间的最小值 类似DP的说 ans[i][j]=min (ans[i][mid],ans ...

  6. JSP学习--常用作用域

    page:当前页面,也就是只要跳到别的页面就失效了 request:一次会话,简单的理解就是一次请求范围内有效 session:浏览器进程,只要当前页面没有被关闭(没有被程序强制清除),不管怎么跳转都 ...

  7. AJAX入门学习(转)

    一.基础概念 1.全称:Asynchronous.JavaScript.And.XML(异步的 JavaScript 和 XML). 2.定义: Ajax不是一个技术,它实际上是几种技术,每种技术都有 ...

  8. CSS3新增UI样式

    圆角,border-radius: 1-4个数字/1-4个数字,前面是水平,后面是垂直,不给“/”表示水平和垂直一样,举例如下: <head> <meta http-equiv=&q ...

  9. 一些css小用法总结(持续更新~)

    1.用:before和:after实现小尖角效果 <div class="div"></div> .div{ background: #fff; borde ...

  10. (转)PHP文件没有结尾的?>有什么好处?

    1.PHP文件没有结尾的?>有什么好处?-- 防止输出一些不必要的空行或者空格2. 如果你是php和html混编的话结尾?> 还是有必要的,否则会报错. 如果没有?>文件末尾的空白行 ...