UVa 10131 - Is Bigger Smarter?

来源:互联网 发布:win10上安装mac虚拟机 编辑:程序博客网 时间:2024/05/29 18:57

题目:有人认为大象的体重和智力有一定的正相关性,现在给你一些数据,找到一个最长的反例序列。

分析:dp,LIS,醉倒上升子序列。对W排序求出S的最大下降子序列即可,存储路径前驱,dfs输出。

说明:先读到EOF再处理。

#include <algorithm>#include <iostream>#include <cstdlib>#include <cstring>#include <cstdio>#include <cmath>using namespace std;typedef struct enode{int id,w,s;}elephant;elephant E[1001];int cmp(elephant a, elephant b){if (a.w == b.w) {if (a.s == b.s)return a.id < b.id;else return a.s > b.s;}else return a.w < b.w;}int F[1001],P[1001];void output(int s,int d){if (P[s] == s) {printf("%d\n%d\n",d,E[s].id);return;}else {output(P[s], d+1);printf("%d\n",E[s].id);}}int main(){int count = 0;while (~scanf("%d%d",&E[count].w,&E[count].s)) {E[count].id = count+1;count ++;}sort(E, E+count, cmp);int spa = 0;for (int i = 0 ; i < count ; ++ i) {F[i] = 1;P[i] = i;for (int j = 0 ; j < i ; ++ j)if (E[i].w > E[j].w && E[i].s < E[j].s && F[i] < F[j]+1) {F[i] = F[j]+1;P[i] = j;}if (F[spa] < F[i]) spa = i;}output(spa, 1);    return 0;}


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 北京大学就业处 南开大学就业处 江苏科技大学就业处 四川师范大学就业处电话 中央民族大学就业处 沈阳理工大学就业处 山东建筑大学就业指导处 贵州大学招生就业处 齐齐哈尔大学就业处 延边大学招生就业处 大连理工大学就业处电话 黄石理工学院就业处 大连理工大学就业处 陕西师范大学就业处 西安文理学院就业处 吕梁学院招生就业处 邢台学院招生就业处 浙江财经大学就业处 南京农业大学就业处 云南师范大学就业处 白城师范学院就业处网站 聊城大学招生就业处电话 白城师范学院就业工作处 安徽中医学院就业处 华中师范大学就业处 长春师范大学就业处 西南大学招生就业处 河北科技大学就业处 华北理工大学招生就业处 内蒙古工业大学招生就业处 哈尔滨工业大学招生就业处 河南财经政法大学就业指导处 昆明理工大学招生就业处 四川师范大学招生就业处 哈尔滨商业大学招生就业处 新疆农业大学招生就业处 黑龙江科技大学招生就业处 大连理工大学招生就业处 南昌大学招生与就业工作处 防灾科技学院招生就业处 华中师范大学招生就业处