Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake(dp、BIT)
来源:互联网 发布:js给select标签负值 编辑:程序博客网 时间:2024/05/01 02:50
题意:
给定N≤105个蛋糕,编号为1∼N,每个都有体积Vi
任意一个蛋糕都可以放在桌子上,对于蛋糕对(i,j),i可以放在j上,当且仅当i>j且Vi≥Vj
求能摆放的蛋糕的最大体积和
分析:
LIS模型的经典水题了
f[i]表示第i个蛋糕在最上面的最大体积和
f[i]=max{f[j]}+Vi,j<i且Vj<Vi
考虑用BIT优化一下这个转移,离散化一下,记录当前体积蛋糕在最上面的最大体积和,然后就可以O(logn)转移了
ans=max{f[i]},时间复杂度为O(nlogn)
代码:
//// Created by TaoSama on 2016-02-23// Copyright (c) 2016 TaoSama. All rights reserved.//#pragma comment(linker, "/STACK:1024000000,1024000000")#include <algorithm>#include <cctype>#include <cmath>#include <cstdio>#include <cstdlib>#include <cstring>#include <iomanip>#include <iostream>#include <map>#include <queue>#include <string>#include <set>#include <vector>using namespace std;#define pr(x) cout << #x << " = " << x << " "#define prln(x) cout << #x << " = " << x << endlconst int N = 1e5 + 10, INF = 0x3f3f3f3f, MOD = 1e9 + 7;typedef long long LL;int n;LL v[N];struct BIT { int n; LL b[N]; void init(int _n) { n = _n; memset(b, 0, sizeof b); } void add(int i, LL v) { for(; i <= n; i += i & - i) b[i] = max(b[i], v); } LL sum(int i) { LL ret = 0; for(; i; i -= i & -i) ret = max(ret, b[i]); return ret; }} bit;int main() {#ifdef LOCAL freopen("C:\\Users\\TaoSama\\Desktop\\in.txt", "r", stdin);// freopen("C:\\Users\\TaoSama\\Desktop\\out.txt","w",stdout);#endif ios_base::sync_with_stdio(0); while(scanf("%d", &n) == 1) { vector<LL> xs; for(int i = 1; i <= n; ++i) { int r, h; scanf("%d%d", &r, &h); v[i] = 1LL * r * r * h; xs.push_back(v[i]); } sort(xs.begin(), xs.end()); xs.resize(unique(xs.begin(), xs.end()) - xs.begin()); LL ans = 0; bit.init(xs.size()); for(int i = 1; i <= n; ++i) { int idx = lower_bound(xs.begin(), xs.end(), v[i]) - xs.begin() + 1; LL cur = bit.sum(idx - 1) + v[i]; ans = max(ans, cur); bit.add(idx, cur); } printf("%.12f\n", ans * acos(-1)); } return 0;}
0 0
- Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake(dp、BIT)
- Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake(dp + BIT)
- Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake(线段树+dp)
- Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake (复杂的DP)
- Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake
- Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake
- Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake
- Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake(线段树+离散化优化DP)
- Codeforces Round #343 (Div. 2) 629D. Babaei and Birthday Cake 线段树
- Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake(离散化+线段树)
- Codeforces Round #343 (Div. 2)D - Babaei and Birthday Cake 线段树
- codeforces #343 div2 D. Babaei and Birthday Cake(DP+离散化+线段树优化)
- codeforces 629 D. Babaei and Birthday Cake dp + 线段树
- Codeforces 629D Babaei and Birthday Cake(DP)
- CODEFORCES 629 D Babaei and Birthday Cake
- CodeForces 629D Babaei and Birthday Cake
- Codeforces 629D Babaei and Birthday Cake
- Codeforces 629D Babaei and Birthday Cake(线段树优化dp)
- 基于platform总线的中断(按键)字符设备驱动设计
- spring【7】(spring事务详解)
- Spring MVC 无XML配置入门示例
- TYVJ2018小猫下山
- 区间dp基础(石子归并,括号匹配,整数划分。。。)
- Codeforces Round #343 (Div. 2) D. Babaei and Birthday Cake(dp、BIT)
- The 6th Zhejiang Provincial Collegiate Programming Contest->ProblemF:80ers' Memory
- C++模板简单学习
- 线上使用阿里Druid连接池首次连接MySQL异常问题
- 大数相加
- Git分支管理策略
- HTTP Live Streaming for iPhone/iPad(HLS流媒体服务器)
- The 6th Zhejiang Provincial Collegiate Programming Contest->Problem I:A Stack or A Queue?
- [1005]: Number Sequence