bzoj5092: [Lydsy1711月赛]分割序列
【题解】
理解得迷迷糊糊。。。
一些准备操作就不说了吧。。
首先对于当前的第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月赛]分割序列相关推荐
- 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 ...
- bzoj 5092: [Lydsy1711月赛]分割序列
5092: [Lydsy1711月赛]分割序列 Time Limit: 5 Sec Memory Limit: 256 MB Submit: 219 Solved: 100 [Submit][St ...
- 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 ...
- bzoj5093: [Lydsy1711月赛]图的价值
bzoj5093: [Lydsy1711月赛]图的价值 题目描述 Solution 考虑每一个点的贡献,枚举它的度数. Ans=n∗2(n−12)∑i=1n−1(n−1i)∗ikAns=n*2^{\t ...
- [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\ . ...
- bzoj 5093 [Lydsy1711月赛]图的价值——第二类斯特林数
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=5093 不要见到组合数就拆! 枚举每个点的度数,则答案为 \( n*\sum\limits_{ ...
- BZOJ.5093.[Lydsy1711月赛]图的价值(NTT 斯特林数)
题目链接 对于单独一个点,我们枚举它的度数(有多少条边)来计算它的贡献:\[\sum_{i=0}^{n-1}i^kC_{n-1}^i2^{\frac{(n-2)(n-1)}{2}}\] 每个点是一样的 ...
- 动态规划(斜率优化):BZOJ 3675 [Apio2014]序列分割
Description 小H最近迷上了一个分割序列的游戏.在这个游戏里,小H需要将一个长度为N的非负整数序列分割成k+l个非空的子序列.为了得到k+l个子序列, 小H将重复进行七次以下的步骤: 1.小 ...
- 块分割,维特比算法小结
学习总结 在ER中,有一类算法依靠参考结构化数据库的模型实现,以便提高ER的速度.但是这类算法常常在运行中产生了大量重复计算,降低了效率.由此,通过介绍以下方法,来解决这个问题: 块分割 给定的字符串 ...
最新文章
- 一夜间,中英同时发布新冠疫苗临床试验结果:均可引起免疫反应,同时登上《柳叶刀》...
- 开发日记-20190621 关键词 读书笔记《鸟哥的Linux私房菜-基础学习篇》
- c语言用指针两个字母交换,c语言指针基础之用指针交换两个数(代码实例)
- c语言递归函数检测回文,在C中使用递归函数的回文测试
- 【WPF学习】第五十章 故事板
- java中this,super,extends,implements相关继承概念讲解
- 清华2018顶级数据团队建设全景报告发布:Python最受欢迎,C语言含金量最高
- 我的MVVM框架 v3教程——todos例子
- python内置类型
- hdu 1506 单调栈问题
- [转]Linux芯片级移植与底层驱动(基于3.7.4内核)
- [Git]git教程
- Mybatis-Plus 自定义 id 生成器
- 湖南大学高级软件开发过程
- SIRS传染病模型求解及MATLAB实现
- 安卓Camera屏幕竖屏适配
- 小米手机系统wifi服务器,手机时间变慢,小米高管科普:3招即可解决
- SuperMemo导出html,使用思维导图和SuperMemo一起来快速复习(1)
- 2022李宏毅第14讲---机器终身学习(Life Long Learning)
- [CUPOJ] 直角三角形周长 枚举优化 题解