題目分析:假設乙個人的物理攻擊為a,法術攻擊為b,如果進入陣營1貢獻是a,如果進入陣營2貢獻是b,進入陣營3貢獻為(a+b)/2;
現在要考慮進入哪個陣營貢獻最大就去哪個陣容,如果所有的人都是這麼選擇就可以得到全域性的最大和。
比較常用的就是做差:
對陣營1的貢獻 - 對陣營2的貢獻 = a - b
對陣營1的貢獻 - 對陣營3的貢獻 = (a - b)/ 2
對陣營3的貢獻 - 對陣營2的貢獻 = (a - b)/ 2
a-b>0得到 對陣營1的貢獻 > 對陣營2的貢獻
對陣營1的貢獻 > 對陣營3的貢獻
對陣營3的貢獻 > 對陣營2的貢獻
從而得到:對陣營1的貢獻 > 對陣營3的貢獻 > 對陣營2的貢獻
換句話說就是a-b越大此時選擇的順序就應該是 :陣營1 > 陣營3> 陣營2
所以就需要對陣列a[i]-b[i]進行排序,但是需要記住排序後最大到最小的序號值而不是a[i] - b[i] .
c++**如下:
#include usingnamespace
std;
const
int n=1e6+5
;int a[n],b[n],c[n];//
物理攻擊,魔法攻擊
bool cmp(int l,int r)
intmain()
for(int i=1;i<=n;i++)
for(int i=1;i<=n;i++)
sort(c+1,c+1+n,cmp);
int k=n/3
;
for(int i=1;i<=n;i++)
else
if(i<=2*k)
else
}printf(
"%.2lf
",ans);
return0;
}
百度秋招小測試
1 標準盒模型和ie盒模型的區別 標準盒模型是包括margin padding border content 而content不包含border padding ie盒模型也包括margin padding border content 而content包含border padding 例項 mar...
百度2017秋招筆試真題(一)
1.買帽子 分析 stl set,去重後取第三小的值即可。注意輸出 1的情形 set中的元素個數 3。include include using namespace std int n int a 55 sethat set iterator it int main if hat.size 3 co...
百度2017秋招筆試程式設計題
二舅要蓋房,小明幫忙搬磚,準備幹 n天。二舅說 每天你可以選輕活 重活 不幹活。怕你累著了,只有前一天沒幹活才能乾重活。當然輕活錢少,重活錢多,而且每天還會變。理工科的小明準備設計乙個演算法,看怎樣才能拿到最多錢。輸入 numofdays 幹的天數 n,整數 tasklist 整數列表,第一列幹輕活...