代码源每日一题div1【离线+树状数组】数数

数数 - 题目 - Daimayuan Online Judge

题意:

思路:

考虑离线,然后用DS维护序列

将询问离线后把询问按h从小到大排序,把a数组也从小到大排序,可以发现在遍历询问的时候答案就很好维护了

具体地说,遍历询问的时候,可以用一个指针维护val<q[i].h的所有值,指针idx左边的元素都是满足条件的元素,但是它们的位置需要在q[i].L,q[i].R之间,也就是说,我们需要找到idx已经遍历过的元素中位置在q[i].L,q[i].R之间的元素个数

这个可以用线段树/树状数组来维护,这两个都是序列DS,可以维护位置序列,也可以维护权值序列

关于离线问题,可以先给询问和序列按关键字排序,然后遍历询问时用序列DS维护

Code:

#include <bits/stdc++.h>

#define low(x) (x&(-x))
#define int long long

using namespace std;

const int mxn=1e5+10;

struct ty{
    int pos,val;
}a[mxn];

struct ty2{
    int id,L,R,h;
}q[mxn];

int N,Q;
int tr[mxn],ans[mxn];

bool cmp(ty x,ty y){
    return x.val<y.val;
}

bool cmp2(ty2 x,ty2 y){
    return x.h<y.h;
}

void add(int pos,int k){
    for(int i=pos;i<=N;i+=low(i)) tr[i]+=k;
}

int sum(int pos){
    int res=0;
    for(int i=pos;i;i-=low(i)) res+=tr[i];
    return res;
}

void init(){
    for(int i=0;i<=N;i++){
        tr[i]=0;
    }
}
void solve(){
    cin>>N>>Q;
    init();
    for(int i=1;i<=N;i++){
        cin>>a[i].val;
        a[i].pos=i;
    }
    sort(a+1,a+1+N,cmp);
    for(int i=1;i<=Q;i++){
        cin>>q[i].L>>q[i].R>>q[i].h;
        q[i].id=i;
    }
    sort(q+1,q+1+Q,cmp2);
    int idx=1;
    for(int i=1;i<=Q;i++){
        while(a[idx].val<=q[i].h&&idx<=N){
            add(a[idx].pos,1);
            idx++;
        }
        ans[q[i].id]=sum(q[i].R)-sum(q[i].L-1);
    }
    for(int i=1;i<=Q;i++) cout<<ans[i]<<" \n"[i==N];
}
signed main(){
    ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
    int __=1;cin>>__;
    while(__--)solve();return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Internet Explorer 11 包含多个更新的功能和工具。 1.更新了 Web 标准。WebGL、Canvas 2D L2 扩展、全屏 API、加密的媒体扩展、媒体扩展、CSS 弹性框布局模块、突变观察者,如 DOM4 和 5.3。 2.增强的保护模式。扩展了保护模式,以进一步限制攻击者在个人环境和公司环境中访问敏感信息或个人信息的能力。默认情况下,此功能处于关闭状态。 3.企业模式。企业模式是可以在 Windows 8.1 更新和 Windows 7 设备的 IE11 上运行的一种兼容性模式,该模式允许网站使用已修改的浏览器配置来呈现内容,其中该浏览器配置旨在模拟 Windows Internet Explorer 8,以避免与在早期版本 Internet Explorer 上编写和测试的 Web 应用关联的常见兼容性问题。 4.过时 ActiveX 控件阻止。有助于使 ActiveX 控件保持最新,因为恶意软件可能针对过时控件中的安全漏洞,通过从计算机收集信息、安装不需要的软件或者使其他人远程控制它来破坏计算机。 5.Do Not Track (DNT) 例外。 IE11 可让网站询问用户在浏览网站时是否对其进行跟踪。如果用户批准请求,则 IE 将记录“Do Not Track”规则的例外,并向允许跟踪的网站发送标头。通过遵守这些标头并请求对默认隐私设置的例外,网站所有者可以培养与其用户之间关于隐私的信任关系。 6.IE 管理工具包 (IEAK)。可让你创建自定义、品牌化版本的 IE11 。 7.无人参与设置。可让你更新 Unattend.xml 文件,以自定义主页、收藏夹、搜索提供程序、、加速器、网页快讯和最匹配结果搜索设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值