poj2481 Cows 树状数组
题目链接:http://poj.org/problem?id=2481
解题思路:
这道题对每组数据进行查询,是树状数组的应用。对于二维的树状数组,
首先想到排序。现在对输入的数据按右值从大到小排序,在右值相同的情况下,左值从小到大排序。则对于每头牛,它前面的牛的右区间至少在它的右面,
用树状数组可以快速查询出这头牛前面的左值不大于当前牛的牛的个数。
代码:
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
#define maxn 100010
int c[maxn];
class node
{
public:
int s,e;
int index;
};
node Node[maxn];
int n;
int cnt[maxn]; bool cmp(node a ,node b)
{
if(a.e == b.e) return a.s< b.s;
else return a.e>b.e;
} int lowbit(int x)
{
return x&(-x);
}
void add(int i,int val)
{
while(i<=n)
{
c[i]+=val;
i+=lowbit(i);
}
}
int sum(int i)
{
int s=;
while(i>)
{
s+=c[i];
i-=lowbit(i);
}
return s;
}
int main()
{
while(scanf("%d",&n)!=EOF && n)
{
for(int i=;i<=n;i++)
{
scanf("%d%d",&Node[i].s,&Node[i].e);
Node[i].index=i;
} sort(Node+,Node++n,cmp);
// for(int i=;i<=n;i++)
// cout<<Node[i].s<<" "<<Node[i].e<<endl;
memset(c,,sizeof(c));
memset(cnt,,sizeof(cnt)); cnt[Node[].index]=;
add(Node[].s+,); for(int i=;i<=n;i++)
{
if(Node[i].e==Node[i-].e && Node[i].s == Node[i-].s)
cnt[Node[i].index]=cnt[Node[i-].index];
else
cnt[Node[i].index]=sum(Node[i].s+);
add(Node[i].s+,);
}
cout<<cnt[];
for(int i=;i<=n;i++)
cout<<" "<<cnt[i];
cout<<endl;
}
return ;
}
poj2481 Cows 树状数组的更多相关文章
- POJ2481:Cows(树状数组)
Description Farmer John's cows have discovered that the clover growing along the ridge of the hill ( ...
- POJ 2481:Cows 树状数组
Cows Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 14906 Accepted: 4941 Description ...
- poj 2481 - Cows(树状数组)
看的人家的思路,没有理解清楚,,, 结果一直改一直交,,wa了4次才交上,,, 注意: 为了使用树状数组,我们要按照e从大到小排序.但s要从小到大.(我开始的时候错在这里了) 代码如下: #inclu ...
- 【POJ2182】Lost Cows 树状数组+二分
题中给出了第 i 头牛前面有多少比它矮,如果正着分析比较难找到规律.因此,采用倒着分析的方法(最后一头牛的rank可以直接得出),对于第 i 头牛来说,它的rank值为没有被占用的rank集合中的第A ...
- poj2182Lost Cows——树状数组快速查找
题目:http://poj.org/problem?id=2182 从后往前确定,自己位置之前没有被确定的且比自己编号小的个数+1即为自己的编号: 利用树状数组快速查找,可另外开一个b数组,角标为编号 ...
- POJ2182 Lost Cows 树状数组
题意:有编号1~n乱序排列的奶牛,给出了每一个奶牛前小于自己编号的奶牛数目 维护一个树状数组,下标是编号,值为$0/1$标识是否存在,很显然最后一个牛的编号是知道的,我们在树状数组上二分出前缀和为小于 ...
- POJ 2182 Lost Cows (树状数组 && 二分查找)
题意:给出数n, 代表有多少头牛, 这些牛的编号为1~n, 再给出含有n-1个数的序列, 每个序列的数 ai 代表前面还有多少头比 ai 编号要小的牛, 叫你根据上述信息还原出原始的牛的编号序列 分析 ...
- poj_2481,Cows,树状数组
将e按从大到小排序,统计前i-1个中比 #include<iostream> #include<cstdio> #include<cstring> #include ...
- POJ 2481 Cows(树状数组)
Cows Time Limit: 3000MS Memory L ...
随机推荐
- 使用MyBatis对数据库中表实现CRUD操作(二)
一.使用MyBatis对表实现CRUD操作 1.定义sql映射 userMapper.xml <?xml version="1.0" encoding="UTF-8 ...
- CDN,你了解多少?
大家对CDN并不陌生,工作中或多或少都有所接触,最近也有人问到,在此对CDN相关概念和流程做下总结,希望还能对其他朋友也有所帮助. 一.什么是CDN 维基百科上是这样定义的: CDN:内容分发网络(C ...
- java.lang.NoClassDefFoundError异常
1.错误信息 2.错误分析: JVM读到程序的第三行,会在当前路径 "D:\java" 下寻找com.yangquan.aolun这个包路径下的Cat类,但当前路径下根本就没有co ...
- scss语法介绍
这里既然是对语法的介绍,那么至于如何安装和编译scss我就不多少了,主要是因为本人在群里认识的小伙伴有的不会用scss,所以就借着放假的机会来对scss语法做个总结,博主在开发过程中用scss蛮多,所 ...
- js数组的几个练习题
第一次在博客园写文章,之前一直自己做记录.现在前端工作两年了,对前端整体技术有较清晰的了解.项目用了vue,react之类的写,如今打算从基础开始,慢慢深入了解原生的JS.这几天清明节,玩的嗨皮,最后 ...
- 上传图片转为base64格式预览并压缩图片(不兼容IE9以下浏览器,兼容移动端ios,android)
前些天公司要求在微信移动端做上传图片并预览的功能,要求能够调用摄像头拍照并立即预览. 在网上搜了一些方法,开始自己写了个简单的功能实现代码.结果发现移动端拍照出来的图片动不动就2M+,又因为要批量上传 ...
- memcached的安装以及php两个扩展软件安装(memcache、memcached)
百度云安装包:http://pan.baidu.com/s/1pKZeDwn k3ap 1.安装memcached Memcached是基于libevent的事件处理,所以它的安装依赖libeven ...
- android中全局异常捕捉
android中全局异常捕捉 只要写代码就会有bug,但是我们要想办法收集到客户的bug.有第三方bugly或者友盟等可以收集.但是,android原生就提供了有关收集异常的api,所以我们来学习一下 ...
- Python多层目录模块调用
一. 引用模块在 父+级目录中: 1. 将导入模块所在目录(../model/模块)添加到系统环境变量path下,可添加多个 import syssys.path.append("../mo ...
- .Net Core的一些个人总结
从开始接触.Net Core到现在已经有将近一年的时间了,今天来做一下相关的学习总结,顺便也回忆一下自己这段时间以来的成长. 有一点不得不承认的是,在接触.Net Core之前,我对于linux系统一 ...