jzoj4598. 【NOIP2016模拟7.9】准备食物

一个th的题(a gensokyo)

难度系数在该知识点下为$2.1$

区间xor我们很明显会想到trie树,将每一个区间$l~r$异或和拆成$sum[l-1]$ $sum[r]$两个数的异或

注意到二进制的性质,比当前低的位即使都取1加起来都没有这位选1答案高,所以考虑贪心

题目中每次查询的范围都被限定在一个区间,所以考虑弄出了“$1~r$范围中所有前缀异或和的trie”后怎么搞

考虑每一位,当这一位的某一个儿子在$s[r]$与当前trie节点xor为1,就设这个儿子为”大儿子”,否则是“小儿子”,分别记为$a$,$b$

记$ed[x]$表示在插入以后,$x$这个节点代表的数出现个数,$siz[x]$表示$x$节点子树的所有节点$ed$值的和

根据异或的性质,如果$k$在当前考虑的这一位值为0,那么就将答案加上$sz[b]$(因为b所有子树代表值都比$k$大),然后考虑下一位

否则,不累加答案,考虑下一位

当位数超出限制,返回当前节点$ed$值,当现在树为空,返回$0$

于是本题成功解决

#include<bits/stdc++.h>
using namespace std;
#define N 100010
typedef unsigned int ui;
ui n,k,a[N],ct,nc,sz[N<<6],tw[N],s[N];
int c[N<<6][2],d[N][35],rt[N],qq;
void ins(int p,int &o,int x,int t){if(!o)o=++nc;sz[o]=sz[p]+1;if(x>32)return;c[o][!d[t][x]]=c[p][!d[t][x]];ins(c[p][d[t][x]],c[o][d[t][x]],x+1,t);
}
ui q(int o,int k,int x,int t){if(x>32||!o)return sz[o];int a=c[o][d[t][x]],b=c[o][!d[t][x]],p=k&tw[32-x];if(!p)return q(a,k,x+1,t)+sz[b];return q(b,k,x+1,t);
}
int main(){freopen("food.in","r",stdin);freopen("food.out","w",stdout);scanf("%u",&n);tw[0]=1;for(int i=1;i<=32;i++)tw[i]=tw[i-1]*2ll;for(int i=1;i<=n;i++){scanf("%u",&a[i]);s[i]=s[i-1]^a[i];}for(int i=1;i<=n;i++){ui x=s[i];ct=0;while(x){d[i][++ct]=x&1;x/=2;}reverse(d[i]+1,d[i]+33);ins(rt[i-1],rt[i],1,i-1);}scanf("%d",&qq);while(qq--){int r,k;scanf("%d%d",&r,&k);printf("%u\n",q(rt[r],k,1,r));}
}

 

转载于:https://www.cnblogs.com/rilisoft/p/10963769.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/393437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java number转string_Java Number类, Character类,String类

字符串在Java编程中广泛使用&#xff0c;字符串就是一系列字符(由一个个的字符组成)。 在Java编程语言中&#xff0c;字符串被视为对象。Java平台提供String类来创建和操作字符串。1. 创建字符串创建字符串的最直接方法是 -String str "Hello world!";每当它在代码中…

Android商城开发系列(二)——App启动欢迎页面制作

商城APP一般都会在应用启动时有一个欢迎界面&#xff0c;下面我们来实现一个最简单的欢迎页开发&#xff1a;就是打开商城App&#xff0c;先出现欢迎界面&#xff0c;停留几秒钟&#xff0c;自动进入应用程序的主界面。 首先先定义WelcomeActivity布局&#xff0c;布局非常简单…

DELL安装不了mysql_Windows 版本 Mysql 8.x 安装

1、官网下载安装包百度网盘链接&#xff1a;https://pan.baidu.com/s/1cFRbQM5720xrzMxbgjPeyA提取码&#xff1a;xlz72、解压安装包并新建一个文件夹作为安装目录(mysqlInstall)3、配置 Mysql 环境变量4、在解压好的目录下新建一个 my.ini 文件(注意&#xff1a;my.ini 文件和…

lambda 使用_如何使用Lambda和API网关构建API

lambda 使用Do you want to access your database, control your system, or execute some code from another website? An API can do all of this for you, and they’re surprisingly easy to set up.您是否要访问数据库&#xff0c;控制系统或从其他网站执行一些代码&…

Hyper-V Server联机调整虚拟硬盘大小

1. 技术概述&#xff1a; 从 Windows Server 2012 R2开始&#xff0c;管理员可以在运行虚拟机的同时&#xff0c;使用 Hyper-V 来扩展或压缩虚拟硬盘的大小。存储管理员可以通过对运行中的虚拟硬盘执行维护操作来避免代价不菲的停机。不再需要关闭虚拟机&#xff0c;这可以避免…

