当前位置: 首页 > wzjs >正文

淮安那家公司做网站新浪博客

淮安那家公司做网站,新浪博客,网站开发哪个工具,wordpress免费模板D. Eating 题意 有 n n n 个史莱姆排成一行,第 i i i 个史莱姆的权重为 w i w_i wi​。若史莱姆 i i i 的权重满足 w i ≥ w j w_i \geq w_j wi​≥wj​,则它可以吃掉史莱姆 j j j;之后,史莱姆 j j j 会消失,…

D. Eating

题意

n n n 个史莱姆排成一行,第 i i i 个史莱姆的权重为 w i w_i wi。若史莱姆 i i i 的权重满足 w i ≥ w j w_i \geq w_j wiwj,则它可以吃掉史莱姆 j j j;之后,史莱姆 j j j 会消失,史莱姆 i i i 的权重变为 w i ⊕ w j w_i \oplus w_j wiwj ∗ ^{\text{∗}}

史莱姆国王想用参数 x x x 进行以下实验:

• 将一个权重为 x x x 的新史莱姆添加到行的最右端(第 n n n 个史莱姆之后)。

• 这个新史莱姆会尝试吃掉左侧的史莱姆(若满足条件),并移动到被吃者的位置。此过程会持续直到其左侧没有史莱姆,或者左侧史莱姆的权重大于它当前的值。(此过程中其他史莱姆不会被吃掉。)

• 实验的得分为被吃掉的史莱姆总数。

国王会询问 q q q 次查询。每次查询给定整数 x x x,你需要计算该参数下实验的得分。注意这些查询是假设性的,不会实际改变史莱姆的状态(即查询之间相互独立)。

∗ ^{\text{∗}} 此处 ⊕ \oplus 表示按位异或运算。

输入格式

第一行输入整数 t t t ( 1 ≤ t ≤ 1 0 4 1 \le t \le 10^4 1t104),表示测试用例数量。

每个测试用例的第一行包含整数 n n n q q q ( 1 ≤ n , q ≤ 2 ⋅ 1 0 5 1 \le n, q \le 2 \cdot 10^5 1n,q2105),分别表示史莱姆数量和查询次数。

第二行包含 n n n 个整数 w 1 , w 2 , … , w n w_1,w_2,\ldots,w_n w1,w2,,wn ( 1 ≤ w i < 2 30 1 \le w_i < 2^{30} 1wi<230),表示史莱姆的权重。

接下来 q q q 行每行输入一个整数 x x x ( 1 ≤ x < 2 30 1 \le x < 2^{30} 1x<230),表示实验参数。

所有测试用例的 n n n 之和不超过 2 ⋅ 1 0 5 2 \cdot 10^5 2105 q q q 之和不超过 2 ⋅ 1 0 5 2 \cdot 10^5 2105

输出格式

对于每个查询,输出一个整数,表示对应实验的得分。

思路

区间异或和可以用前缀和来快速查询,并且若a的最高有效位大于b,那么a>b。

因此预处理每个位置的二进制信息,利用贪心跳跃加速查询:

  1. 预处理:对每个位置i,记录其二进制位数。维护数组j[i][k],表示在i左侧,二进制位数不超过k的最远位置。这能快速定位可吞吃区间。

  2. 跳跃查询:从右向左处理,每次计算当前x的二进制位数g。利用j[t][g]找到最远可吞吃的位置l,此时区间[l, t]的史莱姆均满足条件。累加数量后,更新x为异或结果,并跳到l-1继续处理。

  3. 复杂度优化:通过预处理,每次查询只需 O ( l o g max ⁡ W ) O(log \max{W}) O(logmaxW)次跳跃,总复杂度 O ( q log ⁡ max ⁡ W ) O(q \log \max{W}) O(qlogmaxW),避免暴力遍历。

通过预处理二进制信息实现快速跳跃,将每次查询的时间从线性优化为对数级。

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define endl '\n'
#define int long long
#define pb push_back
#define pii pair<int,int>
#define FU(i, a, b) for(int i = (a); i <= (b); ++ i)
#define FD(i, a, b) for(int i = (a); i >= (b); -- i)
const int MOD = 1e9+7;
const int INF = 0x3f3f3f3f;
const int maxn= 5e5+5,MAXN = maxn;
int a[200005];
int p[200005];
int j[200005][31];
int rj[31];
int qr(int l,int r){if(l==r)return a[l];return p[r]^p[l-1];
}
void solve() {int n,q;cin>>n>>q;for(int i=1;i<=n;i++){cin>>a[i];p[i]=p[i-1]^a[i];int l= log2(a[i])+1;rj[l]=i;for(int k=1;k<=l;k++)rj[k]=i;for(int k=1;k<=30;k++){j[i][k]=rj[k];}}while(q--){int x,t=n,ans=0;cin>>x;while(x>=a[t] && t>0){int g=log2(x)+1;int l = min(t,j[t][g]+1);x=x^qr(l,t);ans+=t-l+1;t=l-1;}cout<<ans<<" ";}   cout<<endl;
}	signed main() {
#ifdef ONLINE_JUDGE
#elsefreopen("../in.txt", "r", stdin);
#endifcin.tie(0)->ios::sync_with_stdio(0);int T = 1;cin >> T;while (T--) {solve();}return 0;
}	
http://www.dtcms.com/wzjs/130545.html

相关文章:

  • 淄博做网站建设云南最新消息
  • 清仓在什么网站做有创意的网络营销案例
  • 如何做美食的视频网站海口网站关键词优化
  • nat123做网站 查封河南省疫情最新情况
  • asp网站开发视频教程百度如何优化排名靠前
  • 网站前端做报名框代码什么是百度快照
  • 网站制作模版湖南网站seo地址
  • 男女做微电影网站网络营销的新特点
  • 网上做公司网站怎么做seo优化方案模板
  • 网站建设开发设计营销公司山东运营培训班学费大概多少
  • 如何查网站是织梦做的好的搜索引擎推荐
  • wordpress 转 html杭州seo专员
  • asp班级网站建设如何做网络营销
  • 减肥产品网站模板手机百度下载免费
  • 淘宝网站咋做工具刷网站排刷排名软件
  • 外包接单平台网站百度招商加盟推广
  • 安徽seo网站成都网站seo厂家
  • html做简单网站实例seo快速排名是什么
  • 门网站制作电商平台开发
  • wordpress 4.9.5 中文seo的中文意思是什么
  • wordpress可以做cms吗优化营商环境工作开展情况汇报
  • 湘潭企业网站建设如何做好品牌宣传
  • 网站建设能在家工作室长沙百度推广优化排名
  • 浙江省建设职业注册中心网站厦门seo报价
  • 低价建设网站上海百度推广优化公司
  • 惠州网站制作设计搜索量用什么工具查询
  • 个人网站建设模板下载域名检测
  • 网站平台建设做好公司宣传网站搜索引擎优化报告
  • 网站推广计划效果seo基础
  • 如何去推广一个网站莆田seo