欧美1区2区3区激情无套,两个女人互添下身视频在线观看,久久av无码精品人妻系列,久久精品噜噜噜成人,末发育娇小性色xxxx

??痛赫兴㈩}訓(xùn)練營(yíng)-2025.5.5題解

活動(dòng)地址: ??痛赫兴㈩}訓(xùn)練營(yíng) - 編程打卡活動(dòng)

簡(jiǎn)單題 小紅結(jié)賬

  1. 初始化數(shù)據(jù)結(jié)構(gòu)
    • 使用一個(gè)大小為 m+1 的數(shù)組 s 來(lái)記錄每個(gè)人的轉(zhuǎn)賬總額。下標(biāo) 1m 表示每個(gè)人, s[i] 表示第 i 個(gè)人需要轉(zhuǎn)賬的總金額。
  2. 逐張?zhí)幚碣~單
    • 對(duì)于每張賬單:
      • 計(jì)算每個(gè)人的分?jǐn)偨痤~ cost = ?c / k?,公式為 (c + k - 1) / k(這是向上取整的一種實(shí)現(xiàn)方式)。
      • 讀取 k-1 個(gè)人的編號(hào),并將 cost 累加到對(duì)應(yīng)人的轉(zhuǎn)賬金額上。
  3. 輸出結(jié)果
    • 遍歷數(shù)組 s 中從 1m 的部分,依次輸出每個(gè)人的轉(zhuǎn)賬總額。
package main

import "fmt"

func main() {
	var n, m int
	fmt.Scan(&n, &m)
	s := make([]int, m+1)
	for i := 1; i <= n; i++ {
		var k, c int
		fmt.Scan(&k, &c)
		cost := (c + k - 1) / k
		for j := 1; j <= k-1; j++ {
			var x int
			fmt.Scan(&x)
			s[x] += cost
		}
	}
	for i := 1; i <= m; i++ {
		fmt.Print(s[i], " ")
	}
}

中等題 跳躍游戲(一)

  1. 初始化動(dòng)態(tài)規(guī)劃數(shù)組
  • 定義一個(gè)數(shù)組 dp,其中 dp[i] 表示從數(shù)組的起始位置(索引 0)出發(fā),能夠到達(dá)的最遠(yuǎn)位置。
  • 初始值 dp[0] = a[0],即從第一個(gè)位置出發(fā)時(shí)能夠到達(dá)的最遠(yuǎn)位置就是 a[0]。
  1. 動(dòng)態(tài)規(guī)劃狀態(tài)轉(zhuǎn)移
  • 遍歷數(shù)組中的每個(gè)位置 i(從 1 開(kāi)始),更新 dp[i]
    • 如果當(dāng)前的最遠(yuǎn)可達(dá)位置 dp[i-1] 已經(jīng)大于等于 i,說(shuō)明我們能夠到達(dá)位置 i
      • 在這種情況下,更新 dp[i]max(dp[i-1], i + a[i]),即比較之前的最遠(yuǎn)可達(dá)位置和從當(dāng)前位置 i 能夠跳躍到的最遠(yuǎn)位置。
    • 如果 dp[i-1] < i,說(shuō)明無(wú)法到達(dá)位置 i,此時(shí)也不需要繼續(xù)計(jì)算,因?yàn)楹罄m(xù)位置也無(wú)法到達(dá)。
  1. 判斷結(jié)果
  • 最后檢查 dp[n-1] 是否大于等于 n-1
    • 如果 dp[n-1] >= n-1,說(shuō)明可以跳到數(shù)組的最后一個(gè)位置,輸出 true。
    • 否則,輸出 false。
package main

import "fmt"

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}

func main() {
	var n int
	fmt.Scan(&n)
	a := make([]int, n)
	for i := 0; i < n; i++ {
		fmt.Scan(&a[i])
	}
	dp := make([]int, n)
	dp[0] = a[0]
	for i := 1; i < n; i++ {
		dp[i] = dp[i-1]
		if dp[i] >= i {
			dp[i] = max(dp[i], i+a[i])
		}
	}
	if dp[n-1] >= n-1 {
		fmt.Println("true")
	} else {
		fmt.Println("false")
	}
}

困難題 郊區(qū)春游

  1. 預(yù)處理最短路徑
  • 使用 Floyd-Warshall 算法計(jì)算所有節(jié)點(diǎn)之間的最短路徑。
    • 初始化一個(gè)二維數(shù)組 d,其中 d[i][j] 表示從節(jié)點(diǎn) i 到節(jié)點(diǎn) j 的最短距離。
    • 如果 i = j ,則 d[i][j] = 0;如果 i 和 j 之間沒(méi)有直接連通,則 d[i][j] = ∞。
    • 遍歷所有邊,更新直接相連節(jié)點(diǎn)之間的距離。
    • 使用三重循環(huán)(Floyd-Warshall 算法的核心部分),逐步更新任意兩點(diǎn)之間的最短路徑。
  1. 狀態(tài)壓縮動(dòng)態(tài)規(guī)劃
  • 定義狀態(tài) dp[mask][i]
    • mask 是一個(gè)二進(jìn)制數(shù),表示當(dāng)前已經(jīng)訪問(wèn)的郊區(qū)集合。例如,mask = 0101 表示訪問(wèn)了第 1 和第 3 個(gè)郊區(qū)。
    • i 表示當(dāng)前所在的郊區(qū)編號(hào)。
    • dp[mask][i] 表示在訪問(wèn)了 mask 中的所有郊區(qū),并且最后停留在郊區(qū) ( i ) 時(shí)的最小花費(fèi)。
  • 初始化:
    • 對(duì)于每個(gè)郊區(qū) i ,單獨(dú)訪問(wèn)它時(shí)的花費(fèi)為 0,即 dp[1<<i][i] = 0。
  • 狀態(tài)轉(zhuǎn)移:
    • 枚舉當(dāng)前的狀態(tài) mask 和當(dāng)前所在的郊區(qū) j 。
    • 如果 j 已經(jīng)被訪問(wèn)過(guò)(即 (mask >> j) & 1 == 1),嘗試從未訪問(wèn)過(guò)的郊區(qū) ( k ) 轉(zhuǎn)移到 ( j )。
    • 更新?tīng)顟B(tài):dp[mask | (1<<k)][k] = min(dp[mask | (1<<k)][k], dp[mask][j] + d[v[j]][v[k]]),其中 d[v[j]][v[k]] 是從郊區(qū) ( v[j] ) 到郊區(qū) ( v[k] ) 的最短距離。
  1. 最終結(jié)果
  • 遍歷所有可能的終點(diǎn) i ,找到訪問(wèn)了所有 r 個(gè)郊區(qū)后的最小花費(fèi):
    • ans = min(ans, dp[(1<<r)-1][i]),其中 (1<<r)-1 表示所有郊區(qū)都被訪問(wèn)的狀態(tài)。