leetcode162. 寻找峰值(二分法)

峰值元素是指其值大于左右相邻值的元素。 给定一个输入数组 nums&#xff0c;其中 nums[i] ≠ nums[i1]&#xff0c;找到峰值元素并返回其索引。 数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个峰值所在位置即可。 你可以假设 nums[-1] nums[n] -…

python网络爬虫(5)BeautifulSoup的使用示范

创建并显示原始内容 其中的lxml第三方解释器加快解析速度 import bs4 from bs4 import BeautifulSoup html_str """ <html><head><title>The Dormouses story</title></head> <body> <p class"title"><…

Mingw编译DLib

Mingw编译DLib 因为机器上安装了qt-opensource-windows-x86-mingw530-5.8.0&#xff0c;所以准备使用其自带的mingw530来编译DLib使用。 因为DLib使用CMake的构建脚本&#xff0c;所以还请先安装好CMake。 cmake的下载地址如下https://cmake.org/files/v3.7/cmake-3.7.2-win64-…

探索JavaScript的关闭功能

Discover Functional JavaScript was named one of the best new Functional Programming books by BookAuthority!“发现功能JavaScript”被BookAuthority评为最佳新功能编程书籍之一 &#xff01; A closure is an inner function that has access to the outer scope, even…

QueryList 配置curl参数 的文档位置 QueryList抓取https 终于找到了

需要设置ssl证书&#xff0c;或者不验证证书&#xff0c;例&#xff1a;$ql QueryList::get(https://...,[],[verify > false]);设置这个 verify > false , 所以curl的其他参数就在这里配置即可 文档在 https://guzzle-cn.readthedocs.io/zh_CN/latest/request-optio…

leetcode981. 基于时间的键值存储(treemap)

创建一个基于时间的键值存储类 TimeMap&#xff0c;它支持下面两个操作&#xff1a; set(string key, string value, int timestamp) 存储键 key、值 value&#xff0c;以及给定的时间戳 timestamp。 2. get(string key, int timestamp) 返回先前调用 set(key, value, times…

物联网笔记

转载于:https://www.cnblogs.com/16-C-kai/p/6596682.html

关于大学生玩网络游戏的调查问卷

1.创建问卷&#xff0c;输入调查名称 2编辑问卷 3检查问卷&#xff0c;是否有误 4.提交并发布问卷 5分享问卷 6.问卷分析 转载于:https://www.cnblogs.com/dzw1996/p/7786754.html

java自动排序_java ArrayList自动排序算法的实现

前几天写的那个是错误的&#xff0c;在这里将正确的更新。。。通过实现ComParator接口&#xff0c;并且对Compare函数进行重写&#xff0c;自定义排序规则实现对ArrayList中对象的排序。。Student类定义&#xff1a;通过右键-》source-》自动生成Set和get方法package first;imp…

1到100的二进制编码_每天经过100天的编码后,我学到了什么

1到100的二进制编码Eleftheria Batsou is a web developer from Thessaloniki, Greece. She gave a talk at the Codegarden conference about her experience doing a solid 100 days of coding every day as part of the #100DaysOfCode Challenge.Eleftheria Batsou是来自希…

第六次 实验

转载于:https://www.cnblogs.com/P201821440005/p/10967987.html

leetcode658. 找到 K 个最接近的元素(二分法)

给定一个排序好的数组&#xff0c;两个整数 k 和 x&#xff0c;从数组中找到最靠近 x&#xff08;两数之差最小&#xff09;的 k 个数。返回的结果必须要是按升序排好的。如果有两个数与 x 的差值一样&#xff0c;优先选择数值较小的那个数。 示例 1: 输入: [1,2,3,4,5], k4,…

du命令、df命令用法

一、du命令 [plain] view plaincopy print?[rootwc1 mysql]# du --help Usage: du [OPTION]... [FILE]... or: du [OPTION]... --files0-fromF Summarize disk usage of each FILE, recursively for directories. Mandatory arguments to long options are mandatory…

mysql 循环创建列_mysql – 查询列中的循环值

我需要创建一个查询,一次只将一列的值移动一行↑&#xff1a;----------------------------| anotherCOL | values_to_loop |----------------------------| 1 | 1 || 2 | 2 || 3 | 3 || 4 | 4 || 5 | 5 || 6 | 6 || 7 | 7 || 8 | 8 || 9 | 9 || 10 | 10 |--------------------…

因子个数与因子和

题目&#xff1a;LightOJ:1341 - Aladdin and the Flying Carpet(因子个数&#xff09; Its said that Aladdin had to solve seven mysteries before getting the Magical Lamp which summons a powerful Genie. Here we are concerned about the first mystery. Aladdin was …