![](https://img-blog.csdnimg.cn/img_convert/a1a477af740ed10e8831b271d2a23cb8.png)
时间复杂度O(n)
AcWing 1240 完全二叉树的权值
![](https://img-blog.csdnimg.cn/img_convert/45eb472e162d1b569ca6fc4f476d7696.png)
对二元组进行排序!!一段区间在另一段区间上滑动
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
#define x first
#define y second
using namespace std;
typedef pair<int,int> pII;
const int N=100005;
pII a[N];
int cnt[N];
int n,d,k;
bool st[N];//记录每个帖子是否是热帖
int main()
{
cin>>n>>d>>k;
for(int i=0;i<n;i++)
scanf("%d%d",&a[i].x,&a[i].y);//x是时间,y是id
sort(a,a+n);
// for(int i=0;i<n;i++)
// printf("%d %d\n",a[i].x,a[i].y);
for(int i=0,j=0;i<n;i++)
{
int id=a[i].y;
cnt[id]++;
while(a[i].x-a[j].x>=d)
{
cnt[a[j].y]--;
j++;
}
if(cnt[id]>=k) st[id]=true;
}
for(int i=0;i<=100000;i++)
{
if(st[i])
printf("%d\n",i);
}
return 0;
}
AcWing 1238 日记统计
完全二叉树:除了最后一行,其他每一个结点都有两个儿子
![](https://img-blog.csdnimg.cn/img_convert/6302d35d5ae83e5bbc284f3c698bf4a3.png)
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
typedef long long ll;
const int N=100005;
ll a[N];
ll cnt[N];
int main()
{
int n;
cin>>n;
int i,j;
for(i=1,j=1;i<=n;i++)
{
scanf("%lld",&a[i]);
cnt[j]+=a[i];
//printf("%d\n",i);
if(i==((1<<j)-1))
j++;
}
//cout<<j<<endl;
ll max=cnt[1];
int res=1;
for(int i=2;i<=j;i++)
{
//printf("%lld\n",cnt[i]);
{
if(cnt[i]>max)
{
max=cnt[i];
res=i;
}
}
}
cout<<res;
return 0;
}