nyoj1255 Rectangles(第七届河南省程序设计大赛)

Rectangles

时间限制:1000 ms  |  内存限制:65535 KB

难度:2

描述

Given N (4 <= N <= 100)  rectangles and the lengths of their sides ( integers in the range 1..1,000), write a program that finds the maximum K for which there is a sequence of K of the given rectangles that can "nest", (i.e., some sequence P1, P2, ..., Pk,
such that P1 can completely fit into P2, P2 can completely fit into P3, etc.).

A rectangle fits inside another rectangle if one of its sides is strictly smaller than the other rectangle‘s and the remaining side is no larger.  If two rectangles are identical they are considered not to fit into each other.  For example, a 2*1 rectangle
fits in a 2*2 rectangle, but not in another 2*1 rectangle.

The list can be created from rectangles in any order and in either orientation.

输入
The first line of input gives a single integer, 1 ≤ T ≤10, the number of test cases. Then follow, for each test case:

* Line 1: a integer N , Given the number ofrectangles N<=100

* Lines 2..N+1: Each line contains two space-separated integers X Y, the sides of the respective rectangle. 1<= X , Y<=5000

输出
Output for each test case , a single line with a integer K , the length of the longest sequence of fitting rectangles.
样例输入
1
4
8 14
16 28
29 12
14 8
样例输出
2
来源
第七届河南省程序设计大赛
上传者
516108736

一个DP题  类似于单调递增最长子序列  队友做的。

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
struct Node
{
	int x,y;
}node[105];
bool cmp(Node a,Node b)
{
	if(a.x!=b.x)
		return a.x<b.x;
	else
		return a.y<b.y;
}
int dp[105];
int vis[1005][1005];
int main()
{
	int T;
	scanf("%d",&T);
	while(T--)
	{
		memset(node,0,sizeof(node));
		memset(dp,0,sizeof(dp));
		memset(vis,0,sizeof(vis));
		int N;
		scanf("%d",&N);
		int n=0;
		for(int i=0;i<N;i++)
		{
			int a,b;
			scanf("%d%d",&a,&b);
			if(!vis[a][b])
			{
				node[n].x=a<b?a:b;
				node[n++].y=a>b?a:b;
				vis[a][b]=1;
				vis[b][a]=1;
			}
		}
		sort(node,node+n,cmp);
//		for(int i=0;i<n;i++)
//			printf("%d %d\n",node[i].x,node[i].y);
		int max=0;
		for(int i=1;i<n;i++)
		for(int j=0;j<i;j++)
		{
			if(node[i].x>=node[j].x&&node[i].y>=node[j].y&&dp[i]<dp[j]+1)
				dp[i]=dp[j]+1;
			max=max<dp[i]?dp[i]:max;
		}
		printf("%d\n",max+1);
	}
	return 0;
}        
时间: 2024-11-06 18:03:45

nyoj1255 Rectangles(第七届河南省程序设计大赛)的相关文章

nyoj1253 Turing equation(第七届河南省程序设计大赛)

题目1253 题目信息 运行结果 本题排行 讨论区 Turing equation 时间限制:1000 ms  |  内存限制:65535 KB 难度:1 描述 The fight goes on, whether to store  numbers starting with their most significant digit or their least  significant digit. Sometimes  this  is also called  the  "Endian

nyoj1248 海岛争霸(第七届河南省程序设计大赛)

题目1248 题目信息 运行结果 本题排行 讨论区 海岛争霸 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 神秘的海洋,惊险的探险之路,打捞海底宝藏,激烈的海战,海盗劫富等等.加勒比海盗,你知道吧?杰克船长驾驶着自己的的战船黑珍珠1号要征服各个海岛的海盜,最后成为海盗王. 这是一个由海洋.岛屿和海盗组成的危险世界.杰克船长准备从自己所占领的岛屿A开始征程,逐个去占领每一个岛屿.面对危险重重的海洋与诡谲的对手,如何凭借智慧与运气,建立起一个强大的海盗帝国. 杰克船长

nyoj1254 Code the Tree (第七届河南省程序设计大赛)

题目1254 题目信息 运行结果 本题排行 讨论区 Code the Tree 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 A tree (i.e. a connected graph without cycles) with vertices numbered by the integers 1, 2, ..., n is given. The "Prufer" code of such a tree is built as follows: the

nyoj1249 物资调度 (第七届河南省程序设计大赛)

物资调度 时间限制:1000 ms  |  内存限制:65535 KB 难度:2 描述 某地区发生了地震,灾区已经非常困难,灾民急需一些帐篷.衣物.食品和血浆等物资.可通往灾区的道路到处都是塌方,70%以上的路面损坏,桥梁全部被毁.国家立即启动应急预案,展开史上最大强度非作战空运行动,准备向灾区空投急需物资. 一方有难,八方支援.现在已知有N个地方分别有A1,A2,-.,An个物资可供调配.目前灾区需要物资数量为M. 现在,请你帮忙算一算,总共有多少种物质调度方案. 假设某地方一旦被选择调配,则

河南省第七届ACM程序设计大赛赛后总结

我们学校ACM集训开始于4月5号(清明节),5月25日在郑州解放军信息工程大学举办,集训耗时50天,但是感觉效果还行,但是也不是太好:我们也已经尽力了,虽然说只拿了个银牌,每份收获的背后,都会有辛勤的汗水,毕竟我们也努力了: 下面说说比赛中的问题:觉得吧,虽说模拟赛参加了很多,但是到了正式的比赛的时候,还是出现了紧张的情况,九点开始比赛,我们AC第一道题的时间是在十点半左右,题目不难而且曾经也做过啊,但是就是调试不好,越调试不好,心里就越急啊:刚开始看题的时间,我们都看了第一道题,意思也都明白,

nyoj714 Card Trick(第六届河南省程序设计大赛)

题目714 题目信息 运行结果 本题排行 讨论区 Card Trick 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 The magician shuffles a small pack of cards, holds it face down and performs the following procedure: The top card is moved to the bottom of the pack. The new top card is deal

nyoj 711最舒适的路线(第六届河南省程序设计大赛 并查集)

最舒适的路线 时间限制:5000 ms  |  内存限制:65535 KB 难度:5 描述 异形卵潜伏在某区域的一个神经网络中.其网络共有N个神经元(编号为1,2,3,-,N),这些神经元由M条通道连接着.两个神经元之间可能有多条通道.异形卵可以在这些通道上来回游动,但在神经网络中任一条通道的游动速度必须是一定的.当然异形卵不希望从一条通道游动到另一条通道速度变化太大,否则它会很不舒服. 现在异形卵聚居在神经元S点,想游动到神经元T点.它希望选择一条游动过程中通道最大速度与最小速度比尽可能小的路

NYOJ - 716 - River Crossing --第六届河南省程序设计大赛 (简单DP!!)

River Crossing 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 Afandi is herding N sheep across the expanses of grassland  when he finds himself blocked by a river. A single raft is available for transportation. Afandi knows that he must ride on the raft for

NYOJ - 715 - Adjacent Bit Counts --第六届河南省程序设计大赛 (DP!!)

Adjacent Bit Counts 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 For a string of n bits x1, x2, x3, -, xn,  the adjacent bit count of the string  is given by     fun(x) = x1*x2 + x2*x3 + x3*x 4 + - + xn-1*x n which counts the number of times a 1 bit is adj