POJ 3007 hash表

MPN – 制造商物料编号(延伸) 此外,用户还可以在物料主数据中定义阻止MPN材料的原因,以及在采购订单创建时,是否可以将现有的MPN材料修改为其他MPN材料,从而实现对MPN材料的精细控制和管理。通过使用AMPL,用户可以指定每个MPN材料是否仅能为特定工厂或整个企业所有工厂采购、采购的时间段、是否必须属于特定修订级别、是否只能从特定制造商工厂采购以及是否被阻止及其原因。通过AMPL管理,企业可以规范采购流程,避免使用未经批准的材料,从而提高采购的透明度和效率,同时也为质量控制提供了保障‌。3、QM中的制造商物料。质量信息记录QI01。 阅读详情

大致题意:

给定一个字符串,从任意位置把它切为两半,得到两条子串

定义 子串1为s1,子串2为s2,子串1的反串为s3,子串2的反串为s4

现在从s1 s2 s3 s4中任意取出两个串组合,问有多少种不同的组合方法

 

规定:

(1)       串Si不能和其 反串 组合

(2)       Si+Sj 与 Sj+Si 是两种组合方式(但未必是不同的组合方式)

 

解题思路:

利用hash表查重

 

穷举全部组合的情况,每枚举一个就记录一次,假如后面枚举的组合已经存在记录,说明组合重复,计数器不变,否则计数器+1

 

本题不能用STL的map映射,map太慢会超时

自己写Hash表吧!

对于*ps指向的字符串s,我定义的关键字 

 

可以认为i为权重,利用字母的ASCII得到key

解决冲突方法为链地址法

#include<cstring>
#include<cstdio>
using namespace std;
const int size=81;
const int MOD=99991;
const int nMax=1005;

int ans,cnt;
char s[size],sl[size],sr[size],ls[size],rs[size],temp[size];
struct Node
{
	char s[size];
	Node *next;
	Node()
	{
		next=0;
	}
}no[nMax];
Node * hash[MOD];

void str_cut(char *s,char *sl,int ln,char *sr,int rn)
{
	int i,j;
	for(i=0;i<ln;i++)
	{
		sl[i]=s[i];
	}
	sl[ln]='\0';

	for(j=0;i<rn;i++,j++)
	{
		sr[j]=s[i];
	}
	sr[j]='\0';
}

void add(char *s)
{
	int i,key=0;
	for(i=0;s[i]!='\0';i++)
	{
		key+=(s[i]-'a'+1)*(i+1);
	}
	key%=MOD;
	if(hash[key]==0)
	{
		ans++;
		hash[key]=&no[cnt++];
		strcpy(hash[key]->s,s);
	}
	else
	{
		Node *p=hash[key];
		Node *last=p;
		while(p!=0)
		{
			if(strcmp(p->s,s)==0)
			{
				return ;
			}
			last=p;
			p=p->next;
		}
		last->next=&no[cnt++];
		strcpy(last->next->s,s);
		ans++;
	}
}

void str_res(char *st,char *ts)
{
	int len=strlen(st);
	int i,j;
	for(i=0,j=len-1;i<len;i++,j--)
	{
		ts[j]=st[i];
	}
	ts[len]='\0';
}

void str_add(char *s1,char *s2,char *temp)
{
	int i,j,k;
	i=j=k=0;
	for(;s1[i]!='\0';i++,k++)
	{
		temp[k]=s1[i];
	}
	for(;s2[j]!='\0';j++,k++)
	{
		temp[k]=s2[j];
	}
	temp[k]='\0';
}

int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		scanf("%s",s);
		int len=strlen(s);
		if(len==1)
		{
			printf("1\n");
			continue;
		}
		ans=cnt=0;
		memset(hash,0,sizeof(hash));
		int i;
		for(i=0;i<nMax;i++)
		{
			no[i].next=0;
		}

		add(s);
		for(i=1;i<len;i++)
		{
			str_cut(s,sl,i,sr,len);
			str_res(sl,ls);
			str_res(sr,rs);

			str_add(sr,sl,temp);
			add(temp);
			str_add(sl,rs,temp);
			add(temp);
			str_add(rs,sl,temp);
			add(temp);
			str_add(ls,sr,temp);
			add(temp);
			str_add(sr,ls,temp);
			add(temp);
			str_add(ls,rs,temp);
			add(temp);
			str_add(rs,ls,temp);
			add(temp);
		}
		printf("%d\n",ans);
	}
	return 0;
}


