洛谷的題。。。在此省略題目。。。這題還是比較水的。。。
開始想用字首s1和與字尾s2和做。。。後來發現是不是。。。沒辦法還是自己太菜了。。。
其實這道題很簡單。。。就是給兩個點,然後一系列的點,問以這兩個點為圓心的半徑平方後之和最小是多少。。。我們可以用結構體排序做。。。用乙個結構體陣列a[i].s1和a[i].s2如下:
struct dra[100050];
a[i].s1和a[i].s2表示i點到s1和s2的距離
然後再結構體按照a[i].s1降序排序就好了,這樣排序處來,是以a[i].s1降序排序的,那麼從1->n中間i數的含義是,前面的i-1個點是用第二個點打,而i->n由於降序排序,第乙個點打到第i個點,那麼後面都能被打到,而前1到i-1個點,需要求乙個a[i].s2最大值然後與a[i].s1加起來。這樣的意思是我第一點最遠打到i點。這樣從1-n+1掃一遍即可。。。n+1表示。。。第乙個點壓根不打。。。
最後注意初始化。。。以及結構排序需要寫乙個結構體排序的cmp函式
bool cmp(dr a,dr b)
最後ac**
#include#include#include#includeusing namespace std;
struct dra[100050];
bool cmp(dr a,dr b)
int main()
sort(a+1,a+1+n,cmp);
a[0].s2=0;
a[n+1].s1=0;
int r=0;
int ans=1000000000;
for (int i=1;i<=n+1;i++)
printf("%d\n",ans);
}return 0;
}
NOIP 2010 飛彈攔截
題目描述 經過 11 年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為 0 時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷 每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。某...
noip2010 飛彈攔截
經過11 年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為0 時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷 每套系統每天只能設定一次工作半徑。而當天的使用代價,就是所有系統工作半徑的平方和。某天,雷達捕捉到...
noip2010 飛彈攔截 (貪心)
p1810飛彈攔截 accepted 標籤 noip普及組2010 經過11 年的韜光養晦,某國研發出了一種新的飛彈攔截系統,凡是與它的距離不超過其工作半徑的飛彈都能夠被它成功攔截。當工作半徑為0 時,則能夠攔截與它位置恰好相同的飛彈。但該飛彈攔截系統也存在這樣的缺陷 每套系統每天只能設定一次工作半...