hdu5775(思维题树状数组)
通过分析可得一个点它最右边的位置就是他现在的位置加上他后面的比他小的数字的个数。
一个点最左边的位置就是他开始的位置或者排完序以后的位置min(i,num[i]);
用数组数组从后往前可以巧妙的维护一个点后面符合条件的点有多少个,具体看代码。
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int maxn = 100005;
int n;
int num[maxn];
int tree[maxn];
int ans[maxn];
int lowbit(int i)
{return i&(-i);
}
void add(int i,int x)
{while(i<=n){tree[i] += x;i += lowbit(i);}
}
int query(int i)
{int sum = 0;while(i){sum += tree[i];i -= lowbit(i);}return sum;
}
int main()
{int cases,t = 1;scanf("%d",&cases);while(cases--){memset(tree,0,sizeof(tree));scanf("%d",&n);for(int i=1;i<=n;i++)scanf("%d",&num[i]);for(int i=n;i>=1;i--){int res = query(num[i]);add(num[i],1);ans[num[i]] = res+i-min(num[i],i);}printf("Case #%d:",t++);for(int i=1;i<=n;i++) printf(" %d",ans[i]); printf("\n");}return 0;
}
hdu5775(思维题树状数组)相关推荐
- 经典算法题每日演练——第十题 树状数组
原文:经典算法题每日演练--第十题 树状数组 有一种数据结构是神奇的,神秘的,它展现了位运算与数组结合的神奇魅力,太牛逼的,它就是树状数组,这种数据结构不是神人是发现不了的. 一:概序 假如我现在有个 ...
- 牛客练习赛34 - C little w and Segment Coverage(思维、树状数组)
title: 牛客练习赛34 - C little w and Segment Coverage(思维.树状数组) date: 2018-12-15 16:36:55 tags: [树状数组,思维] ...
- C#LeetCode刷题-树状数组
树状数组篇 # 题名 刷题 通过率 难度 218 天际线问题 32.7% 困难 307 区域和检索 - 数组可修改 42.3% 中等 315 计算右侧小于当前元素的个数 31.9% 困难 493 翻转 ...
- bzoj2683:简单题(树状数组套CDQ分分治)
CDQ(陈丹琦)分治 CDQ显然是一个人的名字(2008NOI金牌选手陈丹琦) 这种离线的分治算法在算法界被称为"CDQ分治". 首先回忆一下归并排序的分治, 它的操作是将数组二 ...
- [HEOI2012]采花(思维 + 离线 + 树状数组)
题目链接 分析 我只能说太妙了- 离线 + 树状数组 参考题解: 这个题要和<HH的项链>做对比: 关键就是为什么要离线处理,以及 怎么对区间进行排序和维护: [SDOI2009]HH的项 ...
- HDU5775 Bubble Sort树状数组
题目链接:HDU5775 Bubble Sort Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java ...
- 树状数组求逆序对_区间和的个数(树状数组)
327. 区间和的个数 给定一个整数数组 nums,返回区间和在 [lower, upper] 之间的个数,包含 lower 和 upper. 区间和 S(i, j) 表示在 nums 中,位置从 i ...
- #175-【线段树与树状数组】砍树
Description 在一个凉爽的夏夜,xth 和 rabbit 来到花园里砍树.为啥米要砍树呢?是这样滴, 小菜儿的儿子窄森要出生了.Xth这个做伯伯的自然要做点什么.于是他决定带着 rabbit ...
- 【树状数组 思维题】luoguP3616 富金森林公园
树状数组.差分.前缀和.离散化 题目描述 博艾的富金森林公园里有一个长长的富金山脉,山脉是由一块块巨石并列构成的,编号从1到N.每一个巨石有一个海拔高度.而这个山脉又在一个盆地中,盆地里可能会积水,积 ...
最新文章
- HP380G7服务器安装fedaro16的问题解决
- 【LInux】查看Linux系统版本信息
- python搭建自动化测试平台_如何用python语言搭建自动化测试环境
- python flask框架发布问答平台注册页面_Python|Flask框架实现QQ账号登录
- 【企业管理】《人与绩效》读书笔记--怎样做员工
- PhpStorm 注册相关
- javascript系统时间
- 微服务基本环境的搭建
- RabbitMq(十一) 死信交换机DLX介绍及使用
- Salesforce Ventures为云初创公司Vlocity注资5000万美元
- ASP.NET乱码解决方案
- SQL注射技术总结文档
- dubbo源码之SPI机制源码
- python算方差_Python求均值,方差,标准差的实例
- ORA-20011: Approximate NDV failed: ORA-00600: internal error code, arguments
- 无线USB网卡Rndis设备
- application/json和application/x-www-form-urlencoded使用选择
- 品牌铸造,vivo踏入高端新境界
- 8岁上海小学生B站教编程惊动苹果公司CEO
- 解决Echarts的toolbox只显示英文的问题