zoukankan      html  css  js  c++  java
  • 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;
    }
    
    
    
  • 相关阅读:
    InApp PurchaseVerifying Store Receipts[6]
    InApp PurchaseTesting a Store [7]
    App Store Review Guidelines
    JAVA基础之一维数组和多维数组
    定位标记
    JSTL常用标签汇总
    struts1.2原理
    struts1.2中的ActionForm
    jdbc连接
    ActionForm与bean的区别
  • 原文地址:https://www.cnblogs.com/liulangye/p/2745352.html
Copyright © 2011-2022 走看看