洛谷P1566 加等式 golang乱搞
好久没写算法了,6.12还得做腾讯笔试,惨
自从工作以来能逐渐感觉到求知欲和对探索的兴趣在逐渐减退,可能大学最有意义的就是让我们在一个相对纯粹的环境里去探索,然后开启一辈子的工作吧
golang乱搞一下,简单dp嘛
先用cpp写了一遍,然后用golang又写了一遍
package main import ( "bufio" . "fmt" "io" "os" ) func run(_r io.Reader, out io.Writer) { in := bufio.NewReader(_r) kase := 0 Fscan(in, &kase) for k := 1; k <= kase; k++ { var n int Fscan(in, &n) a := make([]int, n+1) max_element := func(arr []int) int { max := func(x, y int) int { if x > y { return x } return y } ans := 0 for i := 1; i <= n; i++ { ans = max(a[i], ans) } return ans } for i := 1; i <= n; i++ { Fscan(in, &a[i]) } maxx := max_element(a) dp := make([]int, maxx+1) dp[0] = 1 for i := 1; i <= n; i++ { for j := maxx; j >= a[i]; j-- { dp[j] += dp[j-a[i]] } } ans := 0 for i := 1; i <= n; i++ { ans += dp[a[i]] - 1 } Fprintln(out, ans) } } func main() { run(os.Stdin, os.Stdout) }
笔试加油吧
天才选手zerol的主页:https://zerol.me/
|
WeepingDemon的个人主页:https://weepingdemon.gitee.io/blog/