Consecutive Sum

又来水一发blog...

本来是昨天补codechef的题,最后一道题是可持久化字典树,然后去黄学长博客看了看

觉得字典树写法有点不太一样,就想着用黄学长的板子写码几道题吧...

最后发现...其实是可持久化字典树跟普通字典树写法不一样...我好傻逼...

区间异或和

可以先把前缀异或和插入到字典树中,然后去贪心

求最大值就是要求从高到低尽量不一样

高位不一样优先

用一个bit数组来存放好看多了

偷偷摸摸顺便学了快读板子...虽说可能没啥用...

#include <bits/stdc++.h>
using namespace std; const int maxn = 2e6 + ; int sum[ + ];
int ans1, ans2;
int bit[];
inline int read() {
int x = , f = ; char ch = getchar();
while (ch < '' || ch > '') { if (ch == '-') f = -; ch = getchar(); }
while (ch >= '' && ch <= '') { x = x * + ch - ''; ch = getchar(); }
return x * f;
} struct Trie {
int tol;
int Next[maxn][];
void init() {
tol = ;
memset(Next, , sizeof(Next));
}
void insert(int x) {
int root = ;
for (int i = ; i >= ; i--) {
int id = x & bit[i]; id >>= i;
if (!Next[root][id]) Next[root][id] = ++tol;
root = Next[root][id];
}
}
void query(int x) {
int temp1 = , root1 = , root2 = , temp2 = ;
for (int i = ; i >= ; i--) {
int id = x & bit[i]; id >>= i;
if (Next[root1][id ^ ]) root1 = Next[root1][id ^ ], temp1 += bit[i];
else root1 = Next[root1][id];
if (Next[root2][id]) root2 = Next[root2][id];
else root2 = Next[root2][id ^ ], temp2 += bit[i];
}
ans1 = max(ans1, temp1);
ans2 = min(ans2, temp2);
}
} trie; int main() {
bit[] = ; for(int i = ; i <= ; i++) bit[i] = bit[i-] << ;
int T;
T = read();
// cin >> T;
int kase = ;
while (T--) {
int n = read();
// Trie trie;
trie.init();
ans1 = ;
ans2 = 0x3f3f3f3f;
trie.insert();
for (int i = ; i <= n; i++) {
int x; cin >> x;
sum[i] = sum[i-] ^ x;
trie.query(sum[i]);
trie.insert(sum[i]);
}
printf("Case %d: %d %d", ++kase, ans1, ans2);
puts("");
}
return ;
}

Consecutive Sum LightOJ - 1269(区间异或和)的更多相关文章

  1. LightOJ 1269 Consecutive Sum (Trie树)

    Jan's LightOJ :: Problem 1269 - Consecutive Sum 题意是,求给定序列的中,子序列最大最小的抑或和. 做法就是用一棵Trie树,记录数的每一位是0还是1.查 ...

  2. 1269 - Consecutive Sum

    1269 - Consecutive Sum    PDF (English) Statistics Forum Time Limit: 3 second(s) Memory Limit: 64 MB ...

  3. 洛谷 P2574 XOR的艺术(线段树 区间异或 区间求和)

    To 洛谷.2574 XOR的艺术 题目描述 AKN觉得第一题太水了,不屑于写第一题,所以他又玩起了新的游戏.在游戏中,他发现,这个游戏的伤害计算有一个规律,规律如下 1. 拥有一个伤害串为长度为n的 ...

  4. hdoj 1977 Consecutive sum II

    Consecutive sum II Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Other ...

  5. HDOJ(HDU) 1977 Consecutive sum II(推导、、)

    Problem Description Consecutive sum come again. Are you ready? Go ~~ 1 = 0 + 1 2+3+4 = 1 + 8 5+6+7+8 ...

  6. BZOJ 4260 Codechef REBXOR (区间异或和最值) (01字典树+DP)

    <题目链接> 题目大意:给定一个序列,现在求出两段不相交的区间异或和的最大值. 解题分析: 区间异或问题首先想到01字典树.利用前缀.后缀建树,并且利用异或的性质,相同的两个数异或变成0, ...

  7. CF 617E【莫队求区间异或和】

    E. XOR and Favorite Number time limit per test 4 seconds memory limit per test 256 megabytes input s ...

  8. P3943 星空 区间异或差分

    \(\color{#0066ff}{ 题目描述 }\) 逃不掉的那一天还是来了,小 F 看着夜空发呆. 天上空荡荡的,没有一颗星星--大概是因为天上吹不散的乌云吧. 心里吹不散的乌云,就让它在那里吧, ...

  9. bzoj 2819 Nim dfn序+树状数组维护区间异或值

    题目大意 著名游戏设计师vfleaking,最近迷上了Nim.普通的Nim游戏为:两个人进行游戏,N堆石子,每回合可以取其中某一堆的任意多个,可以取完,但不可以不取.谁不能取谁输.这个游戏是有必胜策略 ...

随机推荐

  1. 常见js报错

    1Uncaught TypeError: Cannot read property 'length' of null Uncaught TypeError: Cannot read property ...

  2. PostgreSql的Explain命令详解

    http://toplchx.iteye.com/blog/2091860 使用EXPLAIN PostgreSQL为每个收到的查询设计一个查询规划.选择正确的匹配查询结构和数据属性的规划对执行效率是 ...

  3. SpringBoot打包项目成war包,并部署到服务器的tomcat上

    最近遇到项目需要上线部署到服务器,需要讲自己的SpringBoot项目打包成war包,部署到tomcat上. 下面记录下打包部署的过程. (1) 将SpringBoot项目打包成war包, 一.修改打 ...

  4. 《全栈营销之如何制作个人博客》之一:用什么开发语言和CMS系统

    现在的互联网,已经不再是初级互联时代,是需要全方位营销,自建粉丝池的时代,云码素材从提出全栈营销,到实践分析,总结出全栈营销第一步,先制作一个个人博客是最好的开始.今天开始就跟我一起学习如何制作一个精 ...

  5. Dotnetcore 开发速记

    1.System.InvalidOperationException:"Internal connection fatal error." 全球固定模式,坑爹 https://gi ...

  6. Android ble蓝牙使用注意

    以下均为自己在Android ble开发项目中遇到的问题 1.尽量不要在BluetoothGattCallback里面的回调函数中执行读写通知操作,最多一个,因为例如在onServicesDiscov ...

  7. HandlerThread原理分析

    HandlerThread是一个内部拥有Handler和Looper的特殊Thread,可以方便地在子线程中处理消息. 简单使用 HandlerThread的使用比较简单. mHandlerThrea ...

  8. RAID5当一块硬盘离线后处理

    RAID5当一块硬盘离线后,处理降级状态,这时候正常的建议是马上更换硬盘做REBUILD以恢复完整的数据状态,如果有热备盘的话,就会自动做REBUILD,这样做合适吗? 一组RAID卷在工作很长时间以 ...

  9. C#图片添加文字水印

    /// <summary> /// 给图片添加文字水印 /// </summary> /// <param name="img">图片</ ...

  10. ASP.NET Zero--单元测试

    单元测试 ASP.NET Zero启动项目包含单元和集成测试.使用以下工具开发测试: xUnit作为测试框架. Shouldly 作为断言库. Microsoft.EntityFrameworkCor ...