HDU 1160 结构体与dp

原创 2015年07月08日 10:40:10
#include <bits/stdc++.h>
using namespace std;
const int MAX_V = 1005;
struct mice
{
	int n, s, w, dp, f;
	bool operator<(mice &p)
	{
		if (w != p.w) return w < p.w;
		else return s > p.s;
	}
};
int num, ans;
mice inp[MAX_V];
istream & operator>>(istream &is, mice &p)
{
	is >> p.w >> p.s;
	p.n = num + 1;
	p.dp = 1;
	p.f = -1;
	num++;
	return is;
}
void print(int ans)
{
	if (inp[ans].f != -1)
		print(inp[ans].f);
	cout << inp[ans].n << endl;
}
void solve()
{
	for (int i = 1; i < num; i++)
	{
		for (int j = 0; j < i; j++)
			if (inp[i].w > inp[j].w && inp[i].s < inp[j].s && inp[i].dp < inp[j].dp + 1)
			{
				inp[i].dp = inp[j].dp + 1;
				inp[i].f = j;
			}
		ans = (inp[i].dp >= inp[ans].dp ? i : ans);
	}
	cout << inp[ans].dp << endl;
	print(ans);
}
int main(int argc, char const *argv[])
{
	while (cin >> inp[num]);
	sort(inp, inp + --num);//因为读入eof,num比实际大1
	solve();
	return 0;
}
使用了递归来逆序输出。题目本质是最长下降子序列。
使用了结构体来保存dp;
更换了比较符号的写法,更简洁;
做这题花了很长时间,还是应该吧思路理清楚;
版权声明:本文为博主原创文章,未经博主允许不得转载。

hdu1160 FatMouse's Speed 【最长下降子序列+输出】

本来想写nlogn,想错了,一直过不了,只能上暴力的。//#include #include #include #include #include using namespace std; const...
  • xinag578
  • xinag578
  • 2016年04月05日 16:27
  • 305

HDU1160DP最长上升子序列微整形

FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others...
  • NicoleYWJ
  • NicoleYWJ
  • 2017年08月14日 18:43
  • 122

hdu1160简单dp最长下降子序列

/* 简单dp,要记录顺序 解:先排序,然后是一个最长下降子序列 ,中间需记录顺序 dp[i]=Max(dp[i],dp[j]+1); */ #include #include #include #d...
  • u011483306
  • u011483306
  • 2015年04月01日 10:31
  • 573

hdu1160 FatMouse's Speed 最长上升子序列以及记录路径 DP

 FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Oth...
  • hnust_xiehonghao
  • hnust_xiehonghao
  • 2012年07月24日 20:18
  • 4560

uva 1160 - X-Plosives(并查集)

题目链接:uva 1160 - X-Plosives 题目大意:每一种化合物由两种简单的元素组成,现在有n种化合物要装车,如果出现说有k种化合物刚好由k种元组组成,就会发生化学发应。工人在每次装...
  • u011328934
  • u011328934
  • 2014年08月23日 13:53
  • 992

hdu DP 题集

DP是难点,供自已以后系统学习。 1.Robberies  连接 :http://acm.hdu.edu.cn/showproblem.PHP?pid=2955      背包;第一次做...
  • qq_30591245
  • qq_30591245
  • 2017年04月01日 15:36
  • 503

hdu3899(树形dp)

链接:点击打开链接 题意:给出一棵树每个点的权值和每条边的长度,点j到点i的代价为点j的权值乘以连接i和j的边的长度,输出点x,使得所有点到x点的代价最小 代码:#pragma comment(lin...
  • stay_accept
  • stay_accept
  • 2016年07月31日 17:08
  • 297

hdu 1160 DP

最长上升序列+路径打印 #include #include #include #include #include #include #include #include #include #inc...
  • calck
  • calck
  • 2015年02月17日 15:10
  • 89

hdu 1160 dp

2014/9/28  最长XX序列,卡在了zen'me
  • u014204854
  • u014204854
  • 2014年09月28日 11:44
  • 446

hdu 1160 dp水

/************************************************ *Author :jibancanyang *Created Time :一 ...
  • jibancanyang
  • jibancanyang
  • 2016年04月07日 09:58
  • 156
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HDU 1160 结构体与dp
举报原因:
原因补充:

(最多只允许输入30个字)