zoukankan      html  css  js  c++  java
  • P2580 于是他错误的点名开始了

    P2580 于是他错误的点名开始了

    题目本体

    观察题目,很容易发现需要使用(Trie)树。

    然后非常轻松的写出建树的代码。

    需要注意的是,每一个字符串的长度是50,注意数组区间,不要(RE)

    以及,在判断的时候,要注意当老师念了完整名字的一部分的时候应该输出(WRONG)

    虽然即便不这么写也不会有什么问题

    以及(AC)代码

    #include<bits/stdc++.h>
    using namespace std;
    
    int n,m,cnt;
    char name[50001],report[500001],vis[500001];
    int f[500001][30];
    int cd[500001];
    
    void add (char c[]){
    	int len=strlen(c+1);
    	int t=0;
    	for(int i=1;i<=len;i++){
    		if(!f[t][c[i]-'a']) f[t][c[i]-'a']=++cnt;
    		t=f[t][c[i]-'a'];
    	}
    	cd[t]=1;
    }
    
    void check(char c[]){
    	int len=strlen(c+1);
    	int t=0;
    	for(int i=1;i<=len;i++){
    		t=f[t][c[i]-'a'];
    		if(!t){
    			printf("WRONG
    ");
    			return;
    		}
    		
    	}
    	if(!vis[t]&&cd[t]){ printf("OK
    ");vis[t]=1;return;}
    	if(!cd[t]) {printf("WRONG
    ");return ;}
    	if(vis[t]) {printf("REPEAT
    ");return;}
    		
    }
    
    int main(){
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++){
    		scanf("%s",name+1);
    		add(name);
    	}
    	scanf("%d",&m);
    	for(int i=1;i<=m;i++){
    		scanf("%s",report+1);
    		check(report);
    	}
    	return 0;
    }
    
    
  • 相关阅读:
    golang的time包
    golang的defer
    vscode出现卡在setting up workspace loading packages问题
    golang的module管理与使用go mod
    vscode常见插件及使用
    vscode的settings.json配置文件
    vscode的launch.json配置文件
    vscode搭建golang环境
    MacBook初使用
    Git-错误汇总
  • 原文地址:https://www.cnblogs.com/JingFenHuanZhe/p/P25800929.html
Copyright © 2011-2022 走看看