POJ2513 Colored Sticks(字典树+并查集+欧拉回路)

如何构建高质量的 QA 问答知识库 NLP 技术落地最普遍的场景就是智能客服,如阿里的”小蜜“,京东的“JIMI”等等。NLP 技术也广泛应用于搜索系统。无论是“智能客服”,还是“搜索系统”,构建的前提是拥有“高质量的QA知识库”。今天聊聊“如何构建高质量QA知识库。”。 历史对话数据分布分析 基于公司现有系统积累的大规模对话文本数据,需要对文本数据进行归类处理,分析每个部分数据的占比,挖掘出有价值的文本通过 NLP 相关技术进行商业价值转化。下文以医疗领域来举例说明,通过输入对象,可以将文本分为客服输入和用户输入两部分。挖掘相关问题,主要从 阅读详情

Colored Sticks
Time Limit: 5000MS Memory Limit: 128000K
Total Submissions: 33185 Accepted: 8729

Description

You are given a bunch of wooden sticks. Each endpoint of each stick is colored with some color. Is it possible to align the sticks in a straight line such that the colors of the endpoints that touch are of the same color?

Input

Input is a sequence of lines, each line contains two words, separated by spaces, giving the colors of the endpoints of one stick. A word is a sequence of lowercase letters no longer than 10 characters. There is no more than 250000 sticks.

Output

If the sticks can be aligned in the desired way, output a single line saying Possible, otherwise output Impossible.

Sample Input

blue red
red violet
cyan blue
blue magenta
magenta cyan

Sample Output

Possible

Hint

Huge input,scanf is recommended.



问你字符串能不能欧拉回路。简单明了的题用到了三个知识点。。


首先要考虑的是数据范围,给出的范围过大用字典树hash为int,而后判断是不是欧拉回路(图连通且结点的度均为偶数或有两个奇数度

的点)。


AC代码:


#include "iostream"
#include "cstdio"
#include "cstring"
#include "algorithm"
using namespace std;
const int MAXN = 5e5 + 5;
int par[MAXN], deg[MAXN], ran[MAXN], n = 1;
struct node
{
	/* data */
	int id;
	bool vis;
	node *next[30];
	node() {
		id = 0;
		vis = false;
		for(int i = 0; i < 27; ++i)
			next[i] = NULL;
	}
}*root;
int hashint(char *s)
{
	node *p = root;
	int k;
	while(*s != 0) {
		k = *s - 'a';
		if(p -> next[k] == NULL) p -> next[k] = new node();
		p = p -> next[k];
		s++;
	} 
	if(!p -> vis) {
		p -> id = n;
		n++;
		p -> vis = true;
		return p -> id;
	}
	else return p -> id;
}
int find(int x)
{
	if(x == par[x]) return x;
	return par[x] = find(par[x]);
}
void merge(int x, int y)
{
	if(ran[x] < ran[y]) par[x] = y;
	else {
		par[y] = x;
		if(ran[x] == ran[y]) x++;
	}
}
int main(int argc, char const *argv[])
{
	char a[15], b[15];
	root = new node();
	for(int i = 1; i < MAXN; ++i)
		par[i] = i;
	while(scanf("%s%s", a, b) != EOF) {
		int x = hashint(a), y = hashint(b);
		deg[x]++, deg[y]++;
		int fx = find(x), fy = find(y);
		if(fx != fy) merge(fx, fy);
	}
	int tmp = find(1), num = 0;
	for(int i = 1; i < n; ++i) {
		if(find(i) != tmp) {
			printf("Impossible\n");
			return 0;
		}
		if(deg[i] % 2) num++;
		if(num > 2) {
			printf("Impossible\n");
			return 0;
		}
	}
	if(num == 1) printf("Impossible\n");
	else printf("Possible\n");
	return 0;
}


[密码学实战]商密TLCP协议抓包解析与深度分析(二十九) 阅读详情

相关推荐

【信道编码/Channel Coding】线性分组码

这是本专栏信道编码/Channel Coding的第二站,想对信道编码有一个系统性的认识可以看本专栏的信道编码的整体框架一文。而在本篇文章中,将介绍线性分组码的基本原理。

Tomatomatodo的博客 9243

POJ 2513 Colored Sticks(欧拉回路判断+字典树Trie+并查集)

POJ 2513 Colored Sticks(欧拉回路判断+字典树Trie+并查集) http://poj.org/problem?id=2513 题意:给你多个木棍,每个木棍两段涂上颜色,两根木棍只有在相同颜色的一端才能连接,问你能不能使所有木棍都连接成一条直线路. 分析: 将输入的每个颜色看出是图的一个点,然后每条木棍正好是连接了两种颜色的一条边,我们只需要判断这个图中是否存在欧拉道

