1526 分配笔名(未完成存档)

#include <cstring>
#include <cstdio>
#define N 1000000

char real[N];
int f[N],pos,len,n,trie[N][26],exict[N],f[N],siz=1;
inline void ins()
{
    int len=strlen(real);
    for(int i=0;i<len;++i)
    {
        int id=real[i]-‘a‘;
        if(!trie[p][id]) trie[p][id]=++siz;
        p=trie[p][id];
    }
    exict[p]=1;
}
int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;++i)
    {
        scanf("%s",real);
        ins();
    }
    for(pos=1;pos<=n;++pos)
    {
        scanf("%s",real);
        len=strlen(real);
        query(0,trie[1][real[0]-‘a‘]);
    }
}
时间: 2024-11-08 23:33:01

1526 分配笔名(未完成存档)的相关文章

51Nod 1526 分配 笔名

1526 分配 笔名 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 320 难度:7级算法题  收藏  关注 班里有n个同学.老师为他们选了n个笔名.现在要把这些笔名分配给每一个同学,每一个同学分配到一个笔名,每一个笔名必须分配给某个同学.现在定义笔名和真名之间的相关度是他们之间的最长公共前缀.设笔名为a,真名为b,则他们之间的相关度为lcp(a,b).那么我们就可以得到匹配的质量是每一个同学笔名和真名之间相关度的和. 现在要求分配笔名,使得匹配质

未完成存档

//http://poj.org/problem?id=2117 #include <cstring> #include <ctype.h> #include <cstdio> #include <cmath> #define N 10005 void read(int &x) { x=0; char ch=getchar(); for(;!isdigit(ch);ch=getchar()); for(;isdigit(ch);ch=getchar(

51Nod1526 分配笔名

分析 在trie树上贪心,将所有串加入trie树中,在深度较深的地方匹配会更优. 由于只需要知道最后的总质量,所以直接取每个点的子树中最大的匹配即可 复杂度\(O(\sum len)\) 加串的时候把路径上\(val\)加\(1\),查询串的时候把沿途\(val\)减\(1\),\(ans\)为减去的\(1\)的个数. 注意\(val\)为\(0\)的情况,如果后面有\(val\)为大于等于\(1\)的点,那么说明这次查询的串比以前查询的串贡献的答案更优,那么就直接加上后面那些\(val\)大于

软工网络15团队作业4——Alpha阶段敏捷冲刺3.0

软工网络15团队作业4--Alpha阶段敏捷冲刺3.0 1.每天举行站立式会议,提供当天站立式会议照片一张. 2.项目每个成员的昨天进展.存在问题.今天安排. 昨天已完成的工作: (1)完成服务器的搭建: (2)完成部分数据库的搭建: (3)完成入口界面的设计: (4)完成我的打卡动态界面. 今天计划完成的工作: (1)完成部分新建话题页面的设计: (2)完成部分我的设置页面的设计: (3)完成部分我的话题记录的设计: (4)完成了数据库的搭建. 工作中遇到的困难: (1)今天的任务主要是一个缓

内存分配方式(未完成)

以前大一的时候学习过内存的分配方式,用到的是谭浩强的书. 现在又看了高质量c.c++编程,又唤起了对曾经学到过的知识的回忆. 温故而知新,现总结如下: 内存的分配方式有三种,在静态存储区域分配的内存空间,在堆栈上的分配的内存空间还有就是在堆或自由存储空间上的分配的内存空间. 1.静态存储区域在程序编译的过程中就已经编译好了,他们存在的生命周期贯穿着整个程序的运行. 静态存储区的存储的数据分别是全局变量,static 变量还有常量. 此处注意,常量所占的内存空间,只可被读而不可被写. 典型的:ch

未完成代码存档

#include <cstdio> #define Max 100000 typedef long long LL; struct node { LL l,r,dis,flag,Min_value,Max_value,set,time_set,time_add; }tr[Max<<2]; int max(LL a,LL b){return a>b?a:b;} int min(LL a,LL b){return a>b?b:a;} LL n,m,Time; void up

未完成代码存档 codevs 2905

#include <algorithm> #include <cstring> #include <cstdio> #include <map> #define Mod 13831 using namespace std; map<int,int>q; int n; struct Node { int point; char Name[101]; int Hash; }Team[7]; bool cmp(Node a,Node b) { retu

2015年4月15日未完成代码存档

1 #include<stdio.h> 2 int fib(int n) 3 { 4 int a=1,b=1,c; 5 if(n==1||n==2) return 1; 6 n-=2; 7 while(n--) 8 { 9 c=a+b; 10 a=b; 11 b=c; 12 } 13 return c; 14 } 15 16 int main() 17 { 18 int a,m,n,x,p; //a是第一站上车人数 p是第二站上车人数 m是最后一站下车人数 n是车站数 x是目标车站 19 in

Exchange Server 2013就地存档

9.1就地存档 就地存档有助于重新获得对组织邮件数据的控制,而无需个人存储 (.pst) 文件,并且允许用户在可通过 Microsoft Outlook 2010及更高版本和 Microsoft Office Outlook Web App 访问的"存档邮箱"中存储邮件. 在 Microsoft ExchangeServer 2013 中,就地存档向用户提供了一个存储历史邮件数据的备用存储位置.就位存档是对邮箱用户启用的其他邮箱(称为存档邮箱).Outlook 2007 及更高版本和