P2782 友好城市

2021-10-09 21:46:08 字數 1581 閱讀 1865

p2782 友好城市

1本題隱晦的說這個題目是乙個最長上公升子串行,先對南邊或者北邊排個序,然後再求最長上公升子串行,我也不知道自己怎麼想出來的,可能就是我最近一直在寫dp有關的題目吧

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define ll long long

#define ms(a,b) memset(a,b,sizeof(a))

#define lowbit(x) x & -x

#define fi first

#define ull unsigned long long

#define se second

#define lson (rt<<1)

#define rson (rt<<1|1)

#define endl "\n"

#define bug cout<<"----acac----"<#define ios ios::sync_with_stdio(false), cin.tie(0),cout.tie(0)

using

namespace std;

const

int maxn =

2e5+10;

const

int maxm =

1.5e5+50

;const

double eps =

1e-10

;const

double inf =

0x3f3f3f3f

;const ll lnf =

0x3f3f3f3f3f3f3f3f

;const

int mod =

1e4+7;

const

double pi =

3.141592653589

;int n;

struct node

a[maxn]

;bool

cmp1

(node a, node b)

bool

cmp2

(node a, node b)

int b[maxn]

;int ans =

0, cnt =0;

voidf(

)else

} ans =

max(ans, cnt);}

intmain()

sort

(a +

1, a +

1+ n, cmp1);f

();sort

(a +

1, a +

1+ n, cmp2);f

();printf

("%d"

, ans)

;return0;

}

Bitset 友好城市

分塊 st表 bitset卡常 把公路分成k塊,內部通過bitset處理出連通狀況。每次詢問,把連續的一些塊通過st表得到邊,再用兩次dfs求強連通分量的方法,合併這些邊,得到新的連通狀況。include include include include include include define ...

友好城市(dp演算法)

這個題也是最長上公升子串行的應用題,我們只需要對一邊的端點排序,再對另一邊的端點求最長上公升子串行即可,因為一邊端點有序,另一邊端點求最長上公升子串行就可以保證這些橋不相交。自行腦補。這題需要用到最長上公升子串行的優化,樸素只能得部分分 include define x first define y...

例9 7 友好城市

時間限制 1000 ms 記憶體限制 65536 kb palmia國有一條橫貫東西的大河,河有筆直的南北兩岸,岸上各有位置各不相同的n個城市。北岸的每個城市有且僅有乙個友好城市在南岸,而且不同城市的友好城市不相同。每對友好城市都向 申請在河上開闢一條直線航道連線兩個城市,但是由於河上霧太大,決定避...