2014百度之星资格赛1003

来源:互联网 发布:淘宝全球购加入条件 编辑:程序博客网 时间:2024/06/06 03:10
#include <iostream>#include <cstring>#include <cstdio>#include <algorithm>using namespace std;struct Node{    struct Node* nt[2];};Node node;void add_num( Node *a, long long pos, long long num ){    if( pos < 0 ){        return;    }    if( ( 1LL << pos ) & num ){        if( a->nt[1] == NULL ){            Node *b = new Node;            b->nt[0] = b->nt[1] = NULL;            a->nt[1] = b;        }        add_num( a->nt[1], pos - 1, num );    }else{        if( a->nt[0] == NULL ){            Node *b = new Node;            b->nt[0] = b->nt[1] = NULL;            a->nt[0] = b;        }        add_num( a->nt[0], pos - 1, num );    }}long long query( Node *a, long long pos, long long num ){    if( pos < 0 ){        return 0;    }    if( ( 1LL << pos ) & num ){        if( a->nt[0] != NULL ){            return query( a->nt[0], pos - 1, num );        }else if( a->nt[1] != NULL ){            return ( 1LL << pos ) | query( a->nt[1], pos - 1, num );        }    }else{        if( a->nt[1] != NULL ){            return ( 1LL << pos ) | query( a->nt[1], pos - 1, num );        }else if( a->nt[0] != NULL ){            return query( a->nt[0], pos - 1, num );        }    }}/*void del( Node *a ){    if( a->nt[0] != NULL ){        del( a->nt[0] );    }    if( a->nt[1] != NULL ){        del( a->nt[1] );    }    delete a;}*/int main(){    int T, N, M, Case = 1;    scanf( "%d", &T );    while( T-- ){        scanf( "%d%d", &N, &M );        node.nt[0] = node.nt[1] = NULL;        for( long long i = 0; i < N; i++ ){            long long temp;            scanf( "%I64d", &temp );            add_num( &node, 34, temp );        }        printf( "Case #%d:\n", Case++ );        for( long long i = 0; i < M; i++ ){            long long temp;            scanf( "%I64d", &temp );            long long ans = query( &node, 34, temp );            printf( "%I64d\n", ans );        }        /*        if( node.nt[0] != NULL ){            del( node.nt[0] );        }        if( node.nt[1] != NULL ){            del( node.nt[1] );        }        */    }    return 0;}

0 0
原创粉丝点击