ssl1747-登山机器人【离散化,玄学,贪心】
生活随笔
收集整理的這篇文章主要介紹了
ssl1747-登山机器人【离散化,玄学,贪心】
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
正題
大意
有n個機器人,每個機器人帶xi點能量,行走需要消耗yi點能量,求這個n個機器人不回頭的接力最多能走多遠(一個走到就行了)。
解題思路
好像不是很難,處理接力時油的交接就好了。
假設現(xiàn)在有兩個機器人,那么可以走x2/(y1+y2)x2/(y1+y2)時,第一個剩余的等于第二個消耗的,那么就可以交接多走一些,那么我們用x/y2x/y2這樣的關鍵字排序就可以用貪心了。
但是為什么這道題并沒有一個人過,自己一交就WA了,在數(shù)次掙扎之后找老師要了數(shù)據(jù)。Oh!后兩個點輸出整數(shù)前兩個點輸出保留兩位小數(shù)你敢信!
代碼
#include<cstdio> #include<algorithm> #include<iostream> using namespace std; int n; double zans; long double x[101],y[101],cost[101],ans; int main() {scanf("%d",&n);for (int i=1;i<=n;i++)cin>>x[i];for (int i=1;i<=n;i++){cin>>y[i];cost[i]=x[i]/(y[i]*y[i]);//關鍵字}for (int i=1;i<n;i++)for (int j=i+1;j<=n;j++){if (cost[i]<cost[j]){swap(cost[i],cost[j]);swap(x[i],x[j]);swap(y[i],y[j]);}}//排序for (int i=2;i<=n;i++)y[i]+=y[i-1];//計算累加for (int i=1;i<=n;i++){ans+=x[i]/y[i];//計算總值}zans=double(ans);if (n<4)/*玄學判斷*/ printf("%.2lf",zans);else printf("%.0lf",zans); }總結
以上是生活随笔為你收集整理的ssl1747-登山机器人【离散化,玄学,贪心】的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米米家无线洗地机 2C 今日开售:99
- 下一篇: 千兆网口 + 自研芯片:中兴 AX300