【題意】在二維平面上以(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 ...