• [BZOJ1590] [Usaco2008 Dec]Secret Message 秘密信息(字典树)


    传送门

    看到前缀就要想到字典树!

    看到前缀就要想到字典树!

    看到前缀就要想到字典树!

    #include <cstdio>
    #include <iostream>
    #define N 500001
    
    int n, m, k, cnt;
    int a[N], val[N], num[N], next[N][2];
    
    inline int read()
    {
    	int x = 0, f = 1;
    	char ch = getchar();
    	for(; !isdigit(ch); ch = getchar()) if(ch == '-') f = -1;
    	for(; isdigit(ch); ch = getchar()) x = (x << 1) + (x << 3) + ch - '0';
    	return x * f;
    }
    
    inline void insert()
    {
    	int i, now = 0;
    	for(i = 1; i <= k; i++)
    	{
    		if(!next[now][a[i]])
    			next[now][a[i]] = ++cnt;
    		now = next[now][a[i]];
    		num[now]++;
    	}
    	val[now]++;
    }
    
    inline int query()
    {
    	int i, now = 0, ans = 0;
    	for(i = 1; i <= k; i++)
    	{
    		if(!next[now][a[i]])
    			return ans;
    		now = next[now][a[i]];
    		ans += val[now];
    	}
    	return ans + num[now] - val[now];
    }
    
    int main()
    {
    	int i, j;
    	n = read();
    	m = read();
    	for(i = 1; i <= n; i++)
    	{
    		k = read();
    		for(j = 1; j <= k; j++) a[j] = read();
    		insert();
    	}
    	for(i = 1; i <= m; i++)
    	{
    		k = read();
    		for(j = 1; j <= k; j++) a[j] = read();
    		printf("%d
    ", query());
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    合并本地多次commit为一个commit
    git 取消文件跟踪
    遍历进程 遍历窗口
    linux查看程序运行参数
    ubuntu下载地址
    将博客搬至CSDN
    extern"C"的使用
    ESP32-NVS存储(非易失性存储库)
    ESP32-EEPROM存储
    c语言简单数据类型
  • 原文地址:https://www.cnblogs.com/zhenghaotian/p/7515262.html
Copyright © 2020-2023  润新知