Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include<iostream>#include<cstdio>#include<string>#include<set>#include<map>#include<cstring>#include<unordered_map>#include<unordered_set>#include<algorithm>#include<sstream>#include<limits>using namespace std;struct TrieNode{TrieNode* next[2];int index;bool flag;bool end;TrieNode() {memset(next,0,sizeof(next));flag=false;index=-1; //是第几个ipend=false; //终点标志}};TrieNode* root;int res_index;bool res_f;int nonExsit; //针对都没有匹配上的情况。如果有mask=0的情况,则有可能是true,有可能是false。这里nonExsit=-1则说明没有mask=0的情况。void insert(long long tmp,int mask,bool f,int tmp_index) { //nonExsit=1表示allow,nonExsit=-1代表denylong long cnt=(long long)1<<31; //要用Long long转换!TrieNode* p=root;