"Or" Game
来源:互联网 发布:游族网络工作怎么样 编辑:程序博客网 时间:2024/06/06 06:47
链接:http://codeforces.com/problemset/problem/579/D
题目:
题意:给一串数,可以对任意数乘x,总共乘k次。为最后的全部异或和最大为多少
题解:
题目:
You are given n numbers a1, a2, ..., an. You can perform at mostk operations. For each operation you can multiply one of the numbers byx. We want to make as large as possible, where denotes the bitwise OR.
Find the maximum possible value of after performing at mostk operations optimally.
题意:给一串数,可以对任意数乘x,总共乘k次。为最后的全部异或和最大为多少
分析:基本是贪心,首先要求异或和最大,那么最好的情况是所有的k个x都乘到一起,因为这样数位最大,其次,保证低位的1尽可能的为奇数,但是却比较麻烦。查阅资料后发现一种另类的前缀和,这里可以叫做前缀异或和以及后缀异或和。输入后预处理一个前缀异或和和一个后缀异或和(均不包含自己),之后对每一个数求前缀和*自己*后缀和*k个x,比较得出最大值。
题解:
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <queue>#include <stack>#include <vector>#include <map>#include <string>#include <cstring>#include <functional>#include <cmath>#include <cctype>#include <cfloat>#include <climits>#include <complex>#include <deque>#include <list>#include <set>#include <utility>#define rt return 0#define fr freopen("in.txt","r",stdin)#define fw freopen("out.txt","w",stdout)#define ll long longusing namespace std;int a[200010];int pre[200010];int old[200010];int main(){int n, k, x;cin >> n >> k >> x;for (int i = 1; i <= n;i++){cin >> a[i];pre[i] = pre[i - 1] | a[i];}for (int i = n; i > 0; i--)old[i] = old[i + 1] | a[i];ll l = 1, ans = 0;for (int i = 0; i < k; i++)l *= (ll)x;for (int i = 1; i <= n;i++){ans = max(ans, (l*(ll)a[i]) | (ll)(pre[i - 1]) | (ll)(old[i + 1]));}cout << ans << endl;return 0;}
0 0
- "Or" Game
- “Or" Game CodeForces
- CF 578B "Or" Game
- CodeForces - 578B "Or" Game
- cf 320# "Or" Game (位运算)
- codeforces - 578B - "Or" Game(模拟)
- Codeforces Round #320 D "Or" Game
- track a app or a game
- 【Codeforces 578B】【贪心】"Or" Game
- 【21.37%】【codeforces 579D】"Or" Game
- Round 1 A-"Or" Game CodeForces
- #POJ1463#Strategic Game(贪心 or Hungary or 树形DP)
- XNA or Silverlight for Windows Phone 7 game
- cf#320 Div.2 Problem D "Or" Game
- Codeforces Round #320 (Div. 1) B. "Or" Game
- Codeforces Round #320 (Div. 2)D. "Or" Game
- cf#320 Div.2 Problem D "Or" Game
- cf D. "Or" Game (前缀+后缀维护单点更新)
- Delphi 计算MACD指标数值
- 第六期 Wiggler调试路由器 《路由器就是开发板》
- iOS仿微信相册界面翻转过渡动画
- 八月 28, 2016 6:33:25 下午 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() fo
- java 面试题(一)
- "Or" Game
- [笔试]地域划分
- Java设计模式之装饰模式
- Dijkstra 算法的 C/C++ 实现
- 事件——第四层
- 设计模式学习之路 - 单例模式 - only you
- 转:如何在android设备上面跑C或C++程序?
- FPS Versus Frame Time
- 如果有人让你推荐Python技术书,请让他看这个列表