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. 【Vuex】vuex基本介绍与使用

    Vuex是什么? 官方解释: Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.Vuex 也集 ...

  2. [TCP/IP] 网络层-简单查看路由表

    使用抓包工具排除网络故障:1.如果一台计算机在网络上发广播包,广播的mac地址是全ff,就有可能堵塞2.使用抓包工具,检测广播包和多播包 网络畅通的条件:数据包有去有回1.路由器使用路由表找到目标网段 ...

  3. centos安装jenkins

    1.安装jdk yum install java java -version 2.安装jenkins 添加Jenkins库到yum库,Jenkins将从这里下载安装. wget -O /etc/yum ...

  4. dedecms织梦上下页标签和CSS

    模板中的分页部分源码: <div class="pagination-wrapper" style= "font-size:20pt;color:red;text- ...

  5. MyBatis学习---整合SpringMVC

    [目录]

  6. Android远程桌面助手(B1332)之文件管理器

    Android远程桌面助手除了支持Android界面的显示及控制外,还支持Android文件系统的管理,包括文件的快速上传(push).下拉(pull)和查看(cat). Android远程桌面助手( ...

  7. SQL Server服务没有自动启动原因案例分析

    这个案例是前两天出现的,一直没有时间总结,25号凌晨4点去处理数据库的故障问题.远程连上公司的局域网,psping检查发现服务器的1433端口不通,数据库连接不上,但是主机又能ping通,登录服务器检 ...

  8. webpack4介绍

    https://github.com/wallstreetcn/webpack-and-spa-guide

  9. SQL 行转列 PIVOT 学习示例

    CREATE TABLE [StudentScores] ( ), --学生姓名 ), --科目 [Score] FLOAT, --成绩 ) select * from [StudentScores] ...

  10. DVWA-XSS学习笔记

    DVWA-XSS XSS概念:由于web应用程序对用户的输入过滤不严,通过html注入篡改网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击. XSS类型: 反射型XSS:只是简单地把 ...