网站大量收购闲置独家精品文档,联系QQ:2885784924

35、聪明的小羊肖恩.docx

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

反馈题解问题

解题思路

题目要求我们求出下标对?(i,j)?使得ai+aj∈[L,R]?的下标对数量。根据简单的容斥原理可知,设ai+aj≤R?的下标对数量为?y,ai+aj≤L?1?的下标对数量为?xx,则ai+aj∈[L,R]?的下标对数量为?y?x。

问题转化为对于一个给定的数?Z,我们如何求出a?中满足?ai+aj≤Z?的下标对数量。为了解决这个问题,我们可以首先对数组?aa?进行排序。排序后,我们可以使用双指针技巧来遍历数组,并计算满足条件的下标对数量。我们定义两个指针?l和?r,分别表示数组a?中的左右元素下标。初始时,l=1,r=n。

接下来,我们进行如下操作:

如果?a[l]+a[r]Z,说明当前下标对不满足条件,我们需要减小?ai+aj?的值,而数组已经有序,所以我们将?r减一,即?r??。

如果a[l]+a[r]≤Z,说明当前下标对以及之后的所有下标对都满足条件。我们需要计算满足条件的下标对数量,可以通过?r-lr?l?计算。然后我们将?ll?加一,即?l++l++。

我们重复以上操作,直至?lr?不再成立。这样我们就找到了所有满足?ai+aj≤Z?的下标对数量。

时间复杂度:排序的复杂度为?)O(nlogn),双指针的复杂度为?O(n),即整体的复杂度为O(nlogn)。

AC_Code

C++

#includebits/stdc++.h

usingnamespacestd;

typedeflonglongLL;

typedefunsignedlonglonguLL;

typedefpairint,intPII;

#definepb(s)push_back(s)

#definesz(s)((int)s.size())

#definexfirst

#defineysecond

#definems(s,x)memset(s,x,sizeof(s))

#defineall(s)s.begin(),s.end()

constintinf=0x3f3f3f3f;

constintmod=1000000007;

constintN=200010;

intn,L,R;

inta[N];

LLcalc(intv){

intl=1,r=n;

LLans=0;

while(lr){

while(lra[l]+a[r]v){

r--;

}

ans+=r-l;

l++;

}

returnans;

}

voidsolve()

{

cinnLR;

for(inti=1;i=n;++i)cina[i];

sort(a+1,a+n+1);

coutcalc(R)-calc(L-1)\n;

}

intmain()

{

ios_base::sync_with_stdio(false);

cin.tie(0);cout.tie(0);

coutsetiosflags(ios::fixed)setprecision(2);

intt=1;

while(t--)

{

solve();

}

return0;

}

Java

importjava.util.*;

publicclassMain{

staticintN=200010;

staticintn,L,R;

staticint[]a=newint[N];

staticScannersc=newScanner(System.in);

staticlongcalc(intv){

intl=1,r=n;

longans=0;

while(lr){

while(lra[l]+a[r]v){

r--;

}

ans+=r-l;

l++;

}

returnans;

}

staticvoidsolve(){

n=sc.nextI

文档评论(0)

如此醉 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档