【BZOJ5495】[十二省联考2019]异或粽子(主席树,贪心)

 题面

BZOJ
洛谷

题解

这不是送分题吗。。。
转异或前缀和,构建可持久化\(Trie\)。
然后拿一个堆维护每次的最大值,每次如果取了一个数,就把它再在\(Trie\)树上查一次新建一个元素丢回堆里就行了。

#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;
#define ll long long
#define MAX 500500
inline ll read()
{ll x=0;bool t=false;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=true,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return t?-x:x;
}
struct Node{int ch[2],v;}t[MAX*80];
int tot,rt[MAX];
void Modify(int &x,int d,ll val,int w)
{++tot;t[tot]=t[x];x=tot;t[x].v+=w;if(d==-1)return;if((val>>d)&1)Modify(t[x].ch[1],d-1,val,w);else Modify(t[x].ch[0],d-1,val,w);
}
ll Query(int x,int d,ll val)
{if(d==-1)return 0;int c=(val>>d)&1;if(t[t[x].ch[c^1]].v)return (1ll<<d)+Query(t[x].ch[c^1],d-1,val);else return Query(t[x].ch[c],d-1,val);
}
struct Data{ll w;int x;};
bool operator<(Data a,Data b){return a.w<b.w;}
priority_queue<Data> Q;
ll a[MAX],ans;int n,K;
int main()
{n=read();K=read();for(int i=1;i<=n;++i)a[i]=a[i-1]^read();for(int i=1;i<=n;++i)rt[i]=rt[i-1],Modify(rt[i],32,a[i-1],1);for(int i=1;i<=n;++i)Q.push((Data){Query(rt[i],32,a[i]),i});while(K--){Data u=Q.top();Q.pop();ans+=u.w;Modify(rt[u.x],32,u.w^a[u.x],-1);Q.push((Data){Query(rt[u.x],32,a[u.x]),u.x});}printf("%lld\n",ans);return 0;
}

转载于:https://www.cnblogs.com/cjyyb/p/10694026.html

【BZOJ5495】[十二省联考2019]异或粽子(主席树,贪心)相关推荐

  1. 可持久化Trie+堆优化 OR Trie树上求XOR第K大 ---- P5283 [十二省联考2019]异或粽子

    题目大意 题目大意: 考虑先做个 prefix xor 前缀异或bi=⨁j=1iaj(1≤i≤n)b_i=\bigoplus_{j=1}^{i}a_j(1\leq i \leq n)bi​=j=1⨁i ...

  2. [十二省联考 2019] 异或粽子(可持久化字典树 + 二叉堆)

    problem luogu-P5283 小粽是一个喜欢吃粽子的好孩子.今天她在家里自己做起了粽子. 小粽面前有 nnn 种互不相同的粽子馅儿,小粽将它们摆放为了一排,并从左至右编号为 111 到 nn ...

  3. P5283-[十二省联考2019]异或粽子【可持久化Trie,堆】

    正题 题目链接:https://www.luogu.org/problemnew/show/P5283 题目大意 给定一个序列,求kkk个不同的的[l..r][l..r][l..r]的区间异或值的和最 ...

  4. 【洛谷5284】[十二省联考2019] 字符串问题(后缀树优化建边)

    题目: 洛谷 5284 分析: 首先不要问我标题里的「后缀树」是什么,我也不会,瞎写的 -- (传说就是反串后缀自动机的 fa 树?) 前置技能:[知识总结]后缀自动机的构建 首先有一个很 naive ...

  5. 十二省联考 2019 题解

    [十二省联考2019]异或粽子 首先异或转前缀和,类似超级钢琴,将三元组 ( l , r , p ) (l,r,p) (l,r,p) 插入堆,表示 s u m [ p ] sum[p] sum[p] ...

  6. 【BZOJ5498】[十二省联考2019]皮配(动态规划)

    [BZOJ5498][十二省联考2019]皮配(动态规划) 题面 BZOJ 洛谷 题解 先考虑暴力\(dp\),设\(f[i][j][k]\)表示前\(i\)所学校,有\(j\)人在某个阵营,有\(k ...

  7. [十二省联考2019]春节十二响——长链剖分+堆

    题目链接: [十二省联考2019]春节十二响 可以发现每条链上的所有点都要放在不同的段里,那么最多只需要树的深度这么多段就够了. 因为这样可以保证每条链上的点可以放在不同的段中而且一个点放在这些段中一 ...

  8. 「十二省联考 2019」皮配——dp

    题目 [题目描述] #### 题目背景 一年一度的综艺节目<中国好码农>又开始了.本季度,好码农由 Yazid.Zayid.小 R.大 R 四位梦想导师坐镇,他们都将组建自己的梦想战队,并 ...

  9. 【十二省联考2019】春节十二响

    题面 https://www.luogu.org/problem/P5290 题解 真的是我傻逼,十二省联考$day2$至今还是我的噩梦.$day1$起码一直在调可持久化$trie$树,$day2$真 ...

  10. HAOI(十二省联考)2019 qwq记

    \(\large{Day\ -1}:\) 放假了,白天大概是抱着最后一次在机房的心态复习着板子过去的.看着机房里的各位神仙丝毫不慌的颓倒是有点慌了,敲了一下多项式的板子感觉写的相当自闭,感觉AFO应该 ...

最新文章

  1. 软件测试工程师如何提升自己?
  2. iwork11旗舰版 linux,苹果 iWork 11 套件来了,Pages/Numbers/Keynote iOS/macOS 版大升级
  3. CUDA8.0+VS2015+Win10开发环境搭建教程
  4. SAP PM维护计划
  5. JobScheduler的使用
  6. maximo 工作流实现代码
  7. Leetcode--49. 字母异味词分组
  8. 那个陪你聊微信、发自拍的妹子,可能不是人
  9. python绘制汉字_OpenCV Python 绘制中文字
  10. 程序设计工程师c语言,《C语言程序设计》自学百问.doc
  11. Python-Pandas
  12. sonar扫描android项目配置 mac版
  13. APP架构师必看:面对爆发流量如何进行架构调整
  14. 用WPF+MongoDB开发房产信息收集器(4)——房产信息采集器总体介绍附程序下载
  15. IDEA集成有道翻译插件/maven帮助插件/mybatis插件
  16. adc0832工作原理详解_adc0834工作原理及AD转换
  17. 求边长为一的正方体中,面对角线组成的正四面体体积.
  18. 集算器替代存储过程实现报表数据源
  19. UC/OS-II(一)资料绪论
  20. 2022年机修钳工(中级)考试题库及模拟考试

热门文章

  1. 兼容浏览器的DIV最小高度自适应
  2. 精选| 2019年3月R新包推荐
  3. Egret入门学习日记 --- 问题汇总
  4. [转帖]golang操作mysql使用总结
  5. Android基础 (六) 数据存储 Part 3 SQLite数据库存储
  6. 黑马程序员 java了解和DOS命令
  7. HDOJ 1394 Minimum Inversion Number(线段树求逆序数对)
  8. 关于Validform
  9. CSS3产生渐变效果
  10. 考研英语作文:环保呼吁信