正题

题目链接:http://poj.org/problem?id=2182


题目大意

给出每头牛前面有多少个比它高的,求每头牛的最大高度。


解题思路

建立一个01序列,表示每个高度是否被占用过,然后倒序扫描每次找到一个没有被占用的第Ai+1个位置,然后标记占用。
我们可以用树状数组表示每个高度前面有多少个没被占用,然后用二分找到答案。


code

#include<cstdio>
#define lobit(x) x&-x
using namespace std;
int c[8001],n,a[8001],ans[8001];
void add(int x,int num)
{while(x<=n){c[x]+=num;x+=lobit(x);}
}
int ask(int x)
{int sum=0;while(x){sum+=c[x];x-=lobit(x);}return sum;
}
int low(int x)//二分答案
{int l=1,r=n;while(l<=r){int mid=(l+r)/2;if(ask(mid)+x<=mid) r=mid-1;else l=mid+1;}return l;
}
int main()
{scanf("%d",&n);a[1]=0;for(int i=2;i<=n;i++)scanf("%d",&a[i]);for(int i=n;i>=1;i--){int w=low(a[i]+1);//找到位置ans[i]=w;//记录答案add(w,1);//占用该位置}for(int i=1;i<=n;i++)printf("%d\n",ans[i]);
}

POJ2182-Lost Cows【树状数组,二分】相关推荐

  1. POJ 2182 Lost Cows [树状数组+二分]

    Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacular di ...

  2. POJ2828 Buy Tickeys 树状数组+二分 线段树留坑。。。

    题意:一堆人排队买票,告诉你一堆人的序号(序号的意思是插在"当前"第几个人的后面)和姓名(姓名用编号代替). 思路:线段树 或 树状数组+二分(自己还不会线段树,所以这里继续留坑) ...

  3. VK Cup 2012 Qualification Round 2 C. String Manipulation 1.0 线段树 or 树状数组+二分

    http://codeforces.com/problemset/problem/159/C 题意: 给你一个字符串s,给出一个数k,k倍的s串组成新串str.然后给出n个操作,每个操作对应着pi,c ...

  4. P2161 [SHOI2009]会场预约[线段树/树状数组+二分/STL]

    题目描述 PP大厦有一间空的礼堂,可以为企业或者单位提供会议场地.这些会议中的大多数都需要连续几天的时间(个别的可能只需要一天),不过场地只有一个,所以不同的会议的时间申请不能够冲突.也就是说,前一个 ...

  5. 树状数组 + 二分 - Query HDU - 4339

    树状数组 + 二分 - Query HDU - 4339 题意: T组测试用例,每组给定两个长度分别为l1和l2的字符串s1,s2.有两种询问:①.1idic:将第id个字符串的第i个字符变成字符c. ...

  6. 最长上升子序列(LIS)/最长不上升子序列问题算法详解+例题(树状数组/二分优化,看不懂你来打我)

    目录 最长上升子序列 一.朴素做法O(2n)O(2^n)O(2n) 二.优化做法O(nlogn)O(nlogn)O(nlogn) 三.例题引入:P1020 导弹拦截(求最长上升子序列和最长不上升子序列 ...

  7. D. Multiset(树状数组 + 二分)

    Multiset 可能更好的阅读体验 思路 二分 + 树状数组做法 我们发现每个数的范围是$ <= 1e6$的,所以可以直接在线操作,不用离散化离线操作. 这个时候我们的treetreetree ...

  8. CF1404C:Fixed Point Removal(离线)(树状数组二分)

    解析 写了不少线段树上二分,原来树状数组上也是可以二分的 首先如果ai>ia_i>iai​>i,那必然无法删除,下面只考虑ai<=ia_i<=iai​<=i的情况 ...

  9. CF1446F-Line Distance【计算几何,树状数组,二分】

    正题 题目链接:https://www.luogu.com.cn/problem/CF1446F 题目大意 给出nnn个点,求所有点对构成的直线中与原点距离第kkk小的距离 2≤n≤105,1≤k≤n ...

最新文章

  1. u-boot分析之两阶段代码分析(三)
  2. verilog 计数器_HDLBits: 在线学习 Verilog ()
  3. iframe 覆盖父页面_一次iframe子页面与父页面的通信
  4. php 多线程处理redis,redis的多线程
  5. viewpager初始化fragment没有绘制_NDK OpenGL ES渲染系列 之 绘制三角形
  6. Mvc.Ext.Net项目架构(一)
  7. 微信对网络影响的技术试验及分析(论文全文)
  8. 生信学习笔记:生物信息学测序分析基本流程入门笔记
  9. html-制作开心网游戏页面,【手把手】制作一个简单的HTML网页
  10. javaeye搬家到csdn
  11. Matlab作图格式设置
  12. Shiro整合JWT实现认证和权限鉴定(执行流程清晰详细)
  13. vim---操作命令大全
  14. html 链接excel表格,excel表格超链接设置
  15. (实验)完成一个医院挂号系统
  16. 《Python机器学习基础教程》官方中文PDF+英文PDF+源代码 (张亮译)
  17. 使用Vue制作幻灯片
  18. AMD CPU 运行 Android Studio 原生模拟器的几点注意事项
  19. 绘声绘影2022绿色旗舰版安装教程及功能介绍
  20. Silvaco TCAD仿真5——process simulation(Athena)

热门文章

  1. 10玩rust_C++工程师的Rust迁移之路(5)- 继承与组合 - 下
  2. swot分析模板_什么是SWOT分析图?怎样绘制SWOT分析思维导图,这样操作很简单
  3. python frame用法_python—dataframe用法
  4. php绘制饼图,php怎么绘制饼图?
  5. linux下找不到libc 库,Linux-覆盖libc open()库函数
  6. c语言歌手预测成绩,5个裁判可以对10个歌手进行打分,计算各个歌手的最终得分排列...
  7. github设置中文_【Github】100+ Chinese Word Vectors 上百种预训练中文词向量
  8. 数据结构——基于字符串模式匹配算法的病毒感染检测
  9. leetcode404. 左叶子之和
  10. 模块化妙用!用vue3实现一个鼠标追踪器和异步加载组件