题目链接:hdu 5014 Number Sequence
题目大意:给定n,表示有0~n这n+1个数组成的序列a,要求构造一个序列b,同样是由0~n组成,要求∑ai?bi尽量大。
解题思路:贪心构造,对于n来说,找到n对应二进制的取反对应的数x,那么从x~n之间的数即可两两对应,然后x-1即是一个子问题。
#include
#include
#include
using namespace std; const int maxn = 1e5+5; typedef long long ll; int arr[maxn]; ll solve (int n) { if (n < 0) return 0; int k = 0; while ((1<