Chino with Train to the Rabbit Town(前缀异或和)+(前缀后缀或)
链接:https://ac.nowcoder.com/acm/contest/553/G
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
Chino的数学很差,因此Cocoa非常担心。这一天,Cocoa准备教Chino学习异或。
众所周知,,即“异或”表示了和的二进制按位异或的结果(在C/C++中,表示了异或运算。),它的规则是如果这一位相同为0,否则为1.例如,,因为,,根据定义,它们之间的异或值是,下面是异或运算的真值表:
A | B | |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
异或还有一些非常有趣的性质,比如,,之类的。定义很简单,Chino也一下就学会了,那么现在就是作业时间啦!
开往兔子镇的火车一开始还是手摇式的木板车,所有人都在木板上做成一排,当然,就像你想的那样,旅途非常尬。如今,铁路修好了,因此人们可以坐火车来到兔子镇。有一个问题就是怎么划分车厢——大家都希望能够单独一个车厢,但在大部分情况下这是做不到的。
火车上有个乘客,坐在第位的乘客对车厢的划分有一个意愿值,我们定义一节车厢的总意愿值为这节车厢所有人意愿值的异或和,即,如果这节车厢包含了第名乘客,那么这节车厢的意愿值是.特别地,如果这节车厢只有一名乘客,那么这节车厢的意愿值就是.这个意愿值当然越高越好,但是这会让当局非常难办,因此他们确定了一个标准,的范围介于所有可能出现的意愿值之间。现在的任务就是让尽可能多的车厢的意愿值为.
题目对Chino来说太难啦,你能帮一帮Chino吗?
输入描述:
第一行是两个数n, k;接下来一行是n个数ai
输出描述:
题目中要求的答案
示例1
输入
3 1
1 2 3
输出
2
说明
我们划分成[1]和[2,3]两段,显然每段的异或和都是1.注意,同一位乘客只能被划分在一节车厢中,即,你不能做出类似[1,2],[2,3]的划分
解析:
sum[i]=sum[i-1]^x; sum[i]^k存在,则前面有个区间异或和为k,(sum[i]^k)^k=sum[i]
我们用map来标记每个异或和
ac:
#include<bits/stdc++.h>
using namespace std;
map<int,int> mp;int main()
{int n,k,sum,ans=0,x;scanf("%d%d",&n,&k);sum=0;mp[0]=1;for(int i=1;i<=n;i++){scanf("%d",&x);sum=sum^x;if(mp[sum^k]>0){ans++;mp.clear();sum=0;mp[0]=1;}else{mp[sum]=1;}}printf("%d\n",ans);return 0;
}
链接:https://ac.nowcoder.com/acm/contest/549/D
来源:牛客网
时间限制:C/C++ 2秒,其他语言4秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
位运算是一个非常重要的东西。而小A最近在学习位运算,小A看到了一道很简单的例题,是说从N个数里面选出N-1个数要让它们或起来的值最大,小A想知道这个答案是多少。你可以帮帮他吗?
输入描述:
第一行一个整数N表示有N个数接下来一行N个数表示A1,A2...AN第一行一个整数N表示有N个数接下来一行N个数表示A1,A2...AN
输出描述:
一行输出个结果代表最大值一行输出个结果代表最大值
示例1
输入
5 1 2 4 8 16
输出
30
说明
选择2,4,8,16或的和是最大的,没有比这个更大的方案。
备注:
1≤N≤5e6,1≤Ai≤longlong
解析:
用前缀和后缀处理,可以在O(N)的复杂度下达到跳过一些数的或和
ac:
#include <bits/stdc++.h>
using namespace std;
const int maxn= 5e6+5;
long long a[maxn],l[maxn],r[maxn];
long long ans=0;int main (){int n;scanf("%d",&n);for (int i=1;i<=n;i++)scanf("%lld",&a[i]);for (int i=1;i<=n;i++) l[i]=a[i]|l[i-1];for (int i=n;i>=1;i--) r[i]=a[i]|r[i+1];for (int i=1;i<=n;i++)ans=max(ans,l[i-1]|r[i+1]);printf("%lld",ans);return 0;
}
也能过的O(NlogN)复杂度算法
#include<bits/stdc++.h>
#define IOS std::ios::sync_with_stdio(false);
#define pb push_back
#define ll long long
#define mod 1e9+7
#define MAXN 5000005
using namespace std;int a[100];
vector<int> vc[MAXN];int main()
{IOSint n,x;scanf("%d",&n);ll sum=0;for(int i=0;i<n;i++){scanf("%d",&x);int c=x;int t=1,z;while(c){z=c%2;if(z){a[t]++;vc[i].push_back(t);}c=c/2;t++;}}int ans=0;for(int i=0;i<n;i++){int sum=0;int len=vc[i].size();for(int j=0;j<len;j++)a[vc[i][j]]--;for(int i=1;i<64;i++)if(a[i]>0)sum+=pow(2,i-1);ans=max(sum,ans);for(int j=0;j<len;j++)a[vc[i][j]]++;}printf("%d\n",ans);return 0;
}
Chino with Train to the Rabbit Town(前缀异或和)+(前缀后缀或)相关推荐
- Chino with Train to the Rabbit Town
可以相当当前位置,要么是前一位的答案,要么是新组成值为k的队列.所以我们可以记录前缀异或和,就可以比较方便地转移了. AC代码: #pragma GCC optimize("-Ofast&q ...
- 【牛客每日一题】 4.13 Xorto(前缀异或和,枚举优化/映射)
链接:https://ac.nowcoder.com/acm/problem/14247 来源:牛客网 题目描述 给定一个长度为n的整数数组,问有多少对互不重叠的非空区间,使得两个区间内的数的异或和为 ...
- 浏览器兼容--条件样式,选择符前缀,样式属性前缀
浏览器兼容--条件样式,选择符前缀,样式属性前缀 2012-12-05 09:20 by greenal, 1570 阅读, 0 评论, 收藏, 编辑 原文地址-- http://www.w3cplu ...
- 浏览器兼容--条件样式,选择符前缀,样式属性前缀(转)
浏览器兼容--条件样式,选择符前缀,样式属性前缀 2012-12-05 09:20 by greenal, 1570 阅读, 0 评论, 收藏, 编辑 原文地址-- http://www.w3cplu ...
- CF1592E Bored Bakry(二进制+前缀异或和)
CF1592E Bored Bakry description solution code description 题目链接 solution and\text{and}and如果第iii位为111, ...
- 【51nod - 前缀异或】 对前缀和的理解
题干: 前缀异或 基准时间限制:2 秒 空间限制:131072 KB 分值: 5 输入一个长度为n(1 <= n <= 100000)数组a[1], a[2], ..., a[n]. 输 ...
- LeetCode 1829. 每个查询的最大异或值(前缀异或 + 位运算)
文章目录 1. 题目 2. 解题 1. 题目 给你一个 有序 数组 nums ,它由 n 个非负整数组成,同时给你一个整数 maximumBit .你需要执行以下查询 n 次: 找到一个非负整数 k ...
- LeetCode 1442. 形成两个异或相等数组的三元组数目(前缀异或)
1. 题目 给你一个整数数组 arr . 现需要从数组中取三个下标 i.j 和 k ,其中 (0 <= i < j <= k < arr.length) . a 和 b 定义如 ...
- CodeForces.1174D.EhabandtheExpectedXORProblem(构造前缀异或和数组)
题目链接 这道题比赛的时候没做出来,赛后补题的时候发现其实可以构造一个前缀异或和数组,然后根据初始化的第一个值进行填数,但是作为菜鸡的我虽然坚信自己的想法是正确的却想了很久也没有能够构造出来所谓的前缀 ...
最新文章
- “冷热通道气流遏制系统”在数据中心机房中的应用
- 数学建模【建模竞赛与论文写作】
- 什么是WebService??
- html里面Meta标签的使用
- 问题 | golang编程中的坑
- redhat5.4 安装mysql_RedHat5.4搭建LAMP
- ASP.NET MVC 小小总结
- pdf打印机安装程序_Adobe Acrobat DC安装以及PDF打印机安装教程
- 【虹科分享】什么是 RFC 2544?网络设备的性能基准测试方法
- uni-app 小程序项目获取openid
- 解决vmware16安装win7时安装不了vmtools
- 固定翼飞机数学建模入门(姿态角篇)
- 360随身wifi作为无线网卡使用(在电脑有线网卡和无线网卡都没有的情况下)
- 季琦:VC青睐的“攻城略地者”
- 【云原生 | 12】Dockerfile语法详解及举例
- 干货 | 携程Dynamo风格存储的落地实践
- 炫龙笔记本怎么进bios设置u盘启动图文教程
- 关于通信方面的总结(通信协议、通信端口)
- win10麦克风说话没声音_怎样选主播麦克风
- 高等数学(第七版)同济大学 习题6-2 (前12题)个人解答
热门文章
- 工作中常用的设计模式 -- 责任链模式
- kanban系统wekan安装
- ifix从sqlserver里读数据_基于GE Fanuc产品PBS汽车总装生产线监控系统设计
- python对象不可订阅_python - TypeError:'int'对象不可订阅 - 尝试创建csv文件时 - SO中文参考 - www.soinside.com...
- 阿里优酷面试经历——学无止境
- 阿里云服务器糟挖矿程序攻击
- ITM_SendChar
- 非科班关于gan的一点点学习
- java大数据课程大纲(小牛学堂)
- Kafka命令及相关参数解释