hdu 3724 Encoded Barcodes 夜

http://acm.hdu.edu.cn/showproblem.php?pid=3724

简单字典树 只不过数据处理有点麻烦

代码:

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<math.h>
#include<algorithm>
#include<vector>
#include<set>
#include<queue>
#include<map>
#include<string>
#include <iomanip>
using namespace std;
const int INF=0x3f3f3f3f;
const int N=10005;
const int M=2005;
struct node
{
    int k;
    struct node *next[26];
};
void Add(struct node *head,char stmp[])
{
    struct node *w,*t=head;
    for(int i=0;stmp[i]!='\0';++i)
    {
        if(t->next[stmp[i]-'a']==NULL)
        {
            w=new node;
            for(int j=0;j<26;++j)
            w->next[j]=NULL;
            w->k=0;
            t->next[stmp[i]-'a']=w;
        }
        t=t->next[stmp[i]-'a'];
        ++(t->k);
    }
}
int Fnum(struct node *head,char stmp[])
{
    struct node *t=head;
    for(int i=0;stmp[i]!='\0';++i)
    {
        if(t->next[stmp[i]-'a']==NULL)
        {
            return 0;
        }
        t=t->next[stmp[i]-'a'];
    }
    return (t->k);
}
int main()
{
    //freopen("data.txt","r",stdin);
    char stmp[50];
    double a[10];
    int n,m;
    while(scanf("%d %d",&n,&m)!=EOF)
    {
        getchar();
        struct node *head=new node;
        for(int i=0;i<26;++i)
        head->next[i]=NULL;
        while(n--)
        {
            gets(stmp);
            Add(head,stmp);
        }
        int ans=0;
        while(m--)
        {
            int k;
            scanf("%d",&k);
            for(int l=0;l<k;++l)
            {
                double MIN=INF;
                for(int i=0;i<8;++i)
                {
                    scanf("%lf",&a[i]);
                    MIN=min(MIN,a[i]);
                }

                int inttmp=0;
                for(int i=0;i<8;++i)
                {
                    inttmp*=2;
                    if(a[i]/MIN>1.5)
                    inttmp+=1;
                }
                stmp[l]=inttmp;
            }
            stmp[k]='\0';
            ans+=Fnum(head,stmp);
        }
        printf("%d\n",ans);
    }
    return 0;
}


原文地址:https://www.cnblogs.com/liulangye/p/2745352.html