技巧:
单维度套路贪心
思路:
--------- A B --------- 改变A B 的顺序对前面和后面没人影响
实现:
package main import ( "fmt" "sort" ) type Cow struct { t,d int } func main() { var n int fmt.Scan(&n) c := make([]Cow, n) for i := 0; i < n; i ++ { fmt.Scan(&c[i].t,&c[i].d) } sort.Slice(c, func(i, j int) bool { return c[i].d * c[j].t > c[i].t * c[j].d}) preTSum := c[0].t << 1 ans := 0 for i := 1; i < n; i ++ { ans += preTSum * c[i].d preTSum += c[i].t << 1 } fmt.Println(ans) }