BZOJ2083: [Poi2010]Intelligence test

本文介绍了一种针对大量序列查询的优化算法。该算法通过预处理输入序列,并使用二分查找来快速判断任意长度的查询序列是否为原序列的子序列。通过贪心策略和数据结构优化,实现了高效的查询响应。

给n<=1e6的序列每个数<=1e6,求m<=1e6个询问,每次问一个长度L<=n的序列是不是一开始给的序列的子序列。

贪心一波,每进来一个数就找他最早的可能位置,这样是比后面的位置要好的。一开始预处理,把每个数字的编号,按数字大小第一关键字,编号第二,放在一个表里,在表里面二分即可。

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 #include<algorithm>
 5 //#include<iostream>
 6 using namespace std;
 7 
 8 int n,m;
 9 #define maxn 1000011
10 int a[maxn],ll[maxn],rr[maxn],list[maxn],cnt[maxn];
11 int main()
12 {
13     scanf("%d",&n);
14     memset(cnt,0,sizeof(cnt));
15     memset(ll,0,sizeof(ll));memset(rr,0,sizeof(rr));
16     for (int i=1;i<=n;i++) scanf("%d",&a[i]),cnt[a[i]]++;
17     int now=1,Max=1e6+1;
18     for (int i=0;i<=Max;i++) if (cnt[i]) ll[i]=rr[i]=now,now+=cnt[i];
19     for (int i=1;i<=n;i++) list[rr[a[i]]++]=i;
20 //    for (int i=1;i<=n;i++) cout<<list[i]<<' ';cout<<endl;
21     scanf("%d",&m);
22     int b,x;
23     while (m--)
24     {
25         scanf("%d",&b);
26         now=1;bool flag=1;
27         while (b--)
28         {
29 //            cout<<now<<' ';
30             scanf("%d",&x);
31             int L=ll[x],R=rr[x];
32             while (L<R)
33             {
34                 int mid=(L+R)>>1;
35                 if (list[mid]>=now) R=mid;
36                 else L=mid+1;
37             }
38             if (L==rr[x])
39             {
40                 flag=0;
41                 while (b--) scanf("%d",&x);
42                 break;
43             }
44             now=list[L]+1;
45         }//cout<<endl;
46         puts(flag?"TAK":"NIE");
47     }
48     return 0;
49 }
View Code

 

转载于:https://www.cnblogs.com/Blue233333/p/7632581.html

MATLAB主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性内容概要:本文主要介绍了一种在MATLAB环境下实现的主动噪声和振动控制算法,该算法针对较大的次级路径变化具有较强的鲁棒性。文中详细阐述了算法的设计原理与实现方法,重点解决了传统控制系统中因次级路径动态变化导致性能下降的问题。通过引入自适应机制和鲁棒控制策略,提升了系统在复杂环境下的稳定性和控制精度,适用于需要高精度噪声与振动抑制的实际工程场景。此外,文档还列举了多个MATLAB仿真实例及相关科研技术服务内容,涵盖信号处理、智能优化、机器学习等多个交叉领域。; 适合人群:具备一定MATLAB编程基础和控制系统理论知识的科研人员及工程技术人员,尤其适合从事噪声与振动控制、信号处理、自动化等相关领域的研究生和工程师。; 使用场景及目标:①应用于汽车、航空航天、精密仪器等对噪声和振动敏感的工业领域;②用于提升现有主动控制系统对参数变化的适应能力;③为相关科研项目提供算法验证与仿真平台支持; 阅读建议:建议读者结合提供的MATLAB代码进行仿真实验,深入理解算法在不同次级路径条件下的响应特性,并可通过调整控制参数进一步探究其鲁棒性边界。同时可参考文档中列出的相关技术案例拓展应用场景。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值