华为2288H V5服务器断电后‘趴窝’?别慌,手把手教你用SmartKit+BMC修复工具搞定 本文详细介绍了华为2288H V5服务器在断电后无法启动的修复方法,通过SmartKit和BMC修复工具进行故障诊断与修复。文章提供了从工具获取、安装到具体修复流程的完整指南,帮助运维人员快速恢复服务器运行,并给出了后续加固与预防措施,确保服务器稳定运行。 阅读详情

相关推荐

20个闭环渗透测试项目:从漏洞发现到简历突围

渗透测试不仅是工具使用,更是对系统设计缺陷与实现偏差的深度推演。理解OWASP Top 10、Burp Suite等基础能力只是起点,真正具备工程价值的是能复现、可验证、可协作的完整攻击链。本文聚焦真实业务场景下的SSRF协议绕过、JWT签名机制缺陷、Redis未授权利用、Kong网关配置风险及etcd存储结构分析等核心热词,揭示漏洞本质在于架构决策与配置偏差的叠加态。适用于红队实战、甲方安全建设与乙方渗透审计等多类岗位,帮助从业者将技术动作升维为技术叙事。

weixin_32234493的博客 415

poj 3007 Organize Your Train part II(字符串哈希)

题目链接:http://poj.org/problem?id=3007 题意:给出一个字符串,从任意一个地方切开,分成两个字符串s1,s2,然后分别反转成s3,s4,然后将四个字符串任意组合(子串及其反串不可组合),求出所有不同的组合数。 如果用STL的话这题会超时,map什么的都用不了,就自己写了一个丑陋的哈希,设计的哈希函数也比较简单,47ms才过。 #include #include

To be excellent! 1619

告别实车测试:手把手教你用Vector VT平台搭建OBC/DCDC的HIL测试台架

本文详细介绍了如何利用Vector VT平台搭建新能源汽车OBC/DCDC的HIL测试台架,涵盖硬件选型、模型部署到自动化测试的全流程。通过HIL仿真测试技术,工程师可以高效验证动力域关键部件,大幅缩短开发周期并降低成本,特别适合新能源汽车三电系统的开发验证。

weixin_42659194的博客 341

[POJ 3007]Organize Your Train part II[Hash][Trie]

题目链接:[POJ 3007]Organize Your Train part II[Hash][Trie] 题意分析: 将字符串任意分割两半。可进行下列操作:1.互换两半的位置;2.将其中一个反转。每次操作次数不限。 问:给出的字符串,一共能产生多少个不同的字符串? 解题思路: 搞搞搞~先看看分成两半都有什么情况,发现总共有八种组合,我们用s串记录没有前后交换过位置的字符串,t串记录交

闲停 590

从零开始:用Neo4j构建你的第一个知识图谱(附完整代码示例)

本文提供了一份从零开始的Neo4j知识图谱构建实战指南。通过一个“经典科幻电影宇宙”的具体案例,手把手教你安装环境、设计图谱模式,并使用Cypher查询语言完成节点与关系的创建、数据查询及可视化,帮助你快速掌握自下而上构建知识图谱的核心技能。

weixin_29053073的博客 475

156、手机摄像头模组结构拆解:从保护盖到 FPC 连接器的完整装配剖面

本文深入解析手机摄像头模组结构设计要点。作者结合项目经验,指出保护盖密封胶在低温收缩会导致边缘漏光问题,强调结构细节比算法参数更关键。文章逐层拆解模组组件:保护盖厚度需平衡抗冲击与光学性能;镜筒内镜片组装配顺序和公差控制直接影响成像质量;IR滤光片厚度公差±0.02mm会改变红外截止波长;CSP封装需注意金线加固;FPC连接器的信号完整性和机械可靠性设计。最后给出5条实用建议,包括密封胶选型、镜片对位检测等,强调模组结构设计是"一票否决制"的基础工程。(149字)

