PAT甲级题目翻译+答案 AcWing(贪心)
生活随笔
收集整理的這篇文章主要介紹了
PAT甲级题目翻译+答案 AcWing(贪心)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1033 To Fill or Not to Fill (25 分)
題意 :
- 坐標軸上有n個加油站,給出每個加油站的位置和油價格,給出總路程長度和油箱最大容量,以及每升油平均跑多少路,最開始油箱是空的
- 如果到不了終點,輸出最多能到達多少路程;如果能到達終點,輸出最低價格
思路 :
- 按照坐標給每個加油站排序,記得加上終點
- 如果第一個加油站不在起始點,return
- 對于當前的加油站,要找到它 范圍內(油箱滿) 中第一個比當前便宜的;如果沒有,就找范圍內相對最便宜的;如果也沒有,說明無法到達終點。可以統一為尋找變量k,出來后再分類
- 記錄當前油量
語法 :
- for (int i = 0; i < n;)
1037 Magic Coupon (25 分)
題意 :
- 給兩個序列,每個序列中每個數只能被使用一次(可以不使用),求每次從兩個序列中分別挑出一個數相乘之和最大值
思路 :
- 雙指針,不需要四個容器,只需要兩個容器即可
- for循環是滿足條件才會進入到循環內
1067 Sort with Swap(0, i) (25 分)
題意 :
- 給一個0-(n-1)的序列,每次可以將數字0與其他任意數交換,求最少交換次數使得達到升序效果
思路 :
- 先轉換成圖論問題,0的位置在1,所以從0向1連一條邊,1的位置在3,所以1向3連一條邊,3的位置在4,4的位置在0,2的位置在2自己和自己連一條邊,即,如果i在p[i]位置上,就i向p[i]連一條邊,這樣就可以轉化成一個圖論問題,且每一個數只會在一個位置上,只會有一個出邊,且每個位置上只會有一個數,所以每個點只會有一個入邊,即,每個點只會有一個出邊和入邊,也就是說每個點的出度和入度都是1,這樣的圖是很特殊的,必然是一堆環,每個點必然在環中;我們的目標就是讓0在0位置,1在1位置,即讓這堆環變成n個自環;
- 現在看每個操作的效果,每次交換的數必然和0在同一個環或者不在同一個環,如果在同一個環內部,比如把0和5交換,0在3的位置上,5在7的位置上,那么0就在7的位置上,5就在3的位置上,發現,如果把0和環內的一個點交換,這個環就會破裂成兩個環;如果把0和3交換,那么就是3指向0的指針,也就是3自環,0指向5,這樣就是變成一個自環和另一個環;
- 如果把0和另外一個環交換,比如0和8交換,就會形成一個更大的環;即,如果把0和另外一個環內交換,就是把兩個環合并;如果0和環內的交換,就會把這個環破開
- 總結,一共有兩種操作,和環內與和環外;顯然,環外點必然在某個時刻和0交換;和環內點交換的操作也可以分為兩種,一個是與0的下一個點交換,會把下一個點變成自環,第二種是與非下一個點交換,會把環破成兩個環,會發現這樣的話,如果想變成自環,早晚還是要合并回來,所以可以發現,環內的第二種操作必然是不做的;即,對于環內的點,必然只與0的下一個點交換
- 輸入時,記錄每個值的位置,直到每個點都自環前,將0所在環所有點都自環,直到p[0]==0也就是0也自環,這個環就全部自環了,找到第一個沒有自環的點,如果能找到,將0與這個點交換,合并環
- 時間復雜度O(N)O(N)O(N)
1125 Chain the Ropes (25 分)
題意 :
- 每次串連后,原來兩段繩子的長度就會減半。
- 給定 N 段繩子的長度,你需要找出它們能串成的繩子的最大長度。
思路 :
- 貪心從小到大選即可
語法 :
- 由于每次都是現有的一段加上一個新的一段除以2,所以每次改變a[0]即可
總結
以上是生活随笔為你收集整理的PAT甲级题目翻译+答案 AcWing(贪心)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT甲级题目翻译+答案 AcWing(
- 下一篇: 王道计算机考研 数据结构 (图-上)