二分
AcWing 789. 数的范围
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/57f6a631f59553f7c0e99878660910a3.png)
#include<iostream>
using namespace std;
const int N=1e5+10;
int q[N];
int n,m;
int main()
{
cin>>n>>m;
for(int i=0;i<n;i++)
cin>>q[i];
while(m--)
{
int k;
cin>>k;
int l=0,r=n-1;
while(l<r)
{
int mid=(l+r)>>1;
if(q[mid]>=k)
r=mid;
else
l=mid+1;
}
if(q[l]!=k)
cout<<-1<<' '<<-1<<endl;
else
{
cout<<l<<' ';
int l=0,r=n-1;
while(l<r)
{
int mid=(l+r+1)>>1;
if(q[mid]<=k)
l=mid;
else
r=mid-1;
}
cout<<l<<' '<<endl;
}
}
return 0;
}
AcWing 790.数的三次方根
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/02b85001195a5c5f202c5c57fcff27dd.png)
#include<iostream>
using namespace std;
int main()
{
double x;
cin>>x;
double l=-100,r=100;
while(r-l>1e-8)
{
double mid=(l+r)/2;
if(mid*mid*mid>=x)
r=mid;
else
l=mid;
}
printf("%.6lf\n",l);
return 0;
}
前缀和
AcWing 795. 前缀和
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/1b7e55e55ef4b7919fb4505d611b7461.png)
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int N=1e5+10;
int a[N],s[N];
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=n;i++)
s[i]=a[i]+s[i-1];
while(m--)
{
int l,r;
cin>>l>>r;
cout<<s[r]-s[l-1]<<endl;
}
return 0;
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/19588367a574d7c399bc6d4c0df9b634.png)
AcWing 796. 子矩阵的和
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/af8dd6b7d6e19dd3dd9df8c06815f743.png)
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;
const int N=1010;
int a[N][N],s[N][N];
int n,m,q;
int main()
{
cin>>n>>m>>q;
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
cin>>a[i][j];
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+a[i][j];
while(q--)
{
int x1,y1,x2,y2;
cin>>x1>>y1>>x2>>y2;
cout<<s[x2][y2]-s[x2][y1-1]-s[x1-1][y2]+s[x1-1][y1-1]<<endl;
}
return 0;
}