码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • XOR Construction


    思路:

            通过题目可以得出结论
            b1^b2=a1

            b2^b3=a2

            .......

            bn-1^bn=an-1

    所以就可以得出

            (b1^b2)^(b2^b3)=a1^a2

            b1^b3=a1^a2

    有因为当确定一个数的时候就可以通过异或得到其他所有的数,且题目所求的是一个n-1的全排列

    那么求出a的前缀异或和arr之后就得到bi=b1^arri

    实际上实在寻找一个 b1 使得异或出来的所有值越小越好,所以拆位,假设所有数字的第 i位为 1 的个数大于为 0 的个数,那我们最好异或上一个 2^i,这样可以使大部分数字变小。

    1. #include
    2. #include
    3. #include
    4. #include
    5. #include
    6. #include
    7. #include
    8. #include
    9. #include
    10. #include
    11. #include
    12. #include
    13. //#include
    14. #include
    15. #include
    16. #include
    17. #include
    18. #define dbug cout<<"*****hear*****"<
    19. #define rep(a,b,c) for(ll a=b;a<=c;a++)
    20. #define per(a,b,c) for(ll a=b;a>=c;a--)
    21. #define no cout<<"NO"<
    22. #define yes cout<<"YES"<
    23. #define endl "\n"//交互题一定要关!!!!!!!!!
    24. #define lowbit(x) (x&-x)
    25. #define IOS ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
    26. //priority_queue,greater >q;
    27. using namespace std;
    28. typedef long long ll;
    29. typedef long double ld;
    30. typedef pair PII;
    31. typedef pair<long double,long double> PDD;
    32. ll INF = 0x3f3f3f3f;
    33. //const ll LINF=LLONG_MAX;
    34. // int get_len(int x1,int y1,int x2,int y2)
    35. // {
    36. // return (x2-x1)*(x2-x1) + (y2-y1)*(y2-y1);
    37. // }
    38. const ll N = 2e5+ 10;
    39. const ll mod1 =998244353;
    40. const ll mod2 =1e9+7;
    41. // const ll hash_num = 3e9+9;
    42. ll n,m,ca;
    43. ll arr[N],brr[N],crr[N],drr[N];
    44. //ll h[N],ne[N],e[N],w[N],book[N],idx;
    45. //ll idx;
    46. // void add(ll a, ll b , ll c)
    47. // {
    48. // e[idx] = b, w[idx] = c,ne[idx] = h[a], h[a] =idx ++ ;
    49. // }
    50. void solve()
    51. {
    52. cin >> n;
    53. arr[0]=0;
    54. rep(i,1,n-1)
    55. {
    56. cin >> arr[i];
    57. arr[i] ^= arr[i-1];
    58. }
    59. ll ans=0;
    60. rep(i,0,20)
    61. {
    62. ll sum1=0;
    63. ll sum2=0;
    64. rep(j,0,n-1)
    65. {
    66. if(arr[j]>>i&1)sum1++;
    67. else
    68. {
    69. sum2++;
    70. }
    71. }
    72. if(sum1>sum2)ans|=1<
    73. }
    74. rep(i,0,n-1)arr[i]^=ans;
    75. rep(i,0,n-1)cout << arr[i]<<' ';
    76. }
    77. int main()
    78. {
    79. IOS;
    80. ll _;
    81. _=1;
    82. //scanf("%lld",&_);
    83. //cin>>_;
    84. ca=1;
    85. while(_--)
    86. {
    87. solve();
    88. ca++;
    89. }
    90. return 0;
    91. }

     

  • 相关阅读:
    ChatGPT - 在ChatGPT中设置通用提示模板
    vr火灾逃生安全科普软件开展消防突击教育安全有效
    C++进程间通信 匿名管道和命名管道
    FastAPI学习-26 并发 async / await
    SoilingNet: Soiling Detection on Automotive Surround-View Cameras 个人总结
    ApDBUtils引出、土方法完成封装
    云小课|MRS基础原理之CarbonData入门
    商城有一个抽奖活动,作为用户购买三件商品才能抽奖一次,怎么分析测试点
    页面跳转之转发和重定向+Servlet中文乱码问题
    LeetCode //C - 433. Minimum Genetic Mutation
  • 原文地址:https://blog.csdn.net/qq_73261465/article/details/134334866
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号