code 1515

Verilog中generate for循环的5个实战技巧(附完整代码示例)

本文详细介绍了Verilog中generate for循环的5个高级实战技巧,包括参数化模块实例化、条件化生成、多维硬件结构实现等,并附有完整代码示例。这些技巧能显著提升FPGA开发效率,特别适合中级Verilog开发者学习应用。

weixin_28725949的博客 187

Colored Sticks POJ - 2513 并查集,字典树,欧拉回路

这道题涉及的知识点比较多 前面的博客是为这道题打基础 步入正题,题意是说给出一堆木棒,每根木棒的左边和右边颜色不一样,求能否将所有的木棒按规则连成一条直线,规则是相连的木棒端点处颜色必须一致。 如果可以输出Possible 例如题目中给出的例子(后面的序号是我自己加的) blue red 1 red violet

ices_的博客 485

WRF后处理避坑指南:从namelist配置到降水计算的全流程解析

本文提供了一份详尽的WRF模式后处理避坑指南,涵盖从理解wrfout文件结构、核心变量解析到累计降水计算与专业气象图绘制的全流程。重点解析了RAINC与RAINNC的正确处理方法,并分享了使用wrf-python库高效绘制位势高度叠加风场图、累计降水图等专业图表的实战技巧与代码,旨在帮助用户规避常见错误,提升后处理效率与图表质量。

weixin_29200485的博客 353

从IMC层到应力点:手把手教你用SEM/EDS给BGA焊点做一次‘体检’

本文详细介绍了如何使用SEM/EDS技术对BGA焊点进行全面失效分析,从样品制备到SEM观察、EDS分析,再到综合诊断,手把手教你识别焊点的微观特征和成分异常。文章特别强调了IMC层分析在BGA焊接失效诊断中的关键作用,并提供了实用的实验室技巧和常见失效模式对照表,帮助工程师快速定位问题根源。

weixin_42685438的博客 380

连单词成欧拉路 欧拉回路+字典树+并查集 POJ 2513 Colored Sticks

http://poj.org/problem?id=2513 题意: 给你很多对单词,单词相当于一个点,一对单词相当于一条边,问这么多对的单词能否组成一条欧拉路,要求每条边都要经过。 解析: 题目数据很大,每个单词最多10个字母,据说用map映射会TLE。  所有要改用字典树进行hash。  判断欧拉路径或者回路需要满足两个条件。  图上所有点联通  度数为奇数个的节点

ACM_10000h的专栏 790

GAN实战:用Python和TensorFlow打造你的第一个生成对抗网络(附完整代码)

本文是一份详细的GAN实战指南,指导读者使用Python和TensorFlow框架从零开始构建并训练一个生成对抗网络。文章涵盖了环境搭建、MNIST数据预处理、生成器与判别器模型构建、对抗性损失函数定义、训练循环编写以及关键的调试技巧,旨在帮助开发者通过动手实践深入理解GAN的核心原理与实现过程。

php55的博客 480

poj 2513 Colored Sticks 欧拉回路(字典树 +并查集)

此题中涉及三个小算法,这是一个无向图判断欧拉回路, 无向图存在欧拉回路的充要条件 一个无向图存在欧拉回路,当且仅当该图只存在0或2个奇数度数的顶点,且该图是连通图。 有向图存在欧拉回路的充要条件 一个有向图存在欧拉回路,所有顶点的入度等于出度且该图是连通图。 判断度数很简单,当时没想明白怎么判断图示连通的,其实只要判断他们的父节点的个数,只要只有一个父节点,那么此图是

wuhulala的休息室 1335

FPGA电路设计1——芯片原理图和封装制作流程

本文详细介绍了FPGA电路板设计的学习过程,以Xilinx Kintex-7系列FPGA为例。主要内容包括:1)从官网下载芯片引脚分配文件的方法;2)原理图库绘制流程,重点讲解Bank划分(配置Bank、HR/HP IO Bank、高速收发器Bank)及利用Excel预处理数据;3)使用Altium Designer的Symbol Wizard工具实现引脚自动化导入;4)原理图设计要点,包括电源系统设计(多电压需求与上电时序)、配置电路(JTAG/Flash接口)和时钟设计。

在读研究生,FPGA电路设计与功能开发。 1384

