二分
AcWing 789. 数的范围
![在这里插入图片描述](https://img-blog.csdnimg.cn/74595c7333064532b447a703cdeb382d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YeM5bG_5ZGG5ZGG,size_19,color_FFFFFF,t_70,g_se,x_16)
#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://img-blog.csdnimg.cn/d2a1f75d56424c8e91403c58c0f89f91.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YeM5bG_5ZGG5ZGG,size_20,color_FFFFFF,t_70,g_se,x_16)
#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://img-blog.csdnimg.cn/4905715129ad4a9cb9eac0d4f9c470a6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YeM5bG_5ZGG5ZGG,size_20,color_FFFFFF,t_70,g_se,x_16)
#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://img-blog.csdnimg.cn/2db92d702d954c79a0fa254c474bce67.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YeM5bG_5ZGG5ZGG,size_20,color_FFFFFF,t_70,g_se,x_16)
AcWing 796. 子矩阵的和
![在这里插入图片描述](https://img-blog.csdnimg.cn/bb8bc786b5f94dc392ae2ebc322e1fd6.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA6YeM5bG_5ZGG5ZGG,size_20,color_FFFFFF,t_70,g_se,x_16)
#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;
}