首页 > 其他分享 >友好城市

友好城市

时间:2023-09-26 21:13:53浏览次数:34  
标签:cities 友好城市 res ++ int include

友好城市
题目概述:有n个城市分布在一条大河两岸,现在,两岸的城市准备在河上修建桥。每个城市在河对岸都有自己的友好城市,只有友好城市之间才能建立桥。问最多可以修建多少座桥,且桥与桥之间互不交叉。
解题思路:我们可以先考虑怎样会出现交叉情况,当一侧的城市编号为正序(3,4),另一侧的城市编号出现倒序(6,5),那么就会出现交叉情况。我们可以先保持一侧有序,再尽可能保证另一侧有序即可,即求解最长上升子序列。

#include <iostream>
#include <algorithm>
#include <cstring>
#include <set>
#include <vector>
#include <map>
#include <set>

using namespace std;

typedef long long LL;
typedef pair<int,int>PII;
const int N = 5010;

PII cities[N];
int f[N];

void solve(){
	int n;
	cin >> n;

	for(int i = 0; i < n; i ++){
		int a,b;
		cin >> a >> b;
		cities[i] = {a,b};
	}

	sort(cities,cities + n);
	for(int i = 0; i < n; i ++){
		f[i] = 1;
		for(int j = 0; j < i; j ++){
			if(cities[j].second < cities[i].second)
				f[i] = max(f[i],f[j] + 1);
		}
	}

	int res = 0;
	for(int i = 0; i < n; i ++)res = max(res,f[i]);

	cout << res << endl;
}

int main(){
	int T = 1;

	while(T --){
		solve();
	}
	
}

标签:cities,友好城市,res,++,int,include
From: https://www.cnblogs.com/dengch/p/17731171.html

相关文章

  • 1012. 友好城市
    Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。每对友好城市都向政府申请在河上开辟一条直线航道连接两个城市,但是由于河上雾太大,政府决定避免任意两条航道交叉,以避免......
  • P2782 友好城市题解
    题目传送门题意:给定一些上下的线段,求出最多不相交的线段数量。一开始看错题了,以为是给定一堆线段,求出线段最大不交数量,然后就写了一个树状数组优化\(dp\)结果样例都不过,......
  • 1012.友好城市
    1012.友好城市Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相......
  • dp5 友好城市
    题目Palmia国有一条横贯东西的大河,河有笔直的南北两岸,岸上各有位置各不相同的N个城市。北岸的每个城市有且仅有一个友好城市在南岸,而且不同城市的友好城市不相同。每对友......