一道字典树异或的题,但是数据比较水,被大家用暴力给干掉了!

以前写过一个类似的题,叫做the longest xor in tree;

两个差不多吧!

好久没写字典树了,复习一下!

代码:

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 100010
using namespace std;
int n,v[maxn],node,next[maxn][],end[maxn]; void add(int cur,int k)
{
memset(next[node],,sizeof(next[node]));
end[node]=;
next[cur][k]=node++;
} int cal(int x)
{
int i,k,cur=;
for(i=;i>=;i--)
{
k=((<<i)&x)?:;
if(next[cur][k]) cur=next[cur][k];
else cur=next[cur][-k];
}
return (x^end[cur]);
} int main()
{
int k,x,cur,ans,cp;
while(!scanf("%d%d",&n,&cp)!=EOF)
{
node=,ans=;
memset(next[],,sizeof(next[]));
for(int i=;i<n;i++)
{
scanf("%d",&x);
v[i]=x;
cur=;
for(int j=;j>=;j--)
{
k=((<<j)&x)?:;
if(next[cur][k]==) add(cur,k);
cur=next[cur][k];
}
end[cur]=x;
}
for(int i=;i<n;i++)ans=max(ans,cal(v[i]));
if(ans>cp)puts("YES");
else puts("NO");
}
return ;
}

另一种写法:

 #include<cstdio>
#include<cstring>
#include<algorithm>
#define maxn 100005
using namespace std; struct node
{
node *p[];
} no[maxn];
int w[],nocount; node *newnode()
{
node *v=no+nocount++;
for(int i=;i<;i++)v->p[i]=NULL;
return v;
} void insert()
{
node *nono=no;
for(int i=;i>=;i--)
{
if(nono->p[w[i]]==NULL)
nono->p[w[i]]=newnode();
nono=nono->p[w[i]];
}
} int cal()
{
int ans=;
node *nono=no;
for(int i=;i>=;i--)
{
if(nono->p[-w[i]]!=NULL){ans+=(<<i);nono=nono->p[-w[i]];}
else if(nono->p[w[i]]!=NULL){nono=nono->p[w[i]];}
}
return ans;
} int main()
{
int n,m,x;
while(scanf("%d%d",&n,&m)!=EOF)
{
memset(no,,sizeof no);
nocount=;
int mm=;
for(int i=; i<n; i++)
{
scanf("%d",&x);
for(int i=;i<;i++){w[i]=x%,x>>=;}
if(i!=)mm=max(mm,cal());
insert();
}
if(mm>m)puts("YES");
else puts("NO");
}
return ;
}

