HDUPlay on Words

2024-09-09 07:58
文章标签 words hduplay

本文主要是介绍HDUPlay on Words,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.定理:无向图G有欧拉通路的充分必要条件是G为连通图,并且G仅有两个奇度结点或者无奇度结点。
(1)当G是仅有两个奇度结点的连通图时,G的欧拉通路必以此两个结点为端点。
(2)当G是无奇度结点的连通图时,G必有欧拉回路。

2.一个有向图D具有欧拉通路,当且仅当D是连通的,且除了两个顶点外,其余顶点的入度均等于出度,这两个特殊的顶点中,一个顶点的入度比出度大1,另一个顶点的入度比出度小1. 推论:一个有向图D是欧拉图(具有欧拉回路),当且仅当D是连通的,且所有顶点的出度等于入度。


文字摘自  点击打开链接

const  int  maxn = 30 ;
int    father[maxn]  ;int  getf(int x){if(x == father[x]) return x ;else  return father[x] = getf(father[x]) ;
}void  _merge(int u , int v){u = getf(u) ;v = getf(v) ;if(u != v) father[u] = v ;
}int  _in[maxn] , _out[maxn] , _vis[maxn] ;
char word[1008] ;int   gao(){int connet = 0 ;for(int i = 0 ; i < 26 ; i++){if(_vis[i] && i == getf(i))  connet++ ;}if(connet > 1) return 0 ;int e[maxn] , k = 0 ;for(int i = 0 ; i < 26 ; i++){if(_vis[i] && _out[i] != _in[i]) e[k++] = i ;}if(k == 0) return 1 ;if(k == 2){int u = e[0] , v = e[1] ;if(_out[u]==_in[u]+1 && _in[v]==_out[v]+1) return 1 ;if(_out[v]==_in[v]+1 && _in[u]==_out[u]+1) return 1 ;}return 0 ;
}int  main(){int t , n  ;cin>>t ;while(t--){cin>>n ;memset(_in , 0 , sizeof(_in)) ;memset(_out , 0 , sizeof(_out)) ;memset(_vis , 0 , sizeof(_vis)) ;for(int i = 0 ; i < 26 ; i++) father[i] = i ;while(n--){scanf("%s" , word) ;int u = word[0] - 'a' ;int v = word[strlen(word) - 1] - 'a' ;_out[u]++ ;_in[v]++ ;_vis[u] = _vis[v] = 1 ;_merge(u , v) ;}if(gao()) puts("Ordering is possible.") ;else  puts("The door cannot be opened.") ;}return 0 ;
}


POJ 2513 无向图

struct  TNode{int id ;TNode *next[26] ;TNode(){id = 0 ;for(int i = 0 ; i < 26 ; i++)  this->next[i] = NULL ;}
};int  ID ;int  _Hash(TNode *root , char *s){if(root == NULL || s == NULL)  return -1 ;TNode *now = root ;while(*s != '\0'){if(now->next[*s - 'a'] == NULL){TNode *nd = new TNode() ;now->next[*s - 'a'] = nd ;now = nd ;}else  now = now->next[*s - 'a'] ;s++ ;}if(now->id) return now->id ;return  now->id = ++ID ;
}void  _Clear(TNode *root){for(int i = 0 ; i < 26 ; i++){if(root->next[i] != NULL) _Clear(root->next[i]) ;}free(root) ;
}char wd[18] , wd2[18] ;const int maxn = 510010 ;
int  father[maxn] ;int  getf(int x){if(x == father[x]) return x ;else return father[x] = getf(father[x]) ;
}void _merge(int u , int v){u = getf(u) ;v = getf(v) ;if(u != v) father[u] = v ;
}int  degree[maxn] ;//无向图
int  gao(){int f = getf(1) ;int ct = 0 ;for(int i = 1 ; i <= ID ; i++){if(f != getf(i)) return 0 ;if((degree[i] % 2) == 1) ct++ ;if(ct > 2) return 0 ;}return 1 ;
}int  main(){freopen("test.txt" , "r" , stdin) ;TNode *root = new TNode() ;memset(degree , 0 , sizeof(degree)) ;for(int i = 0 ; i < maxn ; i++) father[i] = i ;ID = 0 ;while(scanf("%s%s" , wd , wd2) != EOF){int u = _Hash(root , wd) ;int v = _Hash(root , wd2) ;degree[u]++ ;degree[v]++ ;_merge(u , v) ;}if(gao()) cout<<"Possible"<<endl ;else  cout<<"Impossible"<<endl;_Clear(root)  ;return 0 ;
}