package main

import (
	"fmt"
	"math"
)

func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}

func main() {
	var n, m, r int
	fmt.Scan(&n, &m, &r)
	v := make([]int, r)
	for i := 0; i < r; i++ {
		fmt.Scan(&v[i])
	}
	d := make([][]int, n+1)
	for i := 1; i <= n; i++ {
		d[i] = make([]int, n+1)
		for j := 1; j <= n; j++ {
			if i == j {
				d[i][j] = 0
			} else {
				d[i][j] = math.MaxInt
			}
		}
	}
	for i := 0; i < m; i++ {
		var a, b, c int
		fmt.Scan(&a, &b, &c)
		d[a][b] = min(d[a][b], c)
		d[b][a] = min(d[b][a], c)
	}
	for k := 1; k <= n; k++ {
		for i := 1; i <= n; i++ {
			for j := 1; j <= n; j++ {
				if d[i][k] != math.MaxInt && d[k][j] != math.MaxInt {
					d[i][j] = min(d[i][j], d[i][k]+d[k][j])
				}
			}
		}
	}

	dp := make([][]int, 1<<r)
	for i := 1; i < (1 << r); i++ {
		dp[i] = make([]int, r)
		for j := 0; j < r; j++ {
			dp[i][j] = math.MaxInt
		}
	}
	for i := 0; i < r; i++ {
		dp[1<<i][i] = 0
	}
	for i := 1; i < (1<<r)-1; i++ {
		for j := 0; j < r; j++ {
			if (i>>j)&1 == 0 {
				continue
			}
			for k := 0; k < r; k++ {
				if (i>>k)&1 == 0 {
					if d[v[j]][k] != math.MaxInt {
						dp[i|(1<<k)][k] = min(dp[i|(1<<k)][k], dp[i][j]+d[v[j]][v[k]])
					}
				}
			}
		}
	}
	ans := math.MaxInt
	for i := 0; i < r; i++ {
		ans = min(ans, dp[(1<<r)-1][i])
	}
	fmt.Println(ans)
}

#牛客春招刷題訓(xùn)練營(yíng)#

愛(ài)麗姐真是太好了

全部評(píng)論

相關(guān)推薦

評(píng)論
點(diǎn)贊
收藏
分享

創(chuàng)作者周榜

更多
正在熱議
更多
# 面試問(wèn)題記錄 #
63895次瀏覽 932人參與
# 工作中,你有沒(méi)有遇到非常愛(ài)罵人的領(lǐng)導(dǎo)? #
17991次瀏覽 132人參與
# 京東TGT #
49103次瀏覽 180人參與
# 我的2024小目標(biāo) #
59031次瀏覽 396人參與
# 工作一周年分享 #
19524次瀏覽 111人參與
# 互聯(lián)網(wǎng)行業(yè)現(xiàn)在還值得去嗎 #
6718次瀏覽 42人參與
# 硬件人的簡(jiǎn)歷怎么寫(xiě) #
255313次瀏覽 2891人參與
# 面試吐槽bot #
15462次瀏覽 95人參與
# 面試經(jīng)驗(yàn)談 #
41699次瀏覽 573人參與
# 拼多多工作體驗(yàn) #
17029次瀏覽 152人參與
# 上班到公司第一件事做什么? #
39112次瀏覽 371人參與
# 實(shí)習(xí)生應(yīng)該準(zhǔn)時(shí)下班嗎 #
202411次瀏覽 1320人參與
# 你覺(jué)得技術(shù)面多長(zhǎng)時(shí)間合理? #
86514次瀏覽 647人參與
# 國(guó)企和大廠硬件兄弟怎么選? #
120443次瀏覽 1656人參與
# 入職第五天,你被拉進(jìn)了幾個(gè)工作群 #
18290次瀏覽 80人參與
# 工作時(shí)那些社死瞬間 #
24021次瀏覽 176人參與
# 假如我穿越到了媽媽的18歲 #
6676次瀏覽 43人參與
# 你遇到過(guò)哪些神仙同事 #
72924次瀏覽 652人參與
# 請(qǐng)用你的專業(yè)向媽媽表白 #
12123次瀏覽 88人參與
# 技術(shù)轉(zhuǎn)行的心路歷程 #
47849次瀏覽 665人參與
# 你想吐槽公司的哪些規(guī)定 #
15171次瀏覽 58人參與
??途W(wǎng)
牛客企業(yè)服務(wù)