RT.在写这道题的时候我 ask 函数是这样写的:
int jkl(int p1,int p2)
{
int ans1=0,ans2=0,ans3=0,ans4=0;
int i=p1,j=p2;
for(;i;i-=i&-i)
for(;j;j-=j&-j)
{
ans1+=t1[i][j];
ans2+=t2[i][j];
ans3+=t3[i][j];
ans4+=t4[i][j];
}
return ans1*p1*p2-ans2*p2-ans3*p1+ans4;
}
后来发现过不了样例。参照第二篇题解将 i 和 j 放到循环里面定义后就过了:
int jkl(int p1,int p2)
{
int ans1=0,ans2=0,ans3=0,ans4=0;
for(int i=p1;i;i-=i&-i)
for(int j=p2;j;j-=j&-j)
{
ans1+=t1[i][j];
ans2+=t2[i][j];
ans3+=t3[i][j];
ans4+=t4[i][j];
}
return ans1*p1*p2-ans2*p2-ans3*p1+ans4;
}
请问这是为什么QAQ