Number Sequence
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 1886 Accepted Submission(s): 561
Special Judge
Problem Description
There is a special number sequence which has n+1 integers. For each number in sequence, we have two rules:
● ai ∈ [0,n]
● ai ≠ aj( i ≠ j )
For sequence a and sequence b, the integrating degree t is defined as follows(“⊕” denotes exclusive or):
t = (a0 ⊕ b0) + (a1 ⊕ b1) +···+ (an ⊕ bn)
(sequence B should also satisfy the rules described above)
Now give you a number n and the sequence a. You should calculate the maximum integrating degree t and print the sequence b.
● ai ∈ [0,n]
● ai ≠ aj( i ≠ j )
For sequence a and sequence b, the integrating degree t is defined as follows(“⊕” denotes exclusive or):
t = (a0 ⊕ b0) + (a1 ⊕ b1) +···+ (an ⊕ bn)
(sequence B should also satisfy the rules described above)
Now give you a number n and the sequence a. You should calculate the maximum integrating degree t and print the sequence b.
Input
There are multiple test cases. Please process till EOF.
For each case, the first line contains an integer n(1 ≤ n ≤ 105), The second line contains a0,a1,a2,...,an.
For each case, the first line contains an integer n(1 ≤ n ≤ 105), The second line contains a0,a1,a2,...,an.
Output
For each case, output two lines.The first line contains the maximum integrating degree t. The second line contains n+1 integers b0,b1,b2,...,bn. There is exactly one space between bi and bi+1(0 ≤ i ≤ n - 1). Don’t ouput any spaces after bn.
Sample Input
4
2 0 1 4 3
Sample Output
20
1 0 2 3 4
题意:
给出 N ,后给出 N 个数,它是一个 0 ~ N 的排列,找出一个序列对应式子异或和最大。
思路:
将数变为二进制考虑,会发现每个数都会有对应有一个 “ 使之变为该二进制位数全为 1 ” 的数。这样子就能解决问题了,总和就是化为全为 1 时候对应的十进制值,对应的数就是这个和减去这个值的得数。
AC:
#include <cstdio> #include <cstring> #include <algorithm> #include <set> #include <cmath> using namespace std; typedef long long ll; ll num[100005]; ll num1[100005]; ll Bit (ll ans) { ll bb = 0; while (ans) { ++bb; ans /= 2; } return bb; } int main() { int n; while (~scanf("%d", &n)) { for (int i = 0; i <= n; ++i) { scanf("%I64d", &num[i]); } memset(num1, -1, sizeof(num1)); ll sum = 0; for (ll i = n; i >= 0; --i) { if (num1[i] == -1) { ll bb = Bit(i); ll ans = pow(2, bb) - 1; sum += ans * 2; num1[i] = ans - i; num1[ans - i] = i; } } if (num1[0] == -1) num1[0] = 0; printf("%I64d\n", sum); for (int i = 0; i <= n; ++i) { printf("%I64d", num1[num[i]]); i == n ? printf("\n") : printf(" "); } } return 0; }
相关推荐
二进制和运算符 二进制计数设置位 二进制计数尾随零 二进制或运算符 二进制移位 二进制二进制补码 二进制异或运算符 计数 1S 布赖恩·克尼汉方法 计算 1 位数 格雷码序列 最高设置位 最右边设置位的索引...
内容概要:本文档详细规定了香港交易所(HKEX) Orion市场数据平台(OMD)证券市场与指数数据馈送产品的二进制接口规范。主要包括系统概述、消息格式、恢复机制和聚合订单管理等内容,旨在提供可靠的数据接口和服务。...
1. **比特数 (bit number)**:比特是信息的基本单位,代表二进制位,可以是0或1。1/4比特数可能指的是数据传输过程中的最小传输单位。 2. **AGC (Automatic Gain Control)**:AGC是一种自动调整接收机增益的技术,...
服务端自动生成序列号(SequenceNumber) 4.全中文解析及二进制格式包内容显示 中国电信小灵通SMGP模拟器: 概述:基于最新的SMGP v3.0 v2.0协议开发,增加了对交易请求消息的支持,具有方便易用图形化的界面,专业...
我们可以维护一个二维数组array[i][0]和array[i][1],分别表示i位二进制数中以0和1结尾的数的个数。这个问题的动态规划状态转移方程与斐波那契数列类似。 最后,Pku ACM 1458 "Common Subsequence" 是一个寻找两个...
12. `byte[]`: 映射到 `Blob`,用于存储二进制大对象,如图片或文档。 13. `String`: 映射到 `CLOB` (Oracle的 `Clob`),用于存储字符大对象,如长文本。 14. `java.sql.Clob`: 直接映射到 `CLOB` (Oracle的 `Clob`)...
RTP序列号是一个16位的无符号二进制整数,并且以1个步长逐步递增。当序列号递增到最大值时,会自动恢复为0。这被称为wrap-around。 RTP序列号的一个主要用途是丢包检测。当接收方发现序列号出现以大于1的步长跳跃的...
这个问题可以通过动态规划解决,定义一个状态数组`dp`,其中`dp[i]`表示长度为`i`的二进制串中不含相邻1的个数。状态转移方程可以为`dp[i] = dp[i-1] + dp[i-2]`,因为对于长度为`i`的串,其最后一位可以是0或1,但...
- **Account Content**: `0000000010000001` (整数值129的二进制表示) #### 四、总结 通过以上介绍,我们可以看出ASN.1是一种强大且灵活的数据定义语言,能够很好地适应各种通信场景的需求。BER编码规则作为其核心...
由于给定内容没有提供完整的insert语句信息,我们只能假设它会包含SQL操作的详细描述,如操作类型(INSERT)、受影响的表空间和数据块、行ID以及插入的值的二进制表示。 在实际的redo log分析中,通常会使用特定的...
文档没有直接提及,但斐波那契数列的性质在不同的进制下有所不同,特别是在二进制和十进制之间。虽然该文档并未涉及进制变化对斐波那契数性质的影响,但这是一个相关话题。 通过上述解释,我们可以看出文档涉及的...
- **二进制位操作**:在处理二进制数相关问题时,动态规划可以帮助找到问题的数学规律,并逐步求解出结果。 #### 动态规划的扩展应用 - **时间复杂度和空间复杂度**:动态规划通常具有较高的空间复杂度,因为需要...
IP地址分为IPv4和IPv6两种,前者由32位二进制组成,后者扩展到了128位。TCP/IP协议还涉及到IP分片和重组,其中DF(Don't Fragment)标志用于禁止IP分片。 进程间通信(IPC)是多线程或多进程应用程序中不同进程间...
动态规划的解决方案通常涉及构造一个数组,数组的每个元素代表n位二进制数中最后一位为0或1的数的数量。从n=1开始,根据前一位的值递推计算当前位的值,从而得到所有可能的非相邻1的组合。 在解决这些问题时,动态...
Oracle支持多种数据类型,如VARCHAR2(变长字符串)、CHAR(固定长度字符串)、NUMBER(数值,可指定精度和小数位数)、DATE(日期和时间)、LONG(大文本数据)、CLOB(大字符数据)、RAW和LONG RAW(二进制数据)...
Problem B: Number Sequence是一道需要发现规律的题目。在ACM竞赛中,观察数据规模,寻找模式是解题的关键。对于这类问题,避免暴力枚举,尝试归纳总结,有时还需要用到数论知识。 总的来说,ACM竞赛中的数学题...
2. **数据类型**:Oracle支持多种数据类型,包括数值型(如NUMBER,INTEGER)、字符型(如VARCHAR2,CHAR)、日期时间型(如DATE,TIMESTAMP)、二进制型(如BLOB,RAW)等。选择合适的数据类型对于存储和检索数据至...
- Oracle和MySQL都支持BLOB类型,用于存储大量二进制数据。虽然类型名称相同,但在处理BLOB时仍需注意两者间的操作差异。 4. **视图**: - MySQL的视图在创建时有一些限制,例如SELECT语句不能包含某些特定操作,...
程序首先获取输入二进制数的位数,然后通过循环计算每一位的值,并累加得到最终的十进制数值。 ```matlab function y = bin22deci(x) t = size(x, 2); y = zeros(size(x, 1), 1); for j = 1:size(x, 1) y(j) = rem...