Number Sequence HDU - 5014(思维构造)

NumberSequence how to use ax Number Sequence 立即下载

Number Sequence HDU - 5014

 There is a special number sequence which has n+1 integers. For each number in sequence, we have two rules:

● a i ∈ [0,n]
● a i ≠ a j( i ≠ j )

For sequence a and sequence b, the integrating degree t is defined as follows(“♁” denotes exclusive or):

t = (a 0 ♁ b 0) + (a 1 ♁ b 1) +···+ (a n ♁ b n)


(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 ≤ 10 5), The second line contains a 0,a 1,a 2,...,a n.

Output
For each case, output two lines.The first line contains the maximum integrating degree t. The second line contains n+1 integers b 0,b 1,b 2,…,b n. There is exactly one space between b i and b i+1 (0 ≤ i ≤ n - 1). Don’t ouput any spaces after b n.
Sample Input

4
2 0 1 4 3

Sample Output

20
1 0 2 3 4
题意:

给定n,表示有0~n这n+1个数组成的序列a,要求构造一个序列b,同样是由0~n组成,要求∑ai⊕bi尽量大。

分析:

一个数对应的二进制取反后两数异或和最大,而我们发现,两两对应的数可以分成若干个区间段

这里写图片描述

因此只需要每次找到每段的起点和终点,向中间开始配对即可

起点和终点怎么找,终点一开始就是n,之后的每段终点就是前一段的起点-1

那么起点怎么找,找到比当前终点大的第一个2的幂次的数,减去终点再-1就是起点了

code:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 1e5+5;
const int M = 20;
int num[N];
int Map[N];
int n;
ll t[M];
void init(){
    t[0] = 1;
    for(int i = 1; i <= M; i++){
        t[i] = t[i-1] * 2;
    }
}
int main(){
    init();
    while(~scanf("%d",&n)){
        for(int i = 0; i <= n; i++){
            scanf("%d",&num[i]);
        }
        int rear = n;
        int head;
        ll ans = 0;
        while(rear >= 0){
            for(int i = 0; i < M; i++){
                if(t[i] > rear){
                    head = t[i] - rear - 1;
                    break;
                }
            }
            for(int i = 0; i < (rear - head + 1) / 2; i++){
                Map[rear - i] = head + i;
                Map[head + i] = rear - i;
            }
            if(rear == head)
                Map[rear] = head;
            rear = head - 1;
        }
        for(int i = 0; i <= n; i++){
            ans += num[i] ^ Map[num[i]];
        }
        printf("%lld\n",ans);
        for(int i = 0; i < n; i++){
            printf("%d ",Map[num[i]]);
        }
        printf("%d\n",Map[num[n]]);
    }
    return 0;
}
WSL中使用VMD图形化界面 【代码】WSL中使用VMD图形化界面。 阅读详情

相关推荐

ABB机器人常见的几大数据类型

ABB机器人数据存储描述了机器人控制器内部的各项属性,ABB机器人控制器数据类型多达100余种,其中常见的数据类型包括基本数据、i/o数据、运动相关数据。 1、基本数据 基本数据: bool 逻辑值:逻辑状态下赋予的真或者假。逻辑值有两种情况:成立和不成立则逻辑值为真使用true或1表示不成立则逻辑值为假使用false或0表示 byte 字节值:用于计量存储容量的一种计量单位,取值范围为(0-255) num 数值:变量、可存储整数或小数整数取值范围(-8388607~8388608) dnum

soinlove36的专栏 1万+

HDU-—Number Sequence-1005(找规律)

Number Sequence 原题链接http://acm.hdu.edu.cn/showproblem.php?pid=1005 Problem Description A number sequence is defined as follows: f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) + B * f(n - 2)) mod 7. Given A, B, and n, you are to calculate the value of f(n). Input

pursuit的博客 487

实战分享:如何用Dify和MaxKb实现文档智能切分与高效检索(附代码解析)

