The 2019 ICPC Asia Shanghai Regional Contest-B-Prefix Code

知识点:字典树。

题目链接:

https://ac.nowcoder.com/acm/contest/4370/B

题意:t组数据,n个数字,问是否满足不存在任何一个数字是其他数字的前缀。

题解:套用字典树一个一个插入字符串。若在插入过程中遇到如下两种情况,则存在其中一个是另一个的前缀。

1.遍历完整个字符串都没有创造新的节点,说明该字符串是之前某个串的字串。

2.遍历过程中遇到了某个字符串的终点,说明存在一个字符串是该字符串的前缀。

若都不存在,则满足条件。

AC代码:

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int maxn=1e5+10;
 4 int tree[maxn][10];
 5 bool color[maxn];
 6 bool flag;
 7 int cnt=0;
 8 void ist(string s){
 9     if(!flag)return;
10     flag=false;
11     int root=0;
12     for(char c:s){
13         if(tree[root][c-‘0‘]){
14             root=tree[root][c-‘0‘];
15             if(color[root])return;
16             continue;
17         }
18         flag=true;
19         root=tree[root][c-‘0‘]=cnt++;
20     }
21     color[root]=true;
22 }
23 int main(){
24     int t;
25     cin>>t;
26     for(int cas=1;cas<=t;cas++){
27         cnt=1;
28         memset(tree,0,sizeof tree);
29         memset(color,false,sizeof color);
30         flag=true;
31         int n;
32         cin>>n;
33         while(n--){
34             string s;
35             cin>>s;
36             ist(s);
37         }
38         printf("Case #%d: %s\n",cas,flag?"Yes":"No");
39     }
40     return 0;
41 }

原文地址:https://www.cnblogs.com/charles1999/p/12335139.html

时间: 2024-07-30 21:43:18

The 2019 ICPC Asia Shanghai Regional Contest-B-Prefix Code的相关文章

The 2019 ICPC Asia Shanghai Regional Contest---H Tree Partition 二分答案,从下往上切最大子树

题意:https://ac.nowcoder.com/acm/contest/4370 将一棵树切k-1刀分成k棵树,问这k棵树里最大的权值的最小值是多少 思路:https://www.cnblogs.com/ucprer/p/11931263.html 二分最大值. dfs割子树,每次从下往上切一个最大的树. 单个dfs表示保证当前节点可切,然后子树dfs完了,sort子树,选最大的切,直到当前u节点也可切 1 #define IOS ios_base::sync_with_stdio(0);

The 2019 ICPC Asia Shanghai Regional Contest-C-Spanning Tree Removal

知识点:构造.思维. 题目链接:https://ac.nowcoder.com/acm/contest/4370/D 题意:n点完全图,每次可以删除一个生成树的边,问最多可以删几次,并构造出其中一种. 题解:给出一种删边方式可以尽可能多次的删除:第i次:从i开始.依次删除i-(i+1)-(i-1)-(i+2)-(i-2)-…… 直到连接完所有点为止.总共可以删除n/2次. AC代码: 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 i

2018-2019, ICPC, Asia Yokohama Regional Contest 2018 (Gym - 102082)

2018-2019, ICPC, Asia Yokohama Regional Contest 2018 A - Digits Are Not Just Characters 签到. B - Arithmetic Progressions 题意:从给定的集合中选出最多的数构成等差数列. 题解:数字排序后,设\(dp[i][j]\)表示等差数列最后一个数字为\(a[i]\),倒数第二个数字为\(a[j]\)的最大个数.然后对于每一位枚举 \(i\),\(lower\_bound()\)找有无合法的

2019-2020 ICPC, Asia Jakarta Regional Contest H. Twin Buildings

As you might already know, space has always been a problem in ICPC Jakarta. To cope with this, ICPC Jakarta is planning to build two new buildings. These buildings should have a shape of a rectangle of the same size. Now, their problem is to find lan

2019 ICPC Asia Yinchuan Regional

目录 Contest Info Solutions A. Girls Band Party B. So Easy D. Easy Problem E. XOR Tree F. Function! G. Pot!! H. Delivery Route I. Base62 K. Largest Common Submatrix N. Fibonacci Sequence Contest Info Practice Link Solved A B C D E F G H I J K L M N 9/1

2018 ICPC Asia Jakarta Regional Contest

题目传送门 题号 A B C D E F G H I J K L 状态 Ο . . Ο . . . . Ο . . Ο Ο:当场 Ø:已补 .  :  待补 A. Edit Distance Thinking:kk pai爷 Code:kk 不能直接反转,比如"010101",直接反转后就变成"101010",右移一位,然后加个0就可以了. 所以要先统计01的数量,如果0大于1,就全变成1,1大于0,就全变成0(从数量上的改变就大于s/2了),相等的话,就看首位是0

2019-2020 ICPC, Asia Jakarta Regional Contest C. Even Path

Pathfinding is a task of finding a route between two points. It often appears in many problems. For example, in a GPS navigation software where a driver can query for a suggested route, or in a robot motion planning where it should find a valid seque

2019 ICPC Asia Nanjing Regional 重现赛

C. Digital Path 题意: 给出一个网格,格子里面有各自的值,要求找出有多少条线路,是从某一个块四周自己最小开始走到某一个块,四周自己最大并且长度大于等于四. 解:显然,对于某一块,我们判断他能不能成为起点,就可以判断他的上下左右是否比他小1,比他小1那么肯定不能作为起点.判断终点同理. 那么针对每一个起点,我们首先暴力dfs,判断他的上下左右是否满足比他刚好大1,有的话继续dfs下去. 这样我们得到了一个暴力算法然后考虑优化. 令dp[i][j][len]表示,第(i,j)块,作为

2019 ICPC Asia Nanjing Regional F. Paper Grading

题目链接:https://nanti.jisuanke.com/t/42400 题意:给一个模式串集合,序号1~n,有T个操作,或者是交换序号,或者是查询模式串集合中序号在L到R之 间的字符串有多少个和目标串公共前缀长度大于等于K. --------------------------------- 对模式串集合建字典树,则与目标串\(LCP\)大于等K的字符串,都在以目标串第\(K\)个字符所在的结点为根的子树中,每个模式串插入字典树的过程中记录序号,修改时交换序号,询问就相于在子树中询问有多