題目鏈結:
長 l公尺,寬 w 公尺的草坪裡裝有 n個澆灌噴頭。每個噴頭都裝在草坪中心線上(離兩邊各w/2 公尺)。我們知道每個噴頭的位置(離草坪中心線左端的距離),以及它能覆蓋到的澆灌範圍。
請問:如果要同時澆灌整塊草坪,最少需要開啟多少個噴頭?
分析:對於此模型,我們不熟悉,熟悉的是在一條線上的處理,我們可以把此模型降維處理,變成一維的。對於乙個圓的噴灑範圍,可以看成看成上圖中黃色的範圍。,對於和長方形相切的圓,可以看成乙個點,,沒有覆蓋範圍。對於和長方形沒有相交的圓,就不用考慮。
對於每乙個黃色區間,按照左端點從小到大排序。每次都選擇能往後延伸最長的那個區間。
**:
#include
#include
#include
#include
using
namespace
std;
intn,l
,w;struct
nodes[
15001];
intcmp
(nodet1,
nodet2)
intmain()
}sort(s
,s+k
,cmp);
if(s[
0].l
>0)
/*左邊的沒有覆蓋,可以直接輸出*/
intbook
[15001];
memset
(book,0
,sizeof
(book))
;int
flag
,ans=0
,t;double
head=0
,tail=0
;while(1
)}if(
flag==
1||flag==
2)else
break;if
(flag==
2)break;}
if(tail
flag=0
;if(flag==
0)printf
("-1\n");
else
printf
("%d\n"
,ans);
}return0;
}
1038 角谷猜想
1038 角谷猜想 description 角谷猜想 日本一位中學生發現乙個奇妙的 定理 請角谷教授證明,而角谷教授無能為力,於是產生角谷猜想。猜想的內容是 任給乙個自然數,若為偶數除以2,若為奇數則乘3加1,得到乙個新的自然數然後按照上面的法則繼續演算,若干次後得到的結果必然為1,請程式設計驗證。...
1038神經網路
這道題也可以用佇列來做,但比較麻煩。沒辦法,蒟蒻一枚。首先,將起點 ci 1的點 放入佇列之中。當head tail時,head,將隊首的點 team head 展開去找他的兒子節點。如果兒子節點沒放入佇列則放入。l代表本層最後乙個點在team 中的序號,l2用於記錄修改前的l,便於輸出。當head...
1038 演算法提高 分蘋果
時間限制 1 sec 記憶體限制 256 mb 提交 10 解決 4 提交 狀態 討論版 小朋友排成一排,老師給他們分蘋果。小朋友從左到右標號1.n。有m個老師,每次第i個老師會給第li個到第ri個,一共ri li 1個小朋友每人發ci個蘋果。最後老師想知道每個小朋友有多少蘋果。第一行兩個整數n m...