首页 > 其他分享 >P3604 美好的每一天

P3604 美好的每一天

时间:2023-10-13 11:34:09浏览次数:27  
标签:一天 异或 美好 P3604 重排 区间 oplus 回文

原题

非常好的一道题

起初没看数据范围,以为是类似于区间的子区间性质的问题,口胡了一个扫描线+主席树的做法,然后发现要重排

首先读题,要重排后为回文串

然后发现数据范围很小,考虑根号算法。发现对于一个回文串,区间里的数要么都出现两次,要么有一个出现一次。这很类似于异或操作

于是我们考虑先对数状压一下,然后做一个前缀异或,则对于询问区间 \([x,y]\) 可以表示成找有多少个二元组 \((i,j)\) 满足 \(i,j \in [x-1,y],i < j,a_i \oplus a_j=2^k\ or\ a_i \oplus a_j=0\) ,这个就可以很方便的莫队啦

最终复杂度 \(O(Dn \sqrt n)\) ,其中 \(D = 26\)

标签:一天,异或,美好,P3604,重排,区间,oplus,回文
From: https://www.cnblogs.com/fox-konata/p/17761690.html

相关文章

  • 代码随想录算法训练营第一天| 704. 二分查找、27. 移除元素
    704.二分查找链接:https://leetcode.cn/problems/binary-search/description/思路:关键是定义清楚区间边界,想清楚middle在计算中是否可能取到左边界or右边界。若采用闭区间,则middle可能等于左/右边界值。27.移除元素链接:https://leetcode.cn/problems/remove-element/思路:暴......
  • 代码随想录算法训练营第一天(python) | 704. 二分查找、27. 移除元素。
    Leetcode704二分查找题目链接:704二分查找关键点思路:1、是否要进入到while部分的代码是left<=right还是left<right,看[left,right]是否是合法区间.例如[1,1]是合法区间,取<=;[1,1)非合法区间,取<。2、缩小区间时,考虑边界是否已经比较过。左闭右闭区......
  • 正式来到博客园的第一天
    博客圆的主页DIY功能真的好。我一开始还想自己基于github搭建一个个人博客网站,但后来发现即便是搭好了网站,写文章也比较麻烦。这主要体现在图片的管理上,我好像得要把图片全部上传图床、又或者是放在一个统一的文件夹中。但是我并不习惯于这种写文章的方式,我常用typora写markdown,并......
  • 【2023年09月28日】stf61-测试基础第一天笔记
    stf61-测试基础第一天笔记计算机基础计算机既可以做数值运算,也可以做逻辑运算。数值运算:加减乘除等针对数值的操作逻辑运算:运算结果是真或者假的这一类运算,多用于条件判断举例:a=10,b=20如果a>b并且a>0,那么就执行a+b的操作,否则执行a-b的操作。a>b并且a>0——》逻辑运算a+b,a-b——......
  • 【C#】【DateTime】获取当前时间的前一天或者后一天方法学习
     假期懈怠了一阵子,因为工作环境没有网络,随即记录下当时的问题:1、关于DateTime.Now(2023/10/07)的前一天的时间(2023/10/06),想要通过ToString转换成字符串后除去符号(20231007)再Convert.ToInt32转int类型然后-1,再转字符串去进行匹配,但是方法上过于繁琐 解决办法:可使用AddDays()......
  • 十四天学会C++之第一天(入门和基本语法)
    C++的起源和历史C++诞生于20世纪80年代初,它的创造者是计算机科学家BjarneStroustrup。当时,Stroustrup在贝尔实验室工作,他希望为C语言添加一些功能,以便更好地支持系统开发。这个愿望促使他创建了C++。C++的名字来源于它的基因,其中的"C"代表了C语言,而"++"表示C语言的一个增强版本。......
  • 【C语言入门】第一天
    [例题1]输入两个正整数a和b,输出a+b的值。其中a,b<10000.#include<stdio.h>intmain(){inta,b;scanf("%d%d",&a,&b);printf("%d",(a+b));return0;}[例题2]先输入一个t(t<100),然后输入t组数据。对于每组数据,输入两个整数a和b,输出a+b值......
  • 《看了受制了》第三十一天,7道题,合计164道题
    2023年9月30日Acwing5266队列题目大意问你,n加在三个数上,看最后三个数能不能相等。题目理解先把三个数都变成最大的,然后最后的n如果是3的倍数且大于等于0即可代码实现voidsolve(){lln,a,b,c;cin>>a>>b>>c>>n;llk=max(a,max(b,c));......
  • 236 中秋前一天
    9-28,中秋前一天,刚开学不久,还不怎么想家。明儿主动给家里打电话还是必要的今天很是普通。下午两节课,都收获不大。晚上物联网课还得是靠自己,虽然我是打了两节课的保卫萝卜晚上回来有学习,优化了昨天的学生通讯录程序代码,看了一眼航空订票系统项目,明儿开动应该。今天就这样咯。......
  • 智慧安防视频监控技术+AI智能分析算法助力美好乡村建设
    上期我们聊到《AI智能视频监控如何助力美好乡村》的相关方案,收到了很多粉丝的讨论与关注,视频监控只是乡村建设极其基础的一环,基于视频监控平台的AI智能算法,将人工智能融合到安防监控之中,才能让乡村建设达到最佳状态。1、实时监控安防监控系统EasyCVR平台可对乡村各个地区进行全天候......