POJ-2481 Cows---树状数组的运用
题目链接:
https://vjudge.net/problem/POJ-2481
题目大意:
if Si <= Sj and Ej <= Ei and Ei - Si > Ej - Sj, we say that cow i is stronger than cow j.
此处的含义就是线段[Sj, Ej]是线段[Si, Ei]的真子集,最后需要求出每条线段是多少条线段的真子集。
解题思路:
此处可以先对E坐标从大到小排序,相同的E对S从小到大排序,排完序后直接把S放入树状数组中,求出当前在树状数组中有多少比当前S小的数目。
由于E坐标从大到小,所以在某个线段放之前,终点在该线段的后面的线段已经全部加入了树状数组。而S比当前S小的线段一定是真包含该线段的。
WA点:注意此处求的是被多少线段真包含,所以在排序之后需要判断,如果两者线段一样那么就直接用前面的结果更新后面的结果。
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<string>
#include<cmath>
#include<set>
#include<queue>
#include<map>
#include<stack>
#include<vector>
#include<list>
#include<deque>
#include<sstream>
#include<cctype>
#define REP(i, n) for(int i = 0; i < (n); i++)
#define FOR(i, s, t) for(int i = (s); i < (t); i++)
using namespace std;
typedef long long ll;
int T, n, m, cases;
const int maxn = ;
struct node
{
int x, y, id;
bool operator < (const node & a)const
{
return y > a.y || (y == a.y && x < a.x);
}
}a[maxn];
int tree[maxn];
int ans[maxn];
int lowbit(int x)
{
return x&(-x);
}
int sum(int x)
{
int ret = ;
while(x > )
{
ret += tree[x];
x -= lowbit(x);
}
return ret;
}
void add(int x, int d)
{
while(x < maxn)
{
tree[x] += d;
x += lowbit(x);
}
}
int main()
{
while(scanf("%d", &n) && n)
{
memset(tree, , sizeof(tree));
memset(ans, , sizeof(ans));
memset(a, ,sizeof(a));
for(int i = ; i <= n; i++)
{
scanf("%d%d", &a[i].x, &a[i].y);
a[i].x++; a[i].y++;
a[i].id = i;
}
sort(a + , a + n + );
for(int i = ; i <= n; i++)
{
if(a[i].x == a[i - ].x && a[i].y == a[i - ]. y)ans[a[i].id] = ans[a[i - ].id];
else ans[a[i].id] = sum(a[i].x);
add(a[i].x, );
}
for(int i = ; i <= n; i++)
{
printf("%d ", ans[i]);
///若在此处在if判断是否输出空格会超时,以后就先输出a[1],然后依次输出空格+数字
}
printf("\n");
}
}
POJ-2481 Cows---树状数组的运用的更多相关文章
- poj 2481 - Cows(树状数组)
看的人家的思路,没有理解清楚,,, 结果一直改一直交,,wa了4次才交上,,, 注意: 为了使用树状数组,我们要按照e从大到小排序.但s要从小到大.(我开始的时候错在这里了) 代码如下: #inclu ...
- Cows POJ - 2481 (树状数组 + 单点更新 + 区间查询)
Cows 思路:我们可以按照每个范围的S从小到大排序,相同的S按E从大到小排序,这样的好处是当前范围的S一定大于等于之前范围的S(即当前的范围可能被之前范围的包围),那么我们只需要统计之前的范围E比当 ...
- POJ 2481:Cows 树状数组
Cows Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 14906 Accepted: 4941 Description ...
- POJ 2182 Lost Cows (树状数组 && 二分查找)
题意:给出数n, 代表有多少头牛, 这些牛的编号为1~n, 再给出含有n-1个数的序列, 每个序列的数 ai 代表前面还有多少头比 ai 编号要小的牛, 叫你根据上述信息还原出原始的牛的编号序列 分析 ...
- poj2481 Cows 树状数组
题目链接:http://poj.org/problem?id=2481 解题思路: 这道题对每组数据进行查询,是树状数组的应用.对于二维的树状数组, 首先想到排序.现在对输入的数据按右值从大到小排序, ...
- POJ2481:Cows(树状数组)
Description Farmer John's cows have discovered that the clover growing along the ridge of the hill ( ...
- poj 2229 Ultra-QuickSort(树状数组求逆序数)
题目链接:http://poj.org/problem?id=2299 题目大意:给定n个数,要求这些数构成的逆序对的个数. 可以采用归并排序,也可以使用树状数组 可以把数一个个插入到树状数组中, 每 ...
- POJ 2299 【树状数组 离散化】
题目链接:POJ 2299 Ultra-QuickSort Description In this problem, you have to analyze a particular sorting ...
- poj 2155 Matrix (树状数组)
Matrix Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 16797 Accepted: 6312 Descripti ...
- poj2182Lost Cows——树状数组快速查找
题目:http://poj.org/problem?id=2182 从后往前确定,自己位置之前没有被确定的且比自己编号小的个数+1即为自己的编号: 利用树状数组快速查找,可另外开一个b数组,角标为编号 ...
随机推荐
- 12.标准标签库(JSTL)
1.JSTL标签库安装 JSTL的概念: JSP标准标签库(JSP Standard Tag Library)是一个实现 Web 应用程序中常见的通用功能的定制标记库集功能包括迭代和条件判断.数据管理 ...
- 省市联动 js
工作中见到这个省市联动代码,虽然很简单也能写出来,还是随便把它记录下来. //省市联动 function area(obj_id, area_pId, data_call_back) { ) retu ...
- 关于django2.0的外键关系新特性之on_delete!
Django2.0里model外键和一对一的on_delete参数 在django2.0后,定义外键和一对一关系的时候需要加on_delete选项,此参数为了避免两个表里的数据不一致问题,不然会报错: ...
- vue环境搭建(一)
1.Vue依赖node npm命令执行,需要下载node 下载地址 2.安装全局vue-cli脚手架(搭建环境所需要模板), window+ r 打开命令工具,输入cmd ,这时显示命令行工具,输 ...
- 这是通过 Open Live Writer(是个博客编辑器) 发布的
Open Live Writer 是开源的win10上的博客编辑器
- Linux 系统 文件锁 fcntl函数详解
#include <unistd.h> #include <fcntl.h> int fcntl(int fd, int cmd); int fcntl(int fd, int ...
- 多线程编程_CountDownLatch
CountDownLatch是JAVA提供在java.util.concurrent包下的一个辅助类,可以把它看成是一个计数器,其内部维护着一个count计数,只不过对这个计数器的操作都是原子操作,同 ...
- js监听dom元素内容变化
$("#divid").bind('DOMNodeInserted', function(e) { alert('element now contains: ' + $(e.tar ...
- 倒计时Text显示控制
倒计时Text显示控制:public class TimeCtrl : MonoBehaviour { public Text SJ; //定义显示Text public int GameTimes= ...
- DEDE列表页和内容页调用顶级栏目ID的方法
dede模板中添加顶级栏目id的方法总结,使用dede顶级栏目id可以实现很多功能.比如,在每个列表页调用不同的栏目图片(同一顶级栏目调用相同的图片),如果我们做N个栏目就意味着要做N个列表页模板,显 ...