uva 10131 Is Bigger Smarter?(DAG最长路)
题目连接:10131 - Is Bigger Smarter?
题目大意:给出n只大象的属性, 包括重量w, 智商s, 现在要求找到一个连续的序列, 要求每只大象的重量比前一只的大, 智商却要小, 输出最长值和方案, 方案不唯一的时候任意输出一种。
解题思路:DAG无定点的最长路问题, 记忆化搜索,并记录当前最有解的前驱。
#include <stdio.h>
#include <string.h>
const int N = 10005; struct State {
int w;
int s;
}tmp[N];
int n, dp[N], vis[N]; int find(int cur) {
if (dp[cur]) return dp[cur];
int a;
vis[cur] = cur;
State& now = tmp[cur];
for (int i = 0; i < n; i++) {
if (tmp[i].w < now.w && tmp[i].s > now.s) {
a = find(i);
if (dp[cur] <= a) {
dp[cur] = a;
vis[cur] = i;
}
}
}
return ++dp[cur];
} void solve() {
int Max = 0, id = 0, ans[N], cnt = 0;
for (int i = 0; i < n; i++) {
if (!dp[i]) find(i);
if (Max < dp[i]) {
Max = dp[i];
id = i;
}
} printf("%d\n", Max);
while (id != vis[id]) {
ans[cnt++] = id + 1;
id = vis[id];
}
ans[cnt++] = id + 1; for (int i = cnt - 1; i >= 0; i--)
printf("%d\n", ans[i]); } int main() {
// Init;
n = 0;
memset(tmp, 0, sizeof(tmp));
memset(vis, 0, sizeof(vis));
memset(dp, 0, sizeof(dp)); // Read;
while(scanf("%d%d", &tmp[n].w, &tmp[n].s) == 2)
n++; solve(); return 0;
}
uva 10131 Is Bigger Smarter?(DAG最长路)的更多相关文章
- uva 10051 Tower of Cubes(DAG最长路)
题目连接:10051 - Tower of Cubes 题目大意:有n个正方体,从序号1~n, 对应的每个立方体的6个面分别有它的颜色(用数字给出),现在想要将立方体堆成塔,并且上面的立方体的序号要小 ...
- UVA 10131 Is Bigger Smarter?(DP最长上升子序列)
Description Question 1: Is Bigger Smarter? The Problem Some people think that the bigger an elepha ...
- UVA 10131 - Is Bigger Smarter? (动态规划)
Is Bigger Smarter? The Problem Some people think that the bigger an elephant is, the smarter it is. ...
- Uva 10131 Is Bigger Smarter? (LIS,打印路径)
option=com_onlinejudge&Itemid=8&page=show_problem&problem=1072">链接:UVa 10131 题意: ...
- uva 10131 Is Bigger Smarter ? (简单dp 最长上升子序列变形 路径输出)
题目链接 题意:有好多行,每行两个数字,代表大象的体重和智商,求大象体重越来越大,智商越来越低的最长序列,并输出. 思路:先排一下序,再按照最长上升子序列计算就行. 还有注意输入, 刚开始我是这样输入 ...
- UVA 10131 Is Bigger Smarter?(DP)
Some people think that the bigger an elephant is, the smarter it is. To disprove this, you want to t ...
- UVa 10131: Is Bigger Smarter?
动态规划题.类似UVa103 Stacking Box,都是题目给一种判断嵌套的方法然后求最长序列.提前对数据排序可以节省一些时间开销. 我的解题代码如下: #include <iostream ...
- 简单Dp----最长公共子序列,DAG最长路,简单区间DP等
/* uva 111 * 题意: * 顺序有变化的最长公共子序列: * 模板: */ #include<iostream> #include<cstdio> #include& ...
- NYOJ16 矩形嵌套(DAG最长路)
矩形嵌套 紫书P262 这是有向无环图DAG(Directed Acyclic Graph)上的动态规划,是DAG最长路问题 [题目链接]NYOJ16-矩形嵌套 [题目类型]DAG上的dp & ...
随机推荐
- DataSource绑定DataTable.Select()显示system.data.DataRow问题解决的方法
有时候我们须要在控件中绑定DataTable中设定条件过滤后的数据,此时,在winForm环境中,一些控件不能正确绑定并显示数据内容.这是由于DataTable.Select()返回的是DataRow ...
- Android AES加密算法及事实上现
昨天老大叫我看看android加密算法.于是网上找了找,找到了AES加密算法.(当然还有MD5,BASE64什么的http://snowolf.iteye.com/blog/379860这篇文章列举了 ...
- LDF文件过大的解决办法
检查扎兰屯服务器的时候,发现其中一个分区的原空间有300多个G,但只余下了80多个G.检查了一下,发现某库ldf文件过大,竟然达到了280多个G. 这如何得了,再这样下去,硬盘怎能受得了? 尝试用收缩 ...
- BZOJ 3359: [Usaco2004 Jan]矩形( dp )
数据范围这么小..怎么乱搞都可以吧... 先排序一遍然后O(n²) dp --------------------------------------------------------------- ...
- android页面切换效果
两种方式: 在activity的自定义主题中定义切换方式: overridePendingTransition()方法 自定义主题: 在项目的res/values/styles.xml中添加样式 &l ...
- Android Mediaplayer 调用release()的时候ANR
先stop,然后再release,最后吧media置为null
- DNS与网站优化
点就出现了这样的问题,导致了几小时的访问失败,所以选择优秀的DNS服务器势必关系网站发展的生死存亡.本文做以下分析. 选择良好的DNS服务器要从选择域名注册商说起,在注册域名时多数人看中的仅仅 ...
- HDU2571:命运(DP)
Problem Description 穿过幽谷意味着离大魔王lemon已经无限接近了! 可谁能想到,yifenfei在斩杀了一些虾兵蟹将后,却再次面临命运大迷宫的考验,这是魔王lemon设下的又一个 ...
- Tomcat提供的安全机制
Tomcat中安全机制 BASIC认证 <login-config> <auth-method>BASIC</auth-method> </login-c ...
- 基于visual Studio2013解决面试题之0609寻找链表公共节点
题目