【题解】

  理解得迷迷糊糊。。。

  一些准备操作就不说了吧。。

  首先对于当前的第i个数,贪心思想按二进制位从高到低考虑。

  若当前第j位是1,不管异或0还是1,这一位的贡献肯定是1<<j,不考虑??

  对于当前位是0的情况,你只要考虑是否有数 包含 前面几位高位的被异或出来的1 的情况下,当前位也是1,那么就异或上当前的1,加上当前的1的贡献,也就是答案加上2<<j。

  这里有个细节,处理第j位的时候,先不用管低位是否被影响到(可以思考一下)。

  主要是考虑怎么求出是否有满足条件的数。

  这个只要预处理出一个数组f[sta],表示状态集包含sta的出现最早的位置,对于之后关于第i位的一些询问,只要判断是否f[sta]<=i就行,也就是寻求的数是否在i之前出现。(dp一下即可)

  我也不知道我在讲什么。。

【代码】

 1 #include <iostream>
 2 #include <cstring>
 3 #include <cstdio>
 4 using namespace std;
 5 const int N=300005;
 6 const int S=1100005;
 7 int n,x,now;
 8 int f[S],a[N];
 9 int main()
10 {
11     scanf("%d",&n);
12     memset(f,0x3f,sizeof(f));
13     f[0]=0;
14     for (int i=1;i<=n;++i)
15     {
16         scanf("%d",&a[i]);
17         a[i]^=a[i-1];
18         f[a[i]]=min(f[a[i]],i);
19     }
20     for (int i=0;i<20;++i)
21         for (int j=0;j<1<<20;++j)
22             if (!(j>>i&1))    f[j]=min(f[j],f[j|1<<i]);
23     for (int i=1;i<=n;++i)
24     {
25         now=0;
26         for (int j=19;~j;--j)
27             if (!(a[i]>>j&1) && f[now|1<<j]<=i)    now|=1<<j;
28         printf("%d\n",now+now+a[i]);
29     }
30     return 0;
31 }

View Code

转载于:https://www.cnblogs.com/Bleacher/p/8659336.html

bzoj5092: [Lydsy1711月赛]分割序列相关推荐

  1. BZOJ5092:[Lydsy1711月赛]分割序列(贪心,高维前缀和)

    Description 对于一个长度为n的非负整数序列b_1,b_2,...,b_n,定义这个序列的能量为:f(b)=max{i=0,1,...,n}((b_1 xor b_2 xor...xor b ...

  2. bzoj 5092: [Lydsy1711月赛]分割序列

    5092: [Lydsy1711月赛]分割序列 Time Limit: 5 Sec  Memory Limit: 256 MB Submit: 219  Solved: 100 [Submit][St ...

  3. Team Work(CF 932 E)[bzoj5093][Lydsy1711月赛]图的价值

    0 前言 这是一道小清新题 1 题目相关 1.1传送门 传送门 1.2 题目大意 给出n,kn,kn,k,求∑i=0n(ni)ik\sum_{i=0}^n\binom{n}{i}i^ki=0∑n​(i ...

  4. bzoj5093: [Lydsy1711月赛]图的价值

    bzoj5093: [Lydsy1711月赛]图的价值 题目描述 Solution 考虑每一个点的贡献,枚举它的度数. Ans=n∗2(n−12)∑i=1n−1(n−1i)∗ikAns=n*2^{\t ...

  5. [JZOJ5952] 凯旋而归 ([BZOJ 5092]【Lydsy1711月赛】分割序列)【高维前缀和】【DP】

    Description 对于一个长度为m的序列a,记f(a)=max⁡((a1xor...xorai)+(ai+1xor...xoran)),i∈[0,m]f(a)=\max((a_1\ xor\ . ...

  6. bzoj 5093 [Lydsy1711月赛]图的价值——第二类斯特林数

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5093 不要见到组合数就拆! 枚举每个点的度数,则答案为 \( n*\sum\limits_{ ...

  7. BZOJ.5093.[Lydsy1711月赛]图的价值(NTT 斯特林数)

    题目链接 对于单独一个点,我们枚举它的度数(有多少条边)来计算它的贡献:\[\sum_{i=0}^{n-1}i^kC_{n-1}^i2^{\frac{(n-2)(n-1)}{2}}\] 每个点是一样的 ...

  8. 动态规划(斜率优化):BZOJ 3675 [Apio2014]序列分割

    Description 小H最近迷上了一个分割序列的游戏.在这个游戏里,小H需要将一个长度为N的非负整数序列分割成k+l个非空的子序列.为了得到k+l个子序列, 小H将重复进行七次以下的步骤: 1.小 ...

  9. 块分割,维特比算法小结

    学习总结 在ER中,有一类算法依靠参考结构化数据库的模型实现,以便提高ER的速度.但是这类算法常常在运行中产生了大量重复计算,降低了效率.由此,通过介绍以下方法,来解决这个问题: 块分割 给定的字符串 ...

最新文章

  1. 一夜间,中英同时发布新冠疫苗临床试验结果:均可引起免疫反应,同时登上《柳叶刀》...
  2. 开发日记-20190621 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
  3. c语言用指针两个字母交换,c语言指针基础之用指针交换两个数(代码实例)
  4. c语言递归函数检测回文,在C中使用递归函数的回文测试
  5. 【WPF学习】第五十章 故事板
  6. java中this,super,extends,implements相关继承概念讲解
  7. 清华2018顶级数据团队建设全景报告发布:Python最受欢迎,C语言含金量最高
  8. 我的MVVM框架 v3教程——todos例子
  9. python内置类型
  10. hdu 1506 单调栈问题
  11. [转]Linux芯片级移植与底层驱动(基于3.7.4内核)
  12. [Git]git教程
  13. Mybatis-Plus 自定义 id 生成器
  14. 湖南大学高级软件开发过程
  15. SIRS传染病模型求解及MATLAB实现
  16. 安卓Camera屏幕竖屏适配
  17. 小米手机系统wifi服务器,手机时间变慢,小米高管科普:3招即可解决
  18. SuperMemo导出html,使用思维导图和SuperMemo一起来快速复习(1)
  19. 2022李宏毅第14讲---机器终身学习(Life Long Learning)
  20. [CUPOJ] 直角三角形周长 枚举优化 题解

热门文章

  1. CCF CSP202012-2期末预测之最佳阈值
  2. 网购组装电脑整机为什么便宜?
  3. 什么是单镜头反光相机
  4. 房子值500万租金仅3500元,卖房拿利息和出租哪个合算?
  5. 五万以内买什么车合适?
  6. 苦口之药的拼音及解释
  7. 卫生间防水应注意哪些问题?
  8. 财务人员工资那么低,财务工作真的有价值吗?
  9. Java中Spring报错org.springframework.core.annotation.AnnotationUtils.clearCache()V
  10. 基类成员函数和派生类成员函数不构成重载