题意:

线段树做法

分析:

因为每次都是在当前位置的前缀区间查询最大值,所以可以直接用树状数组优化。比线段树快了12ms~

代码:

#include<cstdio>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;//[)
const int maxn = 100005,  INF = 0x3fffffff;
#define pi acos(-1.0)
typedef long long ll;
ll dp[maxn];
ll tv[maxn], v[maxn];
int tot;
ll query(int pos)
{ll res = 0;while(pos > 0){res = max(res, dp[pos]);pos -= pos & - pos;}return res;
}
void update(int pos, ll x)
{while(pos <= tot){dp[pos] = max(dp[pos], x);pos += pos & - pos;}
}
int main (void)
{int n;scanf("%d",&n);int r, h;for(int i = 0; i < n; i++){scanf("%d%d",&r,&h);tv[i] = v[i] =(ll) r * r * h;}sort(tv, tv + n);tot = unique(tv, tv + n) - tv;ll res = 0;for(int i = 0; i < n; i++){int pos = lower_bound(tv, tv + tot, v[i]) - tv + 1;ll tmp = query(pos - 1) + v[i];res = max(res, tmp);update(pos, tmp);}printf("%.10lf\n", res * pi);return 0;
}

转载于:https://www.cnblogs.com/Tuesdayzz/p/5758764.html

Codeforces 629D Babaei and Birthday Cake(树状数组优化dp)相关推荐

  1. E. Pencils and Boxes (树状数组优化dp)

    传送门 1.题意 给出n个数,要求给这些数分组,每组不少于k个. 每组的数之间的差不能大于d.是否能够分组? 2.dp分析 先排序. f[i]f[i]f[i]表示[1~i]能够分组成功. 答案就是f[ ...

  2. codeforces 261D Maxim and Increasing Subsequence(树状数组优化最长上升子列)

    题目链接:http://codeforces.com/problemset/problem/261/D 题意:最长上升子列. 思路:树状数组优化求最长上升子列. #include <iostre ...

  3. [SCOI2014]方伯伯的玉米田 //二维树状数组优化DP

    题目: 方伯伯在自己的农田边散步,他突然发现田里的一排玉米非常的不美.这排玉米一共有N株,它们的高度参差不齐.方伯伯认为单调不下降序列很美,所以他决定先把一些玉米拔高,再把破坏美感的玉米拔除掉,使得剩 ...

  4. bzoj 1264: [AHOI2006]基因匹配Match (树状数组优化dp)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1264 思路: n大小为20000*5,而一般的dp求最长公共子序列复杂度是 n*n的,所以我 ...

  5. hdu 4991(树状数组优化dp)

    Ordered Subsequence Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

  6. hdu 5542(树状数组优化dp)

    题意: 求n个数中长度为m的上升子序列的个数 解题思路:dp[i][j]表示第i个数长度为j的上升序列的个数.dp[i][j] = sum{dp[k][j-1] | a[k] < a[i]},这 ...

  7. CF1621G Weighted Increasing Subsequences(离散化+树状数组优化dp+栈维护后缀最大值+计数)

    problem luogu-link solution 显然单独考虑每个 iii 的贡献,即被多少个合法上升子序列包含. 令 x=max⁡{j∣j>i∧aj>ai}x=\max\{j\ | ...

  8. 【HDU - 6447】YJJ's Salesman(降维dp,树状数组优化dp)

    题干: YJJ is a salesman who has traveled through western country. YJJ is always on journey. Either is ...

  9. acwing 297. 赤壁之战 树状数组优化DP 寒假集训

    题目链接 想要求长度为M的子序列,我们可以拿DP方程来计算,并且这个DP也是比较好看出来的DP[i][j]代表着i后j位置中的所有长度为j的子序列,递推方程为 for(int i=1;i<=n; ...

最新文章

  1. 人体姿态估计(Human Pose Estimation)技巧方法汇总
  2. 如何优雅的使用Mock Server
  3. 两个整形变量,不用中间变量进行替换!
  4. 使用VirtualEnvWrapper隔离python项目的库依赖
  5. 使用Spring数据和Thymeleaf实现Bootstrap分页
  6. jdk1.8对synchronized锁的优化
  7. json里面的list数据取不出来_sql盲注的困局:利用DNSlog快速导出数据
  8. Linux关闭开启防火墙命令
  9. STM32实现水下四旋翼(三)通信任务——遥控器SBUS通信
  10. PCB Layout的10个细节
  11. 我国5G现状:今年底或发放5G牌照
  12. 改了后台登陆地址后无法上传图片_如何找到路由器后台管理账号及密码 找回路由器后台管理账号及密码方法【介绍】...
  13. 单片机学习笔记5--STM32时钟系统(基于百问网STM32F103系列教程)
  14. 航悦达 HYD-3000 打印机驱动
  15. 终于去看了麦兜响当当
  16. noip题库 —— 4.7反质数
  17. 小学期 异形:达达学长的生死逃亡
  18. 云栖科技评论第70期:数字时代需要双螺旋
  19. Java研发小试(面试题)
  20. 2016年7月编程语言排行榜

热门文章

  1. Linux shell 学习笔记(16)— shell 入门总结
  2. python 浮点数未解之谜
  3. Windows中配置java变量环境
  4. Mysql分页order by数据错乱重复
  5. 操作系统学习笔记 第二章:进程管理(王道考研)
  6. NSight Compute 用户手册(上)
  7. 用小神经网络和光谱仪优化关键词识别
  8. 2021年大数据ZooKeeper(四):ZooKeeper的shell操作
  9. 【CV】Pytorch一小时入门教程-代码详解
  10. python 创建.txt的文件 并写内容到里面