csu 10月 月赛 F 题 ZZY and his little friends的更多相关文章

  1. csu 10月 月赛 I 题 The Contest

    Description 殷犇有很多队员.他们都认为自己是最强的,于是,一场比赛开始了~ 于是安叔主办了一场比赛,比赛有n个题目,每个题目都有一个价值Pi和相对能力消耗Wi,但是有些题目因为太坑不能同时 ...

  2. csu 10月 月赛 H 题 A Very Hard Problem

    Description CX老湿经常被人黑,被黑得多了,自己也就麻木了.于是经常听到有人黑他,他都会深情地说一句:禽兽啊! 一天CX老湿突发奇想,给大家出了一个难题,并且声称谁能够准确地回答出问题才能 ...

  3. csu 10月 月赛 J 题

    Description CSU又到了一年中评奖学金的时候了……各大学霸都或多或少地拿到了各种奖学金(你们自己看着办吧). 在这里,评奖学金有个很奇怪的规矩——每个同学得到的奖学金数一定满足相邻的两个非 ...

  4. csu 10月 月赛 D 题 CX and girls

    Description CX是要赶去上课,为了不迟到必须要以最短的路径到达教室,同时CX希望经过的路上能看到的学妹越多越好.现在把地图抽象成一个无向图,CX从1点出发,教室在N号点,告诉每个点上学妹的 ...

  5. csu 10月 月赛 B 题 Scoop water

    一个卡特兰数的应用: 卡特兰数主要有以下几个用途: 1.不同的出栈入栈数: 2.n个点组成的不同的二叉树的数目: 3.凸多边形的三角剖分划分: 4.括号化问题: 通项公式是:h(n) = C(2n-2 ...

  6. csu 10月 月赛 A 题

    Welcome to CSU OnlineJudge Problem A: Small change Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 15 ...

  7. Contest2037 - CSU Monthly 2013 Oct(中南大学2013年10月月赛水题部分题解)

    Problem A: Small change 题解:http://www.cnblogs.com/crazyapple/p/3349469.html Problem B: Scoop water 题 ...

  8. 【LGR-054】洛谷10月月赛II

    [LGR-054]洛谷10月月赛II luogu 成功咕掉Codeforces Round #517的后果就是,我\(\mbox{T4}\)依旧没有写出来.\(\mbox{GG}\) . 浏览器 \( ...

  9. ECNU 2018 10月月赛 E 盖房子 (bitset + 倍增)

    题目链接  ECNU Monthly 2018.10 Problem E 从开场写到结束…… 显然要把三角形分成上下两部分. 把每一部分分成三部分,以上部分为例. 上面和右边,以及左下角的正方形. 也 ...

随机推荐

  1. SpannableString使用详解

    TextView算是android开发中最最常用的控件了,有的时候,我们要给一个TextView中的显示的文字设置不同的样式或者响应事件,比如同一个TextView中,有的字是红色,有的字是蓝色,有的 ...

  2. 写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。

    答:解1:  select top 10 * from A where id not in (select top 30 id from A) 解2:  select top 10 * from A ...

  3. iOS之NSNotificationCenter通知中心使用事项

    其实这里的通知和之前说到的KVO功能很想,也是用于监听操作的,但是和KVO不同的是,KVO只用来监听属性值的变化,这个发送监听的操作是系统控制的,我们控制不了,我们只能控制监听操作,类似于Androi ...

  4. [Form Builder]内置函数execute_trigger、do_key详解

    转:http://yedward.net/?id=82 1.execute_trigger:用来运行一个指定的触发器,常用来运行用户自定义的触发器. 语法:procedure execute_trig ...

  5. Integer跟int的区别(备份回忆)

    int与Integer的区别 int 是基本数据类型Integer是其包装类,注意是一个类.为什么要提供包装类呢???一是为了在各种类型间转化,通过各种方法的调用.否则 你无法直接通过变量转化.比如, ...

  6. 类库探源——System.Drawing

    一.System.Drawing 命名空间简述 System.Drawing 命名空间提供访问 GDI+ 的基本功能,更高级的功能在 System.Drawing.Drawing2D,System.D ...

  7. CentOS7设置IP地址

    root权限下cd到/etc/sysconfig/network-scripts, vi ifcig-em1 TYPE=Ethernet BOOTPROTP=static NAME=em1 UUID= ...

  8. ZJK的黑OJ(树的最大独立集)(树形DP)

    ZJK的黑OJ zjk开了一家"善良OJ".这其实是家黑OJ.每AC一道题,网站便会自动在电脑上安装一种木马.zjk通过窃取信息获取收益(如网游帐号.OI资料.和KK的照片等等). ...

  9. Qt creator 创建鼠标右键菜单 (不新建类)

    界面 步骤 打开你的界面文件并选中你要添加右键的控件,选择“CustomContextMenu” 右键选择“转到槽...” -> customContextMenuRequested 插入下面代 ...

  10. Android学习7--日志信息的使用

    在代码的调试中,日志信息是必不可少的,关于日志信息的使用,接下来,小编简要的说明一下: 日志分为几种:Verbose:从字面上解释,verbose为冗长的,啰嗦的,所以verbose日志信息输出的内容 ...