代码如下
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+1;
int n,m,ans[N<<2];
double mx[N<<2];
int ls(int x){return x<<1;}
int rs(int x){return x<<1|1;}
int query(int rt,int l,int r,double maxx)
{
if(mx[rt]<=maxx) return 0;
if(l==r) return mx[rt]>maxx;
if(mx[ls(rt)]<=maxx) return query(rs(rt),((l+r)>>1)+1,r,maxx);
return query(ls(rt),l,(l+r)>>1,maxx)+ans[rt]-ans[ls(rt)];
}
void Change(int rt,int l,int r,int x,double k)
{
if(l==x&&r==x)
{
ans[x]=1;
mx[x]=k;
return;
}
int mid=(l+r)>>1;
if(x<=mid) Change(ls(rt),l,mid,x,k);
else Change(rs(rt),mid+1,r,x,k);
mx[rt]=max(mx[ls(rt)],mx[rs(rt)]);
ans[rt]=ans[ls(rt)]+query(rs,mid+1,r,mx[ls(rt)]); //错误指向此行
}
int main()
{
cin>>n>>m;
int x,y;
for(int i=1;i<=m;i++)
{
scanf("%d%d",&x,&y);
Change(1,1,n,x,1.0*y/x);
printf("%d\n",ans[1]);
}
return 0;
}
显示
[Error] invalid conversion from 'int (*)(int)' to 'int' [-fpermissive]
bdfs显示是
尝试将一个函数指针(指向函数返回int类型的函数,接受一个int类型参数)转换为int类型
但我好像也没用指针?
请问各位大佬这个要怎么改啊QWQ