BZOJ5092:[Lydsy1711月赛]分割序列(贪心,高维前缀和)
Description
Input
Output
包含n行,每行一个整数,即a每个前缀的能量值。
Sample Input
1 2 3 4 5
Sample Output
3
6
10
9
Solution
题意其实就是对数组的异或前缀和$a[i]$,对每个$i$求出最大$a[j]+(a[j]~xor~a[i])$。
既然是二进制,就考虑按位贪心得出$a[j]$的值。
假设$a[i]$当前一位为$1$,那么$a[j]$的这一位选$0$或者$1$对答案都是一样的。
如果$a[i]$当前一位为$0$,那么$a[j]$就这一位填$1$。这一位填了$1$,后面贪每一位的时候必须包含这一位的$1$,也就是超集。这玩意儿用高维前缀和预处理一下最靠前的超集的位置就好了。
Code
1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 #define N (1<<20) 5 using namespace std; 6 7 int n,a[N],f[N]; 8 9 int main() 10 { 11 memset(f,0x7f,sizeof(f)); 12 scanf("%d",&n); 13 for (int i=1; i<=n; ++i) 14 { 15 scanf("%d",&a[i]); 16 a[i]^=a[i-1]; f[a[i]]=min(f[a[i]],i); 17 } 18 for (int i=0; i<20; ++i) 19 for (int j=0; j<(1<<20); ++j) 20 if (!(j&(1<<i))) f[j]=min(f[j],f[j^(1<<i)]); 21 for (int i=1; i<=n; ++i) 22 { 23 int ans=0,now=0; 24 for (int j=19; j>=0; --j) 25 if (a[i]&(1<<j)) ans+=(1<<j); 26 else if (f[now^(1<<j)]<=i) ans+=(1<<j)*2, now^=(1<<j); 27 printf("%d\n",ans); 28 } 29 }
转载于:https://www.cnblogs.com/refun/p/10161118.html
BZOJ5092:[Lydsy1711月赛]分割序列(贪心,高维前缀和)相关推荐
- bzoj5092: [Lydsy1711月赛]分割序列
[题解] 理解得迷迷糊糊... 一些准备操作就不说了吧.. 首先对于当前的第i个数,贪心思想按二进制位从高到低考虑. 若当前第j位是1,不管异或0还是1,这一位的贡献肯定是1<<j,不考虑 ...
- bzoj 5092: [Lydsy1711月赛]分割序列
5092: [Lydsy1711月赛]分割序列 Time Limit: 5 Sec Memory Limit: 256 MB Submit: 219 Solved: 100 [Submit][St ...
- [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\ . ...
- SPOJ.TLE - Time Limit Exceeded(DP 高维前缀和)
题目链接 \(Description\) 给定长为\(n\)的数组\(c_i\)和\(m\),求长为\(n\)的序列\(a_i\)个数,满足:\(c_i\not\mid a_i,\quad a_i\& ...
- sosdp(高维前缀和)学习笔记
高维前缀和 我们先看一维前缀和 for(int i=1;i<=n;i++) s[i]+=s[i-1]; 那么二维前缀和 for(int i=1;i<=n;i++) for(int j=1; ...
- 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 ...
- Codeforces Round #257 (Div. 1) D. Jzzhu and Numbers 高维前缀和 + 容斥
传送门 文章目录 题意: 思路: 题意: 思路: 完全想不到容斥啊,看了半天也没看懂渍渍渍. 定义f[i]f[i]f[i]表示iii的超集个数,那么选择的方案就是2f[i]−12^{f[i]}-12f ...
- Deltix Round, Spring 2021 D. Love-Hate 随机化 + sos dp(高维前缀和)
传送门 文章目录 题意: 思路: 题意: 给你nnn个朋友,一共有mmm种货币,一个朋友最多喜欢ppp种,用二进制给出111代表喜欢,让你选出最多的一个货币集合使得至少有⌈n2⌉\left \lcei ...
- bzoj5093: [Lydsy1711月赛]图的价值
bzoj5093: [Lydsy1711月赛]图的价值 题目描述 Solution 考虑每一个点的贡献,枚举它的度数. Ans=n∗2(n−12)∑i=1n−1(n−1i)∗ikAns=n*2^{\t ...
最新文章
- bfs迷宫寻路问题(一看就懂的讲解)
- pat 1034. Head of a Gang (30)
- java 中io的删除文件_总结删除文件或文件夹的7种方法-JAVA IO基础总结第4篇
- 升级Windows10后,远程登录失败,问题:您的凭据不工作(RDP do not work )
- Notes:DOM的事件模拟
- linux内核开源不能仿照_Linux内核开发,开源生产力工具,使用Google应用程序创建自动日历等
- IDEA中提示JAVA字符串常量过长
- 【Java从0到架构师】SpringBoot - MyBatis
- php接收post原始数据
- 运筹优化算法工程师面试汇总
- 必修三计算机选修三知识点总结,高中生物必修一、必修二、必修三、选修三知识点总结(人教版).pdf...
- python+selenium 定位元素踩过的坑
- 冰刃(IceSword)的使用方法(高级篇)
- TikTok视频流量黄金发布时间
- 五年北京,这个改变我命运的城市,终于要离开了(转)
- 企业微信个人二维码在哪里?会失效吗?
- 华为防火墙配置策略路由实现多个ISP出接口的智能选路
- 关于springboot整合mybatisplus中找不到数据库中的表的问题
- TI DSP TMS320F28335 CCS初级踩坑
- android查看轨迹,一种提取并分析Android手机行踪轨迹的方法
热门文章
- mt6735通用recovery_MTK65XX通用线刷刷机工具驱动-MTK65xx刷机工具驱动及教程下载最新免费版-西西软件下载...
- java 生成不重复随机数_Java如何实现生成n个不重复的随机数 Java实现生成n个不重复的随机数代码...
- mysql int 转 varchar_Java后端程序员必备:MySQL索引失效的十大杂症
- 远程桌面服务器怎么重启计算机,电脑怎么样远程重新启动
- mysql数据库编程(c 语言)_【C/C++学院】(23)Mysql数据库编程--C语言编程实现mysql客户端...
- linux3.8内核下载,linux 3.8内核usbmouse代码注释
- python三维可视化图,如何使用Python在(交互式)3D中可视化图形?
- java swing 帮助文档,在Java Swing应用程序中创建在线帮助-使用pdf用户文档
- [CSS3] touch-action设置移动端拖动行为
- CSS动画效果构成分析