HDU5406---CRB and Apple( DP) 2015 Multi-University Training Contest 10
题意比较简单,
dp[i][j] 表示上一次男女吃的deliciousness分别为i, j的时候的吃的最多的苹果。
那么dp[i][j] = max(dp[i][k] + 1), 0 < k <= j
dp[i][j] = max( max(dp[k][j]) + 1 ) , 0 < k <= i
对于第一个式子最大值 用树状数组线段树都可以解决, 第二个式子如果每次从0遍历到i再找最值的话,显然会超时。
仔细想想便可以发现第二个最值和第一个是一样的。 这个不好解释。 像是对称性那种 一样。
#include <bits/stdc++.h>
using namespace std;
const int MAXN = ;
struct Node{
int h, d;
bool operator < (const Node &rhs)const{
return h != rhs.h ? h > rhs.h : d < rhs.d;
}
}apple[MAXN];
int arr[MAXN<<][MAXN<<];
int MAX;
inline int lowbit (int x){
return x & -x;
}
void Modify (int x, int y, int d){
while (y < MAX){
arr[x][y] = max(arr[x][y], d);
y += lowbit(y);
}
}
int query (int x, int y){
int res = ;
while (y){
res = max(arr[x][y], res);
y -= lowbit(y);
}
return res;
}
int lsh[MAXN << ], lshtot, tmp[MAXN << ];
int main()
{
int T, n;
scanf ("%d", &T);
while (T--){
scanf ("%d", &n);
lshtot = ;
for (int i = ; i < n; i++){
scanf ("%d%d", &apple[i].h, &apple[i].d);
lsh[lshtot++] = apple[i].d;
}
sort (apple, apple+n);
sort (lsh, lsh+lshtot);
lshtot = unique(lsh, lsh+lshtot) - lsh;
for (int i = ; i < n; i++){
apple[i].d = lower_bound(lsh, lsh+lshtot, apple[i].d) - lsh + ;
}
MAX = lshtot + ;
memset(arr, , sizeof (arr));
for (int i = ; i < n; i++){
for (int j = ; j <= lshtot+; j++){
tmp[j] = query(j, apple[i].d);
}
for (int j = ; j <= lshtot+; j++){
Modify(apple[i].d, j, tmp[j]+);
Modify(j, apple[i].d, tmp[j]+);
}
}
int ans = ;
for (int i = ; i <= lshtot+; i++){
ans = max(ans, query(i, lshtot+));
}
printf("%d\n", ans);
}
return ;
}
HDU5406---CRB and Apple( DP) 2015 Multi-University Training Contest 10的更多相关文章
- 2015 Multi-University Training Contest 10 hdu 5406 CRB and Apple
CRB and Apple Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- 2015 Multi-University Training Contest 10(9/11)
2015 Multi-University Training Contest 10 5406 CRB and Apple 1.排序之后费用流 spfa用stack才能过 //#pragma GCC o ...
- LightOJ 1033 Generating Palindromes(dp)
LightOJ 1033 Generating Palindromes(dp) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid= ...
- lightOJ 1047 Neighbor House (DP)
lightOJ 1047 Neighbor House (DP) 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=87730# ...
- UVA11125 - Arrange Some Marbles(dp)
UVA11125 - Arrange Some Marbles(dp) option=com_onlinejudge&Itemid=8&category=24&page=sho ...
- 【POJ 3071】 Football(DP)
[POJ 3071] Football(DP) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4350 Accepted ...
- 初探动态规划(DP)
学习qzz的命名,来写一篇关于动态规划(dp)的入门博客. 动态规划应该算是一个入门oier的坑,动态规划的抽象即神奇之处,让很多萌新 萌比. 写这篇博客的目标,就是想要用一些容易理解的方式,讲解入门 ...
- Tour(dp)
Tour(dp) 给定平面上n(n<=1000)个点的坐标(按照x递增的顺序),各点x坐标不同,且均为正整数.请设计一条路线,从最左边的点出发,走到最右边的点后再返回,要求除了最左点和最右点之外 ...
- 2017百度之星资格赛 1003:度度熊与邪恶大魔王(DP)
.navbar-nav > li.active > a { background-image: none; background-color: #058; } .navbar-invers ...
随机推荐
- [转] shared_from_this 几个值得注意的地方
http://hi.baidu.com/cpuramdisk/item/7c2f8d77385e0f29d7a89cf0 shared_from_this()是enable_shared_from_t ...
- 那些年不错的Android开源项目(转)
第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...
- Linux磁盘管理:LVM逻辑卷基本概念及LVM的工作原理
一.传统的磁盘管理 其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(Master Boot Recorder)都是通过先对一个硬盘进行分区,然后再将该 ...
- Mediator 中介者 协调者模式
简介 定义:用一个[中介者对象]封装一系列的[对象交互],中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互. 中介者模式的结构 抽象中介者Mediator:定义好[ ...
- Java 8 Lambda表达式10个示例【存】
PS:不能完全参考文章的代码,请参考这个文件http://files.cnblogs.com/files/AIThink/Test01.zip 在Java 8之前,如果想将行为传入函数,仅有的选择就是 ...
- http2.0
HTTP2.0性能增强的核心:二进制分帧 HTTP 2.0最大的特点: 不会改动HTTP 的语义,HTTP 方法.状态码.URI 及首部字段,等等这些核心概念上一如往常,却能致力于突破上一代标准的性能 ...
- 解决 oracle 错误ORA-01033
数据库在导入数据的过程中,意外关机.重启机器后,pl/sql-developer不能登录数据库,报错ORA-01033:oracle initializationor shutdown in prog ...
- scrolView
禁止UIScrollView垂直方向滚动,只允许水平方向滚动 scrollview.contentSize = CGSizeMake(长度, 0); 禁止UIScrollView水平方向滚动,只允许 ...
- Asp.net 导航条【1】
PHP比较成熟的开放的源代码比较多,比方说PrestaShop,比方说Discuz!...... 虽然语言不同,但基本原理是一样的,有时间的话读一读,对学习ASP.NET应该是非常有好处的(唉,什么时 ...
- JavaScript 之 关键内容
词法作用域.调用对象.作用域链.闭包.构造函数.原型.类.继承 局部变量查找路径 属性查找路径