博客
关于我
hdu2852
阅读量:727 次
发布时间:2019-03-17

本文共 1490 字,大约阅读时间需要 4 分钟。

经过对代码和解释部分的优化,以下是优化后的内容:

#include 
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;#define scd(n) scanf("%d", &n)#define scdd(a, b) scanf("%d%d", &a, &b)#define lowbit(x) x & (-x)typedef long long LL;typedef pair
PII;const int N = 1e5 + 7;const int INF = 0x3f3f3f3f;int a[N];int tr[N];int m, k;void add(int x, int c) { for (int i = x; i <= N; i += lowbit(i)) { tr[i] += c; }}LL sum(int x) { LL res = 0; for (int i = x; i > 0; i -= lowbit(i)) { res += tr[i]; } return res;}void solve() { memset(tr, 0, sizeof(tr)); memset(a, 0, sizeof(a)); while (m--) { int p, e; scd(p); if (p == 0) { scd(e); a[e]++; add(e, 1); } else if (p == 1) { scd(e); if (!a[e]) { puts("No Element!"); } else { a[e]--; add(e, -1); } } else { int a_val, k_val; scdd(a_val, k_val); LL s = sum(a_val); int left = 1, right = N; while (left < right) { int mid = left + (right - left) / 2; if (sum(mid) >= s + k_val) { right = mid; } else { left = mid + 1; } } if (sum(left) >= s + k_val) { printf("%d\n", left); } else { puts("Not Found!"); } } }}int main() { // int t; // scd(t); // while (cin >> t) { solve(); // } return 0;}

解释部分:

本程序实现了三个主要操作:

  • 插入:当一个新元素被插入时,我们将该元素的值加一,并在树状数组中更新对应位置的计数。

  • 删除:当一个元素被删除时,我们将该元素的值减一,并在树状数组中更新对应位置的计数。

  • 查找:要查找容器中大于给定值$a$的第$k$个元素,我们可以通过二分查找来实现。具体方法是使用树状数组来快速计算前缀和,并找到满足条件的最小值。

  • 树状数组是一种高效的数据结构,支持快速的前缀和查询和更新操作。这个程序充分利用了树状数组的优势,保证了每个操作的时间复杂度较低,适用于大规模数据的处理。

    转载地址:http://hnfez.baihongyu.com/

    你可能感兴趣的文章
    nginx net::ERR_ABORTED 403 (Forbidden)
    查看>>
    Nginx SSL私有证书自签,且反代80端口
    查看>>
    Nginx upstream性能优化
    查看>>
    Nginx 中解决跨域问题
    查看>>
    nginx 代理解决跨域
    查看>>
    Nginx 动静分离与负载均衡的实现
    查看>>
    Nginx 反向代理 MinIO 及 ruoyi-vue-pro 配置 MinIO 详解
    查看>>
    nginx 反向代理 转发请求时,有时好有时没反应,产生原因及解决
    查看>>
    Nginx 反向代理解决跨域问题
    查看>>
    Nginx 反向代理配置去除前缀
    查看>>
    nginx 后端获取真实ip
    查看>>
    Nginx 多端口配置和访问异常问题的排查与优化
    查看>>
    Nginx 如何代理转发传递真实 ip 地址?
    查看>>
    Nginx 学习总结(16)—— 动静分离、压缩、缓存、黑白名单、性能等内容温习
    查看>>
    Nginx 学习总结(17)—— 8 个免费开源 Nginx 管理系统,轻松管理 Nginx 站点配置
    查看>>
    Nginx 学习(一):Nginx 下载和启动
    查看>>
    nginx 常用指令配置总结
    查看>>
    Nginx 常用配置清单
    查看>>
    nginx 常用配置记录
    查看>>
    nginx 开启ssl模块 [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx
    查看>>