ssoj2868(最大不相交區間)

2021-07-24 05:13:10 字數 737 閱讀 7861

【題意】在二維平面上以(0,0)為左下角,(w,d)為右上角的矩形區域內有一些點,每個點代表乙個人,每個人將會面對乙個方向(東南西北),乙個人的視野範圍是以該點為頂點的直角,角平分線與其所面對的方向平行,角的兩條邊會與矩形交於兩點,矩形上兩點之間的部分,為該人的可視部分。為了讓每個人都能知道時間,你需要在矩形的邊界上放置一些時鐘(視為乙個點),使得每個人的可以部分內都至少有乙個時鐘,求最少需要放置幾個時鐘。

【思路】記錄下每個點在邊界上的交點,記錄區間,然後沿逆時針方向將邊界拉成直線(由於是環要*2),尋找最大不相交的區間個數(沒有公共點)

【**】

#include #include #include #include #include #define maxn 2003

#define inf 100000007

using namespace std;

pairp[maxn];

int n,w,d,len,s[maxn],t[maxn];

int get()

void init()

else if(ch=='w')

else if(ch=='s')

else if(ch=='n')

if(x1==0 || y1==d)s[i]=len-x1-y1;

else s[i]=x1+y1;

if(x2==0 || y2==d)t[i]=len-x2-y2;

else t[i]=x2+y2;

if(t[i]

最大不相交區間數量

給定 n n n 個閉區間 ai bi ai,bi ai,bi 請你在數軸上選擇若干區間,使得選中的區間之間互不相交 包括端點 輸出可選取區間的最大數量。輸入格式 第一行包含整數 n n n,表示區間數。接下來 n n n 行,每行包含兩個整數 ai,bi ai,bi ai,bi,表示乙個區間的兩個...

區間問題 最大不相交區間數量 區間問題 貪心

玄學的貪心問題,一般全憑直覺。貪心問題沒有固定討論,沒有模板,見多了就好了,證明想法的正確性是很困難的,大多採用反證法。區間問題無非左端點 右端點 左右端點排序 908.最大不相交區間數量 本題和 區間問題 區間選點 區間問題 貪心 一模一樣,乙份 交兩遍就行了。貪心思路和證明思路都一致,簡單對問題...

AcWing 908 最大不相交區間數量

題目描述 給定n個閉區間 ai,bi 請你在數軸上選擇若干區間,使得選中的區間之間互不相交 包括端點 輸出可選取區間的最大數量。輸入格式 第一行包含整數n,表示區間數。接下來n行,每行包含兩個整數ai,bi,表示乙個區間的兩個端點。輸出格式 輸出乙個整數,表示可選取區間的最大數量。資料範圍 1 n ...