这篇关于HDUPlay on Words的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150598

相关文章

[LeetCode] 692. Top K Frequent Words

题:https://leetcode.com/problems/top-k-frequent-words/ 题目大意 对于 string[] words,输出 出现频率前k高的 word,顺序 为 word 出现的频率 由高到低 ,频率相同的 word 按 字符排序。 思路 其实是对words中的所有word进行一个排序。 排序有两个规则: 1.word 在 words中出现的次数。 2.

[LeetCode] 820. Short Encoding of Words

题:https://leetcode.com/problems/short-encoding-of-words/ 题目大意 参考题目 思路 set 集合 将所有word 放入set中,然后遍历所有set中的word,将word的从头的子串都从set中删除,最后统计 set中所有(word 的长度 + 1)(’#’) class Solution {public int minimumL

【HDU】4117 GRE Words AC自动机+线段树优化DP

传送门:【HDU】4117 GRE Words 题目分析:水不了啊狸的打字机就来水这题了= =。。。 首先建立ac自动机,然后用fail指针的反向关系建边,构造fail指针树。fail指针树中每个结点u表示的串都是其子节点v的后缀(同时该后缀是所有串中最长的)。对fail指针树dfs一次得到时间戳,当要求以串i结尾的最大价值,首先我们需要知道以串i的子串j结尾的最大价值val。因为在树中

LeetCode 30 Substring with Concatenation of All Words

题意: 给出字符串s和许多等长(len)单词w,找出所有s中的满足子串为w中所有单词的一种组合的位置。 思路: 因为w中的单词要满足的是组合而不是排列,因此用“区间[L,R]中包含单词的计数”来维护比较合适。 一是满足了组合对顺序的不要求,二是方便处理重复的单词。 首先可以统计一下,w中各种单词个数。如果s的长度为size(w) * len的子串单词计数与w相同,则找到一个答案。

Aspose.Cells、Aspose.Words常用功能

一般使用 Excel求和Word插入内容新建插入图片插入表格 Excel求和 冒号 为 范围 B2~B11 逗号 为 B1+B11 worksheet.Cells["A4"].Formula = "=SUM(A1:A3)";worksheet.Cells["A4"].Formula = "=SUM(A1,A3)"; 单元格设置公式后,保存 Excel 文件后打开即可得到

[论文笔记] LLM-ICL可解释论文:标签词是锚点:理解语境学习的信息流视角 Label Words are Anchors

Label Words are Anchors: An Information Flow Perspective for Understanding In-Context Learning Lean Wang, Lei Li, Damai Dai, Deli Chen, Hao Zhou, Fandong Meng, Jie Zhou, Xu Sun 信息流视角:论文提出了一种新的视角,即通

【Aspose-words】导出html到word

1、由于Mavenzh中央仓库中对于com.aspose.words jar包的缺乏,小编本地maven集成下载的 aspose-words-16.4.0-jdk16.jar 2、 package com.xw.ssm.util.word;import com.alibaba.fastjson.JSONObject;import com.aspose.words.*;import com.

10129 - Play on Words(欧拉道路有向图)

题目:10129 - Play on Words 题目大意:词语接龙。 解题思路:刚开始没想到欧拉道路,直接找,结果超时了。 这题满足要求的话就是把每个单词看做一条路,每条路连在一起走一遍就符合要求, 欧拉回路也是符合要求的。 满足欧拉道路:1,至多只有两个点的出度入度相差1。    2, 这个有向图的无向图连通。(刚开始一直在想,如果有两条一样的路,这样怎么处理,后面

Reverse Words in a String III问题及解法

问题描述: Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order. 示例: Input: "Let's take LeetCode contest"

[AI words] 突破瓶颈:如何将AI words网站构建时间缩短一半

在一个阳光明媚的早晨,我坐在电脑前,满怀期待地按下了“构建”按钮,准备生成我的新网站 AI words。这个网站的目标是为每个单词生成一个单独的页面,总共有5000个单词。可是,构建过程竟然需要整整14分钟!我心想,难道没有办法让这个过程更快一些吗? 初探性能瓶颈 于是,我决定与我的AI助手进行一次深入的对话。我们讨论了各种可能的优化方案,并最终决定先进行详细的性能分析。我们加入了 metri