sundong_81的博客 107

POJ 3007(字符串hash)

POJ 3007题目大意分析一开始用map做超时,后面看网上题解用字符串hash,然而这道题却被分到的是STL类的题。后面看到一篇用set+hash做了,用了这个方法后900+ms险过。然而还是感觉这个方法有点投机取巧,里面是直接把字符串求出一个取模后(模比较大)的key后放到set里像这种不加冲突处理的hash也能过set没有超时只能说是运气好了后面有空再写写标准的字符串hash一篇不错的hash

AIDreamer 631

基于STM32L4XX 、HAL库的TMC2209-LA-T步进电机驱动器驱动程序应用设计

/ R/W=0 表示写。uint32_t gconf_value = (0 << 0) // I_scale_analog: 禁用,使用UART控制电流。uint32_t ihold_irun = (8 << 0) // 保持电流 8/31 最大值。

PP_Cottage的博客 450

poj 3007 哈希

题目:http://poj.org/problem?id=3007 题意: 给定一个字符串,从任意位置把它切为两半,得到两条子串 定义 子串1为s1,子串2为s2,子串1的反串为s3,子串2的反串为s4 现在从s1 s2 s3 s4中任意取出两个串组合,问有多少种不同的组合方法 分析: 发现字符串长度最多为72,刚开始用的string+substr+reverse构造新子串,直

HARD_UNDERSTAND 292

(王道408考研数据结构)第二章线性表-第一节:线性表的定义和基本操作

文章目录一:线性表的定义二:线性表的基本操作 一:线性表的定义 线性表(Linear List):零个或多个数据元素的有限序列 元素之间是有顺序的 若元素存在多个,则第一个元素无前驱,最后一个元素无后继,其他元素都有且只有一个前驱和后继 线性表强调有限,“所有的整数按递增次序排列”很明显不是线性表 线性表可以表示为 L=(a1,a1,...,ai+1,...,an)L=(a_{1},a_{1},...,a_{i+1},...,a_{n})L=(a1​,a1​,...,ai+1​,...,an​) a

快乐江湖的博客 3705

RH850系列芯片深度剖析 1.5-链接(ld)文件解析

基础编译过程分为四个阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)。执行这四个阶段的程序(预处理器、编译器、汇编器、和链接器)一起构成了编译系统。CONSTANTS接下来的内存空间定义部分会使用这些常量来定义内存空间的范围,理论上来说不定义常量也没有影响,直接用魔鬼数字代替,定义常量的主要目的就是方便理解以及方便修改;从示例中可以看出,常量的值可以为16进制或者10十进制,而且10进制支持数量级单位(k级,M级);

本博客专注于嵌入式软件领域技术分享。 1430

poj 3007

大致题意: 给定一个字符串,从任意位置把它切为两半,得到两条子串 定义 子串1为s1,子串2为s2,子串1的反串为s3,子串2的反串为s4 现在从s1 s2 s3 s4中任意取出两个串组合,问有多少种不同的组合方法 规定: (1)       串Si不能和其 反串 组合 (2)       Si+Sj 与 Sj+Si 是两种组合方式(但未必是不同的组合方式)   思路:...

一颗平常心 236

【错误解决】本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止

转载请注明出处:http://blog.youkuaiyun.com/qq_26525215 本文源自【大学之旅_谙忆的博客】 在启动mysql服务时出现该错误: 本地计算机上的mysql服务启动停止后,某些服务在未由其他服务或程序使用时将自动停止。mysql 版本 5.7.14 系统 win 7后来经过一系列的百度,谷歌,总算是解决了。首先,你需要把原来的服务删除:mysqld --remove mysq

谙忆-陈浩翔 12万+

poj 3007 Organize Your Train part II (哈希)

题目:http://poj.org/problem?id=3007 题目不难,,,如果用STL的话会很简单,但会TLE 后来我敲了一个tri树。。爆内存。。 又改成哈希以后结果。。。还是TLE。。。 后来看的别人的报告,,,结果是他们用的是指针数组,我的不是。。。还是指针快啊。。 代码: View Code 1 #include <iostream> ...