本文详细介绍了如何结合Dify和MaxKB构建文档智能切分与高效检索系统。针对传统全文检索的不足,提出了结构感知的文档切分方案,通过解析文档层级关系并构建标题链,实现了精准的章节级检索。文章包含完整的代码实现,涵盖文档解析、智能切分、向量化策略及双索引优化,并分享了性能调优和生产环境实践经验。

qsc90123456的博客 546

Hdu - 1711. Number Sequence以及KMP算法总结

Hdu1711-Number Sequence以及KMP算法总结 KMP求解流程 KMPnext数组求解 Hdu1711-Number Sequence模板题 题目链接 KMP求解流程 这里先说明next数组的含义: next[i]的含义是在str[i]之前的字符串str[0…i]中,必须以str[i-1]结尾的后缀子串(不能包含str[0])与必须以s...

zxzxin的博客~ 570

人工智能训练师认证教程(5)使用MONAI进行医学影像分析的完整指南

本文介绍了使用MONAI框架进行医学影像分析的全流程。首先详细说明了环境搭建步骤,包括PyTorch和MONAI的安装配置。然后以肺部CT 3D分割为例,分步骤讲解了数据准备与预处理、3D UNet模型构建、训练配置(DiceLoss损失函数、Adam优化器等)以及训练验证循环的实现。文章还包含推理可视化方法和模型导出为ONNX格式的部署方案,并强调了医学影像分析中的数据格式适配、强度归一化、显存优化等关键注意事项。最后指出MONAI的医学专用组件可大幅简化开发流程,建议后续可探索SwinUNETR等进阶方

华为开发者布道师,天府英才计划,致力于大数据+AI 的应用创新,助力企业与个人AI创新赋能。 1208

CY7C68013 C0模式启动

C0或是C2启动的目的,是更改USB芯片的ID信息,并把固件载入到芯片内部RAM中运行。C0模式是指只从EEPROM中载入USB ID信息,因为只有ID信息(8个字节),所以只需要一个小容量的EEPROM即可。当然大容量的EEPROM也可以使用C0模式,但是小容量的EEPROM只能使用C0模式启动。如下图所示: 使用小容量的EEPROM要将A0,A1,A2接地。 这里我用了个24LC01,容量1

Fezl的博客 1739

【HDU 1005】 Number Sequence

Number Sequence

周转 &&& 周转 297

告别Modern Standby!Win10/11强制S3睡眠的终极指南(含BIOS设置避坑)

本文是针对Windows 10/11用户因Modern Standby(S0低电量待机)导致睡眠耗电、发热问题的终极解决方案。文章详细对比了Modern Standby与传统S3睡眠(Suspend to RAM)的本质区别,并提供了从系统诊断、注册表修改、BIOS/UEFI设置避坑到驱动优化的完整步骤,旨在帮助用户强制启用稳定、省电的S3睡眠模式,彻底告别睡眠噩梦。

n7o8p的博客 794

hdu Number Sequence

点击打开链接   密码:syuct Number Sequence Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Total Submission(s) : 9   Accepted Submission(s) : 2 Font: Times New Ro

zhang__liuchen的博客 472

Python爬虫实战:爬取ETF基金持仓变化

在python复制编辑本文详细介绍了如何使用Python的Scrapy框架爬取ETF基金的持仓变化信息,包括项目的搭建、数据的提取与存储、以及数据的可视化分析。通过本项目,读者可以掌握基本的网页爬虫技术,并应用于实际的财经数据采集与分析中。

2201_76125261的博客 629

【ArcGIS微课1000例】0118:一文讲清楚tif(geotiff)栅格数据格式

TIFF(Tagged Image File Format)是一种常见的图像文件格式,它被广泛用于存储和传输各种类型的图像数据。图像存储:TIFF格式可以存储多通道的位图图像,包括灰度图、彩色图和透明度图等。它支持不同的像素深度,可以是8位、16位、24位或32位等。因此,TIFF格式非常适合存储高质量的图像数据,包括照片、卫星图像、医学影像等。无损压缩:TIFF格式支持无损压缩,这意味着图像可以被压缩而无需损失任何像素信息。这种压缩方式可以减小文件大小,而不会降低图像的质量。

