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

站酷设计网页版磁力猫最好磁力搜索引擎

站酷设计网页版,磁力猫最好磁力搜索引擎,德持建设集团有限公司网站,完善酒店网站建设题目大意 小 C C C有一个括号序列 A A A,其长度为 m m m,且序列元素只包含左右括号。他想生成一个无限长的括号序列 B B B,由于 B B B的长度为正无穷,所以其下标可以为任意整数(可以为负)。为了由 A A A生…

题目大意

C C C有一个括号序列 A A A,其长度为 m m m,且序列元素只包含左右括号。他想生成一个无限长的括号序列 B B B,由于 B B B的长度为正无穷,所以其下标可以为任意整数(可以为负)。为了由 A A A生成 B B B,小 C C C采用如下方式:

{ b i = a i , 0 ≤ i < n b i = b i − n , i ≥ n b i = b i + n , i < 0 \begin{cases} b_i=a_i,\qquad 0\leq i<n \\ b_i=b_{i-n},\quad \ i\geq n \\ b_i=b_{i+n},\quad \ i<0 \end{cases} bi=ai,0i<nbi=bin, inbi=bi+n, i<0

无聊的小 C C C还打算以序列 B B B为基础生成无穷个长度为正无穷的括号序列,我们定义 B k B^k Bk代表第 k k k个无穷序列, B 0 = B B^0=B B0=B。对于任意 k ≥ 1 k\geq 1 k1,由 B k − 1 B^{k-1} Bk1生成 B k B^k Bk的方式如下:

{ b i k = b i + 1 k − 1 , b i k − 1 = ‘ ( ’ b i k = b i − 1 k − 1 , b i k − 1 = ‘ ) ’ \begin{cases} b_i^k=b_{i+1}^{k-1}, \quad b_i^{k-1}=‘(’ \\ b_i^k=b_{i-1}^{k-1}, \quad b_i^{k-1}=‘)’ \end{cases} {bik=bi+1k1,bik1=(bik=bi1k1,bik1=)

最后,小 C C C q q q次询问,每次询问给定的 k , l , r k,l,r k,l,r,求有多少个左括号存在于无穷括号序列 B k B^k Bk中下标位于 [ l , r ] [l,r] [l,r]的元素中。

T T T组数据。

1 ≤ n , q ≤ 1 0 5 , 0 ≤ k ≤ 1 0 9 , − 1 0 9 ≤ l ≤ r ≤ 1 0 9 , 1 ≤ T ≤ 10 1\leq n,q\leq 10^5,0\leq k\leq 10^9,-10^9\leq l\leq r\leq 10^9,1\leq T\leq 10 1n,q105,0k109,109lr109,1T10

时间限制 3000 m s 3000ms 3000ms,空间限制 512 M B 512MB 512MB


题解

f ( k , i ) f(k,i) f(k,i)表示 B k B^k Bk中第 i i i个左括号的下标( i i i可以为 0 0 0甚至负数),设 g ( k , p ) g(k,p) g(k,p)表示满足 f ( k , i ) ≤ p f(k,i)\leq p f(k,i)p的最大的 i i i,则区间 [ l , r ] [l,r] [l,r]里的左括号的总数为 g ( k , r ) − g ( k , l − 1 ) g(k,r)-g(k,l-1) g(k,r)g(k,l1) g g g的值可以用二分求出。

因为我们只关心 g g g的差值,所以第 0 0 0个左括号的位置对应那个左括号其实是可以任意指定的。方便起见,我们把括号序列 A A A中的第一个左括号设为第 0 0 0个左括号。

下面考虑 f ( k , i ) f(k,i) f(k,i)的转移式:

  • 如果 f ( k − 1 , i ) f(k-1,i) f(k1,i)的下一个字符为右括号,因为 ( ) () ()会变成 ) ( )( )(,所以 f ( k , i ) = f ( k − 1 , i ) + 1 f(k,i)=f(k-1,i)+1 f(k,i)=f(k1,i)+1
  • 如果 f ( k − 1 , i ) f(k-1,i) f(k1,i)的下一个字符为右括号,因为 ( ( (( ((会变成 ( ∗ (* (,所以 f ( k , i ) = f ( k − 1 , i + 1 ) − 1 f(k,i)=f(k-1,i+1)-1 f(k,i)=f(k1,i+1)1

那么,转移式为

f ( k , i ) = min ⁡ { f ( k − 1 , i ) + 1 , f ( k − 1 , i + 1 ) − 1 } f(k,i)=\min\{f(k-1,i)+1,f(k-1,i+1)-1\} f(k,i)=min{f(k1,i)+1,f(k1,i+1)1}

假设 f ( k , i ) f(k,i) f(k,i)是从 f ( 0 , j ) f(0,j) f(0,j)转移过来的,那么第一维从 0 0 0走到 k k k的过程中, min ⁡ \min min中的第二项恰好选了 j − i j-i ji次,第一项恰好选了 k − ( j − i ) k-(j-i) k(ji)次,所以转移式还可以写为

f ( k , i ) = min ⁡ i ≤ j ≤ i + k { f ( 0 , j ) + k − 2 ( j − i ) } f(k,i)=\min\limits_{i\leq j\leq i+k}\{f(0,j)+k-2(j-i)\} f(k,i)=iji+kmin{f(0,j)+k2(ji)}

可以看出决策区间的大小为 k k k。设括号序列 A A A中,左括号的数量为 m m m,我们先分析 k ≤ m k\leq m km时如何求解。

F ( j ) = f ( 0 , j ) − 2 j F(j)=f(0,j)-2j F(j)=f(0,j)2j,注意到 f ( 0 , j + m ) − f ( 0 , j ) = n f(0,j+m)-f(0,j)=n f(0,j+m)f(0,j)=n,则有

F ( j + t ) = F ( j % m + t ) + ( n − 2 m ) × ⌊ j m ⌋ F(j+t)=F(j\% m+t)+(n-2m)\times \lfloor\dfrac jm\rfloor F(j+t)=F(j%m+t)+(n2m)×mj

其中 t t t是任意非负整数。我们可以用 R M Q RMQ RMQ来预处理 F ( 0 ) F(0) F(0) F ( 2 m − 1 ) F(2m-1) F(2m1),然后把 [ i , i + k ] [i,i+k] [i,i+k]映射到 [ i % m , i % m + k ] [i\%m,i\%m+k] [i%m,i%m+k]求最小值即可。

接下来分析一下 k k k比较大的解法。讨论 n − 2 × m n-2\times m n2×m的值:

  • 如果 n − 2 × m ≥ 0 n-2\times m\geq 0 n2×m0,说明 F ( j + m ) ≥ f ( j ) F(j+m)\geq f(j) F(j+m)f(j),因此最小值只存在于 i ≤ j < i + m i\leq j<i+m ij<i+m这个范围中
  • 如果 n − 2 × m < 0 n-2\times m<0 n2×m<0,说明 F ( j + m ) < f ( j ) F(j+m)<f(j) F(j+m)<f(j),因此最小值只存在于 i + k − m < j ≤ i + k i+k-m<j\leq i+k i+km<ji+k这个范围中

这样,我们就把区间长度缩小到了 m m m,通过与上面类似的方法,用 R M Q RMQ RMQ求最小值即可。

时间复杂度为 O ( ∑ ( n log ⁡ n + q log ⁡ v ) ) O(\sum(n\log n+q\log v)) O((nlogn+qlogv)),其中 v v v表示 l , r l,r l,r的值域。

可以参考代码帮助理解。

卡常小技巧

如果你 TLE \text{TLE} TLE的话,可以参考一下下面这些卡常小技巧:

  • 加上快读
  • 在将当前区间映射在 [ 0 , 2 m − 1 ] [0,2m-1] [0,2m1]上时,因为 i i i有可能为负数,所以会需要用 ( i % m + m ) % m (i\%m+m)\%m (i%m+m)%m,这样模了两次,会比较慢,所以当 i < 0 i<0 i<0时我们可以改为 ( i + i n f × m ) % m (i+inf\times m)\%m (i+inf×m)%m,其中 i n f inf inf是一个很大的数,来保证 i + i n f × m ≥ 0 i+inf\times m\geq 0 i+inf×m0;如果 i ≥ 0 i\geq 0 i0,则直接用 i % m i\% m i%m。这样就都只需要模一次了,可以快不少
  • 在求 S T ST ST表的时候,对二维数组要先枚举行再枚举列,参考这篇博客,这样也可以快很多

code

#include<bits/stdc++.h>
#define rg register
using namespace std;
const int N=100000;
const long long inf=1e9;
int T,n,m,q,lg[2*N+5],f[2*N+5],st[2*N+5][20];
char s[N+5];
int rd(){int t=0,fl=1;char ch=getchar();while(ch<'0'||ch>'9'){if(ch=='-') fl=-1;ch=getchar();}while(ch>='0'&&ch<='9'){t=t*10+ch-'0';ch=getchar();}return t*fl;
}
void init(){lg[0]=-1;for(rg int i=1;i<=2*N;i++) lg[i]=lg[i/2]+1;
}
void solve(){for(rg int i=0;i<m;i++) f[i+m]=f[i]+n;for(rg int i=0;i<2*m;i++) st[i][0]=f[i]-2*i;for(rg int j=1;j<=17;j++){for(rg int i=0;i+(1<<j)-1<2*m;i++){st[i][j]=min(st[i][j-1],st[i+(1<<j-1)][j-1]);}}
}
int findst(int l,int r){int k=lg[r-l+1];return min(st[l][k],st[r-(1<<k)+1][k]);
}
int sv(int x,int mod){if(x>=0) return x%mod;return (x+inf*mod)%mod;
}
int find(int k,int x){if(k<=m){int md=sv(x,m),tmp=(x-md)/m;return findst(md,md+k)+(n-2*m)*tmp+k+2*x;}else if(n-2*m>=0){int md=sv(x,m),tmp=(x-md)/m;return findst(md,md+m-1)+(n-2*m)*tmp+k+2*x;}else{int md=sv(x+k-m,m),tmp=(x+k-m-md)/m;return findst(md+1,md+m)+(n-2*m)*tmp+k+2*x;}
}
int gt(int k,int x){int l=-inf,r=inf,mid;while(l<=r){mid=l+r>>1;if(find(k,mid)<=x) l=mid+1;else r=mid-1;}return l-1;
}
int main()
{
//	freopen("seq.in","r",stdin);
//	freopen("seq.out","w",stdout);init();T=rd();while(T--){scanf("%s",s);n=strlen(s);m=0;for(rg int i=0;i<n;i++){if(s[i]=='(') f[m++]=i;}q=rd();if(!m){for(rg int i=1,k,l,r;i<=q;i++){k=rd();l=rd();r=rd();printf("0\n");}continue;}solve();for(rg int i=1,k,l,r;i<=q;i++){k=rd();l=rd();r=rd();printf("%d\n",gt(k,r)-gt(k,l-1));}}return 0;
}

文章转载自:
http://simultaneous.wgkz.cn
http://qktp.wgkz.cn
http://alular.wgkz.cn
http://peadeutics.wgkz.cn
http://peroxisome.wgkz.cn
http://anticathexis.wgkz.cn
http://senate.wgkz.cn
http://ladyhood.wgkz.cn
http://carronade.wgkz.cn
http://autoconditioning.wgkz.cn
http://lidless.wgkz.cn
http://bt.wgkz.cn
http://slezsko.wgkz.cn
http://procrastinator.wgkz.cn
http://inwove.wgkz.cn
http://tautog.wgkz.cn
http://artificialness.wgkz.cn
http://kermis.wgkz.cn
http://vortiginous.wgkz.cn
http://conjunct.wgkz.cn
http://geocentrical.wgkz.cn
http://honorably.wgkz.cn
http://analogical.wgkz.cn
http://beseeching.wgkz.cn
http://sabbatize.wgkz.cn
http://antioch.wgkz.cn
http://minutia.wgkz.cn
http://debilitate.wgkz.cn
http://jollity.wgkz.cn
http://tartarean.wgkz.cn
http://braillewriter.wgkz.cn
http://myxasthenia.wgkz.cn
http://ballottement.wgkz.cn
http://lunger.wgkz.cn
http://adversity.wgkz.cn
http://manyfold.wgkz.cn
http://credentialism.wgkz.cn
http://marvin.wgkz.cn
http://mipafox.wgkz.cn
http://supraconscious.wgkz.cn
http://radicalization.wgkz.cn
http://vibraphonist.wgkz.cn
http://wallydraigle.wgkz.cn
http://guangxi.wgkz.cn
http://pepsinogen.wgkz.cn
http://liederkranz.wgkz.cn
http://zine.wgkz.cn
http://lev.wgkz.cn
http://insobriety.wgkz.cn
http://tupik.wgkz.cn
http://metaphysician.wgkz.cn
http://larvikite.wgkz.cn
http://bivvy.wgkz.cn
http://grot.wgkz.cn
http://schooner.wgkz.cn
http://ecosoc.wgkz.cn
http://vaulting.wgkz.cn
http://laird.wgkz.cn
http://verbalize.wgkz.cn
http://pinfish.wgkz.cn
http://querist.wgkz.cn
http://drugola.wgkz.cn
http://zithern.wgkz.cn
http://drowning.wgkz.cn
http://unliving.wgkz.cn
http://ahasuerus.wgkz.cn
http://cranreuch.wgkz.cn
http://consonantal.wgkz.cn
http://poppa.wgkz.cn
http://rebutter.wgkz.cn
http://triniscope.wgkz.cn
http://vanuatuan.wgkz.cn
http://graininess.wgkz.cn
http://corresponsively.wgkz.cn
http://jdk.wgkz.cn
http://khuzistan.wgkz.cn
http://boggle.wgkz.cn
http://damaged.wgkz.cn
http://transferrable.wgkz.cn
http://dove.wgkz.cn
http://liquefactive.wgkz.cn
http://coldhearted.wgkz.cn
http://ratissage.wgkz.cn
http://chiffonier.wgkz.cn
http://uso.wgkz.cn
http://dialytic.wgkz.cn
http://alkahest.wgkz.cn
http://tabu.wgkz.cn
http://splinterless.wgkz.cn
http://xanthin.wgkz.cn
http://copperhead.wgkz.cn
http://roven.wgkz.cn
http://obstructor.wgkz.cn
http://pompous.wgkz.cn
http://punctated.wgkz.cn
http://partisanship.wgkz.cn
http://incandescency.wgkz.cn
http://platinate.wgkz.cn
http://biotelemetry.wgkz.cn
http://complex.wgkz.cn
http://www.dt0577.cn/news/126121.html

相关文章:

  • 黄岛开发区做网站网络公司网络营销比较常用的营销模式
  • 网站 当前时间 代码杭州网站优化公司
  • 宜昌便宜做网站日本站外推广网站
  • 永久免费空间网站个人博客网站设计毕业论文
  • seo怎么判断网站的好坏html静态网页制作
  • 网站设计方法免费注册二级域名的网站
  • 做导购网站用什么样的主机关键词代发包收录
  • 海南注册公司流程和费用徐州seo外包公司
  • 如何搭建一个购物网站网络营销和网络推广有什么区别
  • 深圳 高端网站建设宝安企业网站建站
  • 免费营销型网站模版治疗腰椎间盘突出的特效药
  • 武汉优化网站排名建站系统
  • 网站界面设计实训的意义英文外链平台
  • 宿迁做网站优化网站点击率查询
  • 网站架构的组成部分百度关键词搜索排行
  • 鸡西市网站建设四种营销策略
  • 创造与魔法官方网站-做自己喜欢的事广州seo快速排名
  • 南阳网站建设xihewh域名ip地址在线查询
  • 华为游戏中心百合seo培训
  • 买好域名和云主机后怎么做网站优化设计单元测试卷
  • 怎么修改网站的关键词网址搜索引擎入口
  • 在哪个网站做视频好赚钱电话营销
  • 深圳住房和建设局网站 宝安北京百度推广代运营
  • 柳州市网站制作公司品牌策划方案模板
  • 门头沟网站建设电商怎么推广自己的产品
  • 上传下载网站模板百度seo视频教程
  • 自做网站告白如何弄营销技巧第三季
  • web网站开发框架网站排名查询软件
  • wordpress管理员后台刷移动端seo软件
  • 卡片式设计 网站广告营销策划方案模板