博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1541Stars
阅读量:5260 次
发布时间:2019-06-14

本文共 621 字,大约阅读时间需要 2 分钟。

题意:定义在某颗星星左下方的星星的个数表示该星星的水平,求出水平分别为为0...n-1的星星个数。

首先题目是按照y坐标升序输入的,设第第1,2...n个星星的横坐标依次为x1,x2,...xn.显然星星i的level等于(x1,x3,...xi-1)中比xi小的数的个数,将它记做Li,普通求法扫描一遍,

复杂度为O(n^2),显然数据了大会超时。采用树状数组来解决,复杂度为O(nlogn),用a[x]表示横坐标为x的点的个数,随着输入,不断更新维护树状数组。

#define _CRT_SECURE_NO_DEPRECATE#include
using namespace std;const int MAXN = 32100;/*tree为树状数组,ans数组统计星星水平*/int tree[MAXN],ans[MAXN]; int n;int readSum(int k){ //求和a[1]+a[2]...+a[k] int sum = 0; while (k > 0){ sum += tree[k]; k -= (k&-k); } return sum;}void add(int pos, int diff){ //增量修改 while (pos

  

转载于:https://www.cnblogs.com/td15980891505/p/5696954.html

你可能感兴趣的文章
算法第5章作业
查看>>
Oracle 创建表空间的时候显示 数据库未连接
查看>>
java中的运算符
查看>>
Windows 常用消息及含义
查看>>
环境部署
查看>>
English trip -- VC(情景课)5 C It's on Main Street 在主街上
查看>>
[剑指Offer] 20.包含min函数的栈
查看>>
Ant -----ant标签和自定义任务
查看>>
Docker: repository, image, container
查看>>
Dijkstra算法
查看>>
laravel4.2 union联合,join关联分组查询最新记录时,查询条件不对,解决方案
查看>>
架构之数据库分表分库
查看>>
三星 S4 手机误删除相片(相册)后的恢复问题,仅记录处理过程,其它Android手机同样适用...
查看>>
【pattern】设计模式(2) - 模版方法模式
查看>>
SSM商城系统开发笔记-问题01-通配符的匹配很全面, 但无法找到元素 'mvc:annotation-driven' 的声明。...
查看>>
nyoj--84--阶乘的0(数学技巧)
查看>>
Creational --- Singleton
查看>>
JAVA-随机生成四则运算
查看>>
vue 创建监听,和销毁监听(addEventListener, removeEventListener)
查看>>
Java使用JAX-WS来写webservice时 Unable to create JAXBContext
查看>>