Poj 2352 Stars
来源:互联网 发布:学号 姓名 性别 sql 编辑:程序博客网 时间:2024/06/07 08:21
题目链接:http://poj.org/problem?id=2352
题目大意:输入n个星星的坐标,数据按y升序输入,星星的level值等于x,y都不大于该星星的星星个数,level不大于32000,要求输出[0,n]等级的星星数;
思路:简单的树状数组题,因为输入数据已经按y升序排列,所以星星的等级等于在它之前所有x坐标不大于它的星星个数,用树状数组实现,调用level函数计算区间[1,x]有多少个星星,即为该星星的等级,再更新[x,32005]内的树状数组的值;利用ans作为计数器存储对应等级的星星数:
代码实现:
#include<stdio.h>#include<string.h>int c[33333], ans[16000];int n;int lowbit(int x){return x & (-x);}void update(int x) //更新所有管辖范围包括x的树状数组c的值 {while(x <= 32005){c[x] ++;x += lowbit(x); }}int level(int x) //判定星星的等级 {int level;for(level = 0; x > 0; x -= lowbit(x)) level += c[x];return level; }int main(){int i, x, y; scanf("%d", &n);memset(c, 0, sizeof(c));memset(ans, 0, sizeof(ans));for(i = 1; i <= n; i++){scanf("%d%d", &x, &y);++ans[level(x+1)]; //计算对应等级的星星数 update(x+1); }for(i = 0; i < n; i++) printf("%d\n", ans[i]);return 0;}
- POJ 2352 STARS
- POJ 2352 Stars
- Poj 2352 Stars
- poj 2352 Stars
- poj 2352 Stars
- poj 2352 Stars
- POJ 2352 Stars
- POJ 2352 Stars
- POJ-2352-Stars
- POJ 2352 Stars
- Poj 2352 Stars 题解
- poj 2352 stars
- POJ 2352 stars
- POJ 2352 - Stars
- POJ 2352 Stars
- POJ 2352 Stars
- poj 2352 Stars
- poj 2352 Stars
- Oracle 11g Data Guard Error 16143 Heartbeat failed to connect to standby 处理方法
- Grep学习笔记
- Codeforces Beta Round #99 (Div. 1) C Mushroom Gnomes - 2(单点查询)
- HDU 4530 小Q系列故事——大笨钟 2013腾讯编程马拉松复赛第一场第一题
- windows系统上安装与使用Android NDK r5
- Poj 2352 Stars
- 树莓派中安装QT
- LDA学习笔记---来自《Parameter estimation for text analysis》
- GB28181 视频监控系统
- Android--Failed to allocate memory: 1455
- COCOS2D-X学习记录0
- 一个学习sed和awk的网站(非常好)
- linux下懒人打造自己的IDE
- applicationContext.xml无错有红叉,Error occured processing XML 'Provider org.apache.xerces.parsers.解决方案