智慧空间实验室 2819

HDU5014Number Sequence(贪心)

题目链接 题目大意: 给出n,然后给出一个数字串,长度为n + 1, 范围在[0, n - 1].然后要求你找出另外一个序列B,满足上述的要求,并且使得t = A0^B0 + Ai + 1 ^ Bi + 1 + ... + An ^ Bn 最大。 解题思路: 对于一个数字进行异或,要求结果最大的话,那么取这个数字的二进制互补数字是最好的情况,并且可以发现每次找到一个数字和对应的互补

1199

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

hdu 5014 Number Sequence(贪心)

题目链接: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 n

不慌不忙、不急不躁 1225

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

HDU 5014 Number Sequence(西安网络赛H题)

HDU 5014 Number Sequence 题目链接 思路:对于0-n,尽量不让二进制中的1互相消掉就是最优的,那么只要两个数只要互补就可以了,这样每次从最大的数字,可以找到和他互补的数字,然后这个区间就能确定了,然后剩下的递归下去为一个子问题去解决 代码: #include #include const int N = 100005; int n, a[N]

Remilia's 2122

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

HDU 5014 Number Sequence(分类模拟)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5014 AC代码

风尘_浪子 1037

【HDU - 5014】Number Sequence(贪心构造)

题干: 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 deg...

xuanweiace的博客 401

Number Sequence HDU - 5014

There is a special number sequence which has n+1 integers. For each number in sequence, we have two rules: ● a i ∈ 0,n0,n ● a i ≠ a j( i ≠ j ) For sequence a and sequence b, the integrating degree t

nyist_xsk 404

HDU - 5014 Number Sequence(贪心+位运算)

Number Sequence Time Limit: 2000MS   Memory Limit: 65536KB   64bit IO Format: %I64d & %I64u [Submit]   [Go Back]   [Status]   Description There is a special number sequ

小G的ACM之路 941

hdu 5014 Number Sequence

Number Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 2533    Accepted Submission(s): 1020 Special Judge Problem Description

Hi_jiaxinwei的博客 135

HDU 5014 Number Sequence

题意:给你N个数,已知有a、和b两个数组、a和b数组的大小都为N,每个数字都是在0~N里面选择,每个数字只能选择一次、 t=a[0]^b[0]+... a[i]^b[i]....a[N]^b[N]、  输出t的最大值,和对应的t数组 思路:我是在纸上推导的、   推导的结果是从大到小推,每个数对应的一定为他除了最高位的反码、也就是说1010->101  那么,怎么才能由当前数字怎么求出他对应的

m494428831的博客 314

HDU——5014 Number Sequence

Number Sequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 807    Accepted Submission(s): 387 Special Judge Problem Description

u014086857的专栏 513

hdu5014Number Sequence 位运算

//给出长度为n+1的序列 a 其中0<=ai<=n且ai != aj (i != j) //找出满足同样条件的序列b使得 //t = (a[0]^b[0]) + (a[1]^b[1]) + ... + (a[n]^b[n]) 最大 //由于a和b的序列的长度都是确定的 //从n到0的数 //每个数i找一个从其最高位开始按位非的数j //由于对应位置最高位为0,所以j<=i //对于每一个数i其对

ijbuhv的专栏 716

Number Sequence(hdu 5014)

题目链接 题意:给出A数字序列,B序列与之元素相同, 各项对应异或, 求使得异或和最大的B序列。 思路:虽然这道题给出A的序列, 但是要按照从大到小的顺序进行异或运算,因为使得大数异或和达到最大值的数一定比他小, 而这个小数就可以使用最大值和大数异或来找到。 比如: 8 , 二进制是 1000, 异或能够得到的最大值是 1111, 所以与之匹配的数就为 1000^1111 = 011

吴西的专栏 578
上一篇: 基础计算几何模板+解释
下一篇: Dice HDU - 5012(bfs)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值