NYOJ 12 噴水裝置(二) 貪心

2022-07-19 12:33:16 字數 842 閱讀 2322

看了別人的解法才明白怎麼回事,連線:

摘錄他的分析過程:

題目分析:本題可以看作是

區間覆蓋問題

的乙個例子,只要對上述的內容稍微轉換以下即可,將每個圓的射擊範圍對映到區間內。可相應轉換為:數軸上有n個區間[ai,bi](這個指的是噴水裝置的合理的噴水區間),選擇盡量少的區間覆蓋一條指定線段[s,t](這個區間指的就是[0,w])。

貪心策略:

把各區間按照a從小到大排序,從前向後遍歷,然後每次選擇從當前起點s開始的最長區間,並以這個區間的右端點為新的起點,繼續選擇,直到找不到區間覆蓋當前起點s或者s已經到達線段末端。

需要注意的是,如果某一區間邊界大於s,t的邊界,應把它們變成s或t。因為超出的部分毫無意義,同時還會影響對資料的分析

還學到了pair,相當於是包含有兩個變數的struct,連線:點選開啟鏈結

#include #include #include #include using namespace std;

double f(double r,double h)

bool cmp(paira,pairb)

}sort(vec.begin(),vec.end(),cmp);

double right=0.0;

int cnt=0;

while(rightmaxl)

maxl=vec[i].second-right;

}if(maxl!=0)

else

break;

}if(right>=w)

cout

cout<<0<}

return 0;

}

NYOJ 12 噴水裝置(二) 貪心)

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有一塊草坪,橫向長w,縱向長為h,在它的橫向中心線上不同位置處裝有n n 10000 個點狀的噴水裝置,每個噴水裝置i噴水的效果是讓以它為中心半徑為ri的圓都被潤濕。請在給出的噴水裝置中選擇盡量少的噴水裝置,把整個草坪全部潤濕。...

NYOJ 12 噴水裝置(二)貪心

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有一塊草坪,橫向長w,縱向長為h,在它的橫向中心線上不同位置處裝有n n 10000 個點狀的噴水裝置,每個噴水裝置i噴水的效果是讓以它為中心半徑為ri的圓都被潤濕。請在給出的噴水裝置中選擇盡量少的噴水裝置,把整個草坪全部潤濕。...

NYOJ12 噴水裝置(二) 貪心

時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 有一塊草坪,橫向長w,縱向長為h,在它的橫向中心線上不同位置處裝有n n 10000 個點狀的噴水裝置,每個噴水裝置i噴水的效果是讓以它為中心半徑為ri的圓都被潤濕。請在給出的噴水裝置中選擇盡量少的噴水裝置,把整個草坪全部潤濕。...