weixin_33805992的博客 94

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

ELF hash算法:poj3007

据说此题专门卡STL,所以去学习了ELFhash 算法 @zhanglin496 http://blog.chinaunix.net/uid-24683784-id-3061386.html题意: 给定一个字符串,从任意位置把它切为两半,得到两条子串 定义 子串1为s1,子串2为s2,子串1的反串为s3,子串2的反串为s4 现在从s1 s2 s3 s4中任意取出两个串组合,问有多少种不同的

lxp6164的博客 437

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

哈希算法之四

//poj 3007 Organize Your Train part II//题意:给定一个字符串,从任意位置把它切为两半,得到两个子串//定义子串1为s1,子串2为s2,子串1的反串为s3,子串2的反串为s4//现在从s1 s2 s3 s4中任意取出两个串组合,问有多少种不同的组合方法//限制: (1) 串Si不能和其反串组合 (2) Si+Sj与Sj+Si是两种组合方式(但未必是不同的组...

weixin_30755709的博客 80

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

【POJ 3007】 Organize Your Train part II (字符串HASH)

【POJ 3007】 Organize Your Train part II (字符串HASH) Organize Your Train part II Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7559   Accepted: 2193

ACMer' 1218

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

http://poj.org/problem?id=3007 题意 :给你一个字符串,让你无论从什么地方分割,把这个字符串分成两部分s1和s2,然后再求出s3和s4,让你进行组合,看能出来多少种不同的形式。 思路 :记得以前的时候就听他们讨论这道题,说是用map做会超时,所以我直接就没用map。。。。但是做这道题实在是太波折了,昨天晚上改了一晚上都不对,就是不知道哪里出了问题,今早上又改,改来...

weixin_30748995的博客 121

ACM: hash开散列 poj 3007 (Nothin…

Organize Your Train part II   Description RJ Freight, a Japanese railroad company for freight operations has recently constructed exchange lines at Hazawa, Yokohama. The layout of the lines is shown i

smile_benson 296

poj3007

题目不难。hash快速查找 大致题意为:给定一串

小小小小杜 786

POJ3007-Organize Your Train part II

全解题报告索引目录 -> 【北大ACM – POJ试题分类】 转载请注明出处:http://exp-blog.com ------------------------------------------------------------------------- 大致题意: 给定一个字符串,从任意位置把它切为两半,得到两条子串 定义 子串1为s1,子串2为s2,子串1...

ζёСяêτ - 小優YoU 3996

Organize Your Train part II POJ 3007 (哈希&链式解决冲突)

题目大意:将一个字符串分解成任意的两部分,且两部的串及其反串相互组合,看能有多少种组合方式。思路:(用map超时- -,结果换成哈希险过)。#include<map> #include<queue> #include<cmath> #include<iostream> #include<cstdio> #include<stack> #include<cstring> #include<algori

Grit_ICPC的博客 1094

(POJ3007)Organize Your Train part II <reverse函数/ hash / STL>

Organize Your Train part II DescriptionRJ Freight, a Japanese railroad company for freight operations has recently constructed exchange lines at Hazawa, Yokohama. The layout of the lines is shown in F

STILLxjy 934

poj 3007 Organize Your Train part II 哈希判重

//poj 3007 //sep9 #include #include using namespace std; const int MAXN=1024; const int HASHLEN=1000024; int n,cnt; char s[MAXN],s1[MAXN],s2[MAXN],s3[MAXN],s4[MAXN]; struct HashNode{ char str[MAXN]

sepNINE的专栏 1128

poj3007 Organize Your Train part II, 字符串hash

题意: 给定一个字符串,从任意位置把它切为两半,得到两条子串 定义 子串1为s1,子串2为s2,子串1的反串为s3,子串2的反串为s4 现在从s1 s2 s3 s4中任意取出两个串组合,问有多少种不同的组合方法 #include #include #include #include #include #include #include #include #inc

天亮说晚安 2315
上一篇: HDU 4059 容斥原理及其应用
下一篇: POJ 1195 二维树状数组
MakingMaker
博客等级 码龄15年 6粉丝 108原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值