Oracle EBS(R12+)通过Multi-Org 多组织架构、Multi-Ledger 多账簿、SLA 子分类账会计、多币种引擎、多会计政策并行五大核心能力,为跨国企业提供一体化、自动化、合规的

Oracle EBS(R12+)提供全球会计核算解决方案,通过Multi-Org多组织架构实现跨国集团数据隔离与共享,支持四层组织结构(业务组→法律实体→经营单位→库存组织)。Multi-Ledger多账簿功能允许一笔业务多准则自动核算,包含主账簿、辅助账簿和报告币种。系统内置多币种处理引擎,覆盖全流程货币业务,支持自动重估、再计量和折算。通过SLA子分类账会计实现多会计政策并行处理,满足不同国家会计准则和税制要求。该方案可同时支持本地法定、集团合并及管理分析需求,实现全球财务数据集中管理,提升合规性和运营

金牌架构师 553

POJ - 2513 Colored Sticks(字典树+并查集+欧拉回路)

题目链接:点击查看 题目大意:给出n个木棍,问若两两相连,最终能否构成一根长直木棍,相连的规则是两个木棍的相接端点的颜色需要保持相同 题目分析:关于这个题目,我们可以将每个木棍视为一条边,每个木棍的两个端点视为两个顶点,问能否相连,我们可以联想到欧拉回路,也就是说必须满足下面的两个条件: 所有的顶点能够构成回路 所有度数为奇数的顶点只能有零个或两个 如此一来题目就简单多了,但还是存在许多细...

Falcon的博客 466

【漏洞复现】永恒之蓝 MS17-010 远程溢出漏洞(CVE-2017-0143)

