【21.37%】【codeforces 579D】"Or" Game
time limit per test2 seconds
memory limit per test256 megabytes
inputstandard input
outputstandard output
You are given n numbers a1, a2, …, an. You can perform at most k operations. For each operation you can multiply one of the numbers by x. We want to make as large as possible, where denotes the bitwise OR.
Find the maximum possible value of after performing at most k operations optimally.
Input
The first line contains three integers n, k and x (1 ≤ n ≤ 200 000, 1 ≤ k ≤ 10, 2 ≤ x ≤ 8).
The second line contains n integers a1, a2, …, an (0 ≤ ai ≤ 109).
Output
Output the maximum value of a bitwise OR of sequence elements after performing operations.
Examples
input
3 1 2
1 1 1
output
3
input
4 2 3
1 2 4 8
output
79
Note
For the first sample, any possible choice of doing one operation will result the same three numbers 1, 1, 2 so the result is .
For the second sample if we multiply 8 by 3 two times we’ll get 72. In this case the numbers will become 1, 2, 4, 72 so the OR value will be 79 and is the largest possible result.
【题目链接】:http://codeforces.com/contest/579/problem/D
【题解】
显然,二进制位1最靠左的那个数字乘上数字会让最靠左的数字再靠左一点;
这样做是最优的策略;
但是
如果有多个数字二进制1最靠左,即最靠左的1相同;则不能随便选;
比如
1 0 0 0
1 0 1 1
1 1 0 1
这3个数字;
假设要乘的数字x是2;只能乘1次;
这三个数字依次是
8
11
13
如果把2乘最大的那个数字13
0 1 0 0 0
0 1 0 1 1
1 1 0 1 0
最后取or运算
结果为1 1 0 1 1
如果把2乘8
1 0 0 0 0
0 1 0 1 1
0 1 1 0 1
则再取or运算
结果为
1 1 1 1 1
显然后者更大;
所以不能单纯地就认为乘那个最大的数字就好了;
但如果最靠左的1的位置不是所有数字中最靠左的;那就不可能去乘它了;
所以乘了一次之后;肯定是继续去乘刚才乘的数字;
比如刚才的乘2之后变成了
1 0 0 0 0
0 1 0 1 1
0 1 1 0 1
显然继续让那个10000乘2是更优的;因为最高位移动一下幅度更大;
枚举要乘哪个数字、然后一直乘就可以了;
处理出前缀or和后缀or;预处理出x^k;x为要乘的数字;k为允许乘的次数
【完整代码】
#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int MAXN = 20e4+100;
int n,k,x;
LL a[MAXN],qz[MAXN],hz[MAXN];
int main()
{
//freopen("F:\\rush.txt","r",stdin);
cin >> n >> k >> x;
for (int i = 1;i <= n;i++)
cin >> a[i];
for (int i = 1;i <= n;i++)
qz[i] = qz[i-1] | a[i];
for (int i = n;i >= 1;i--)
hz[i] = hz[i+1] | a[i];
LL temp = x;
for (int i = 1;i <= k-1;i++)
temp*=x;
LL ans = 0;
for (int i = 1;i <= n;i++)
{
LL temp1 = a[i]*temp;
ans = max(ans,qz[i-1] | temp1 | hz[i+1]);
}
cout << ans << endl;
return 0;
}
【21.37%】【codeforces 579D】"Or" Game的更多相关文章
- 【 BowWow and the Timetable CodeForces - 1204A 】【思维】
题目链接 可以发现 十进制4 对应 二进制100 十进制16 对应 二进制10000 十进制64 对应 二进制1000000 可以发现每多两个零,4的次幂就增加1. 用string读入题目给定的二进制 ...
- 【35.37%】【codeforces 556C】Case of Matryoshkas
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【81.37%】【codeforces 734B】Anton and Digits
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【21.21%】【codeforces round 382D】Taxes
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- 【21.58%】【codeforces 746D】Green and Black Tea
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- 【codeforces 757D】Felicity's Big Secret Revealed
[题目链接]:http://codeforces.com/problemset/problem/757/D [题意] 给你一个01串; 让你分割这个01串; 要求2切..n+1切; 对于每一种切法 所 ...
- 【codeforces 757E】Bash Plays with Functions
[题目链接]:http://codeforces.com/problemset/problem/757/E [题意] 给你q个询问; 每个询问包含r和n; 让你输出f[r][n]; 这里f[0][n] ...
- 【77.78%】【codeforces 625C】K-special Tables
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- 【30.23%】【codeforces 552C】Vanya and Scales
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
随机推荐
- python把一个列表画柱状图
https://blog.csdn.net/w113691/article/details/80385534
- python基础-合并列表
1.append() 向列表尾部追加一个新元素,列表只占一个索引位,在原有列表上增加 2.extend() 向列表尾部追加一个列表,将列表中的每个元素都追加进来,在原有列表上增加 3.+ 直接用+ ...
- 微信小程序常见的UI框架/组件库总结
想要开发出一套高质量的小程序,运用框架,组件库是省时省力省心必不可少一部分,随着小程序日渐火爆,各种不同类型的小程序也渐渐更新,其中不乏一些优秀好用的框架/组件库. 1:WeUI 小程序–使用教程 h ...
- POJ 3278 Catch That Cow(BFS 剪枝)
题目链接:http://poj.org/problem?id=3278 这几次都是每天的第一道题都挺顺利,然后第二道题一卡一天. = =,今天的这道题7点40就出来了,不知道第二道题在下午7点能不能出 ...
- flask的使用(一)
1.程序基本的说明 #-*-encoding=utf--*- 从flask中引入类 from flask import Flask ,render_template import config 初始化 ...
- keil出现一些库函数没有定义
- GB2312/ANSI编码转中文字符
struct GB2312{ unsigned short gb2312code; CString ChineseCode;}GB2312ToChinese[] = {{0xA1A ...
- [PReact] Use Link State to Automatically Handle State Changes
Storing and updating values inside a component’s local state (known as controlled components) is suc ...
- JVM调优基础 分类: B1_JAVA 2015-03-14 09:33 250人阅读 评论(0) 收藏
一.JVM调优基本流程 1.划分应用程序的系统需求优先级 2.选择JVM部署模式:单JVM.多JVM 3.选择JVM运行模式 4.调优应用程序内存使用 5.调优应用程序延迟 6.调优应用程序吞吐量 二 ...
- 附加数据库 对于server XXX失败
近期在学习MVC+EF,看着视频做小demo.EF这一块须要涉及到数据库的连接,视频中所讲的样例与先前牛腩新闻系统数据库挺类似的. 所以,就偷个懒,利用这个数据库,可是在附加的时候出错 ...