Codeforces Round #177 (Div. 1) C. Polo the Penguin and XOR operation(贪心)
2016-07-29 21:30
513 查看
题目地址:http://codeforces.com/problemset/problem/288/C
思路:保证位数尽量大的情况下使得每二进制位均为一的情况下结果最大,从后向前枚举(保证位数尽量大),num表示该数i二进制有几位,x即为使得与i异或后每二进制位均为一的数,v[x]标记是否使用过该数,若未使用则与i搭配。
思路:保证位数尽量大的情况下使得每二进制位均为一的情况下结果最大,从后向前枚举(保证位数尽量大),num表示该数i二进制有几位,x即为使得与i异或后每二进制位均为一的数,v[x]标记是否使用过该数,若未使用则与i搭配。
#include<cstdio> #include<cmath> #include<cstring> #include<iostream> #include<algorithm> using namespace std; int n; long long sum=0; int v[1000050]; int ans[1000050]; int main() { scanf("%d",&n); for(int i=n;i>0;i--) { if(!v[i]) { int num=(int)(log2(i))+1; int x=((1<<num)-1)^i; v[x]=1,ans[i]=x,ans[x]=i; sum+=(((1<<num)-1)<<1); } } printf("%I64d\n",sum); for(int i=0;i<n;i++) printf("%d ",ans[i]); printf("%d\n",ans ); return 0; }
相关文章推荐
- 1.一些 贪心算法 的简单思维题:
- 贪心算法——字典序最小问题
- 贪心算法——区间调度问题
- Codeforces Round #197 (Div. 2)
- Codeforces Round #198 (Div. 1)
- Codeforces 405E Codeforces Round #238 (Div. 2)E
- Codeforces 407C Codeforces Round #239 (Div. 1)C
- Jump Game I,II 贪心
- Wildcard Matching
- 贪心法实现无向图的划分 代码
- 贪心题目循环和控制台折行
- 【WHUST 2016 Individual Contest #1】解题报告
- 【WHUST 2016 Individual Contest #2】解题报告
- 【WHUST 2016 Individual Contest #3 】解题报告
- CodeForces 449A - Jzzhu and Chocolate
- CodeForces 449 B. Jzzhu and Cities
- codeforces 618C. Constellation
- Codeforces Round #349 (Div. 2) - C
- Codeforces Round #361 (Div. 2)
- 7.13Codeforces Round #360 (Div. 2)