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. python -使用del语句删除对象引用

    使用del语句删除一些对象引用. 注意不是把内存地址删了,你只是删除了引用,它就变为了一个可回收的对象,内存会不定期回收. del语句的语法是: del var1[,var2[,var3[....,v ...

  2. C#创建IIS站点及相应的应用程序池,支持IIS6.0+Windows Server 2003. 使用Builder设计模式

    测试项目结构: PS:IIS6UtilsBuilder, IIS7UtilsBuilder,IISUtilsBuilder以及IISDirector为Builder设计模式实现的核心代码.Progra ...

  3. jsp内置对象-config对象

    1.概念:config对象中存储了一些Servlet初始化的数据结构,当Servlet初始化时,JSP容器通过config对象将这些信息传递给这个Servlet.一般在web.xml文件中配置Serv ...

  4. 《JavaScript高级程序设计》笔记:函数表达式(七)

    递归 function factorial(num){ if(num<=1){ return 1; }else { return num * arguments.callee(num-1); } ...

  5. 报表平台对CRM系统价值几何

    CRM系统即客户关系管理系统,其利用信息科学技术实现市场营销.销售.服务等活动自动化,使企业能高效地为客户提供周到的服务,以提升客户满意度与忠诚度为目的的一种管理经营方式.而CRM报表平台作为一个枢纽 ...

  6. Android应用跳转到微信和支付宝扫一扫

    新版的微信已经把微信功能的schema都禁掉了,意味着我们无法打开微信的扫一扫等功能,目前正常的只能先进入微信(我测试的时候是微信版本7.0.3)已经是很新的版本了 具体调起微信扫一扫代码如下,测试后 ...

  7. VR一体机如何退出FFBM(QFIL)

    前文介绍了通过fastboot命令擦除misc分区,从而退出FFBM的方法.这个方法比较简便,但有不灵的时候,fastboot erase misc命令执行失败,如下图所示. erasing 'mis ...

  8. Android Studio错误日志-注解报错Annotation processors must be explicitly declared now.

    导入项目时,发现之前项目的butter knife报错,用到注解的应该都会报错Error:Execution failed for task ':app:javaPreCompileDebug'.&g ...

  9. springboot模块

    1.web <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s ...

  10. 啰嗦的 java,简洁的 lombok —— lombok 的使用及简单实现单例模式注解

    lombok 是什么? lombok 是一个非常神奇的 java 类库,会利用注解自动生成 java Bean 中烦人的 Getter.Setting,还能自动生成 logger.ToString.H ...