文章目录声明前言一、漏洞原理简述二、漏洞代码深层解析三、实验步骤四、漏洞补丁总结 声明 本篇文章仅用于技术研究与技术学习,切勿用于非授权下攻击行为,切记! 前言 Windows7 存在 MS17-010 永恒之蓝(远程溢出漏洞) ,该漏洞是方程式组织在其漏洞利用框架中一个针对SMB服务进行攻击的漏洞,该漏洞导致攻击者在目标系统上可以执行任意代码 一、漏洞原理简述 MS17-010漏洞出现在Windows SMB v1中的内核态函数 srv!SrvOs2FeaListToNt 在处理FEA(File Ex

李同學AI安全 9627

POJ 2513 Colored Sticks(字典树+并查集连通性+欧拉回路)

题目地址:POJ 2513 刚开始没想到字典树,用的map函数一直TLE,由于上一次的签到题由于没想到字典树而卡了好长时间的深刻教训,于是过了不久就想起来用字典树了,(为什么是在TLE了5次之后。。T^T)是在然后把map改成了字典树,然后就过了。 这题居然不知不觉的用上了欧拉回路。。其实当时我是这样想的。。因为相互接触的必须要相同,所以除了两端外,其他的都是两两相同的,所以除了两端的颜色外其

scf0920 1202

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

POJ 2513 Colored sticks(字典树 + 欧拉回路 + 并查集)

解题思路: 题目意思很简单,就是判断能否形成欧拉回路,用并查集判断是否连通,然后统计一下每个节点的度数即可。不过因为输入的是字符串,需要对字符串重新编号,用map会导致超时,因此采用字典树。 #include #include #include #include #include #include #include using namespace std; const int M

蘑菇--走在通往梦想的道路上。 542

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

poj 2513 Colored Sticks (字典树,并查集,欧拉回路)

N根木棍,两头都有颜色,拼接的时候,必须将颜色一致的接在一起,问能否把全部木棍拼成一整根? 1.颜色映射到数字 map效率低,超时。因此用字典树。 2.判断能否形成通路 条件:所有点的度数都是偶数,或者只有两个点的度数是奇数 (dad是并查集的数组,判断是否全部连通) for(int i=0;i<color;i++) { if(dad[i]==-1) dadcnt++;

JasonWu的博客 239

POJ 2513 Colored Sticks(欧拉回路+字典树+并查集)

题意: 给你很多对单词,单词相当于一个点,一对单词相当于一条边,问这么多对的单词能否组成一条欧拉路,要求每条边都要经过。 解析: 题目数据很大,每个单词最多10个字母,据说用map映射会TLE。 所有要改用字典树进行hash。 判断欧拉路径或者回路需要满足两个条件。 图上所有点联通 度数为奇数个的节点只有0个或者2个。 具体做法: 判断连通性就用并查集,判断是否只

小G的ACM之路 700

POJ 2513 Colored Sticks (欧拉回路 + 字典树 +并查集)

Colored Sticks Time Limit: 5000MS   Memory Limit: 128000K Total Submissions: 27097   Accepted: 7175 Description You are given a bunch of wooden sticks. Each endpoin...

weixin_34138521的博客 118

POJ 2513 Colored Sticks(字典树 + 并查集 + 欧拉回路)

Colored Sticks Time Limit:5000MS Memory Limit:128000K Total Submissions:23116 Accepted:6095 Description You are given a bunch of wooden...

weixin_30251587的博客 205

POJ 2513 Colored Sticks 并查集 + 字典树 + 欧拉回路

把每种颜色看做是图的顶点,然后判定是否满足欧拉回路的条件,用并查集来判断图的各个点是否连通(即是否只用一颗树),用字典树记录颜色编号。 1.字典树: 本题数据比较大,有50W种颜色,如果用STL的map来记录颜色或人工处理的话都会超时(平均O(n/2));所以我们用字典树来记录颜色的编号(平均O(lgn)),大大节约了时间。 2.欧拉回路判定: 本题显然是单向图,用d[]数组来统计每种颜色

Nicolas 1043

POJ 2513 Colored Sticks(字典树,并查集,欧拉回路)

题目大意: 有很多根木棒,木棒两头各有颜色,问能不能将木棒首位相连。使得连接的地方颜色相同。 思路分析: 简单的欧拉回路的判断,用并查集判断联通性。 如果允许的话也可以用map做,但是会超时。 所以用字典树判断单词出现的位置。 坑点是会有木棒数量为0 的情况 #include #include #include #include #pragma com

Jinx Jinx again 1079

poj 2513 Colored Sticks (字典树+并查集+无向图的欧拉回路。)

题目链接:http://poj.org/problem?id=2513 题目大意就是:给你一些棍子,每根棍子两端涂着颜色,颜色相同的两端可以连在一起,问所有棍子可不可以连在一起。 类似于hdu的1116(链接:http://acm.hdu.edu.cn/showproblem.php?pid=1116),差别是1116看的是字母,这看的是单词,这要麻烦些,而且1116是有向图,这是无向

qqspeed 841

POJ 2513 Colored Sticks (欧拉回路 + 并查集 + 字典树)

题目链接:http://poj.org/problem?id=2513 题意:有n段木头,每段木头的两端都有颜色。相同颜色的木头能拼接在一起成为一段。问是否能把所有木头拼接在一起。成为一段。 题解:这道题,和刘汝佳的紫书上的一道题欧拉回路的题目很像,据说这道题map映射会超时,所以映射就用字典树来代替。那么这道题的思路就可以变成,每个木头分成两段,然后每个端点的颜色hash成一个点。连接之后判...

PK__PK的博客 292

poj-2513-Colored Sticks-字典树trie / hash +并查集 欧拉回路

..........一看到题。。试着用hash水一下。。wa 用map水一下TLE。。 好吧。。trie试一下。。。wa .wa .wa..... 好吧。。最后发现是自己傻逼了。。。         窝一开始犯了傻逼错误,以为 直接 计算颜色出现的种数。。。奇数个数的颜色为0或2 就 合法。。然而这只是必要条件.....不是充分条件...........

缺氧 516

poj2513 Colored Sticks —— 字典树 + 并查集 + 欧拉回路

题目链接:http://poj.org/problem?id=2513 题解:通过这题了解了字典树。用字典树存储颜色,并给颜色编上序号。这题为典型的欧拉回路问题:将每种颜色当成一个点。首先通过并查集判断是否为连通图,再检验是否符合欧拉回路的特点。不过题目有一点很奇怪,在并查集中,若图为连通,不是有且仅有一个点的fa[]等于它自己吗,即类似于根节点?为什么会出现有0个的情况,这一...

weixin_30407099的博客 94

POJ 2513 Colored Sticks——字典树+并查集+欧拉回路

比较综合的一道题,套用字典树以及并查集模板。 注意: 1.字典树应该有提供单词编号的功能,这也是解题必须的要素 2.输入为空返回0,这个跟写法有关,我的写法不用特殊判断 3注意各种细节,本题综合性较强,代码量较大,稍不留神就会出现细节错误,注意及时调试 #include #include #include #include #include #define ID(x) x -

hao_zong_yin的博客 506
上一篇: POJ2230 Watchcow(欧拉回路 + dfs)
下一篇: POJ2337 Catenyms(欧拉回路+dfs)
GKHack
博客等级 码龄11年 48粉丝 291原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值