日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

蓝桥练习题题解——作物杂交——Java

發布時間:2024/8/26 java 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 蓝桥练习题题解——作物杂交——Java 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作物雜交(難度較高,不應該給大專的出啊)

時間限制:1.0s ? 內存限制:256.0MB

問題描述

作物雜交是作物栽培中重要的一步。已知有?N?種作物(編號?1?至?N?),第?i?種作物從播種到成熟的時間為?Ti。
作物之間兩兩可以進行雜交,雜交時間取兩種中時間較長的一方。如作物?A?種植時間為?5?天,作物?B?種植時間為?7?天,則?AB?雜交花費的時間為?7?天。
作物雜交會產生固定的作物,新產生的作物仍然屬于?N?種作物中的一種。

初始時,擁有其中?M?種作物的種子(數量無限,可以支持多次雜交)。同時可以進行多個雜交過程。
求問對于給定的目標種子,最少需要多少天能夠得到。

如存在?4?種作物?ABCD,各自的成熟時間為?5?天、7?天、3?天、8?天。初始擁有?AB?兩種作物的種子,目標種子為?D,已知雜交情況為?A×B→C,A×C→D。
則最短的雜交過程為:

第?1?天到第?7?天(作物?B?的時間),A×B→C。

第?8?天到第?12?天(作物?A?的時間),A×C→D。

花費?12?天得到作物?D?的種子。

輸入格式

輸入的第?1?行包含?4?個整數?N,M,K,T,N?表示作物種類總數(編號?1?至?N),M?表示初始擁有的作物種子類型數量,K?表示可以雜交的方案數,T?表示目標種子的編號。

第?2?行包含?N?個整數,其中第?i?個整數表示第?i?種作物的種植時間?Ti(1≤Ti≤100)。

第?3?行包含?M?個整數,分別表示已擁有的種子類型?Kj(1≤Kj≤M),Kj?兩兩不同。

第?4?至?K+3?行,每行包含?3?個整數?A,B,C,表示第?A?類作物和第?B?類作物雜交可以獲得第?C?類作物的種子。

輸出格式

輸出一個整數,表示得到目標種子的最短雜交時間。

樣例輸入

6 2 4 6 5 3 4 6 4 9 1 2 1 2 3 1 3 4 2 3 5 4 5 6

樣例輸出

16

樣例說明

第?1?天至第?5?天,將編號?1?與編號?2?的作物雜交,得到編號?3?的作物種子。

第?6?天至第?10?天,將編號?1?與編號?3?的作物雜交,得到編號?4?的作物種子。

第?6?天至第?9?天,將編號?2?與編號?3?的作物雜交,得到編號?5?的作物種子。

第?11?天至第?16?天,將編號?4?與編號?5?的作物雜交,得到編號?6?的作物種子。

總共花費?16?天。

評測用例規模與約定

對于所有評測用例,1≤N≤2000,?2≤M≤N,?1≤K≤100000,?1≤T≤N, 保證目標種子一定可以通過雜交得到。

題解:

package demo;import java.awt.Point; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.StreamTokenizer; import java.util.ArrayList; import java.util.Arrays; import java.util.List;public class demo {static int aa[], dp[];static List<Point> bh[];public static void main(String[] args) throws IOException {StreamTokenizer x = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out));x.nextToken();int n = (int) x.nval;x.nextToken();int m = (int) x.nval;x.nextToken();int k = (int) x.nval;x.nextToken();int t = (int) x.nval;aa = new int[n + 1];dp = new int[n + 1];bh = new List[n + 1];Arrays.fill(dp, Integer.MAX_VALUE);int bb[] = new int[m + 1];for (int i = 1; i <= n; i++) {x.nextToken();aa[i] = (int) x.nval;bh[i] = new ArrayList<Point>();}for (int i = 1; i <= m; i++) {x.nextToken();bb[i] = (int) x.nval;dp[bb[i]] = 0;}for (int i = 0; i < k; i++) {x.nextToken();int xx = (int) x.nval;x.nextToken();int yy = (int) x.nval;x.nextToken();int nn = (int) x.nval;bh[nn].add(new Point(xx, yy));}out.println(dfs(t));out.flush();}public static int dfs(int n) {if (dp[n] != Integer.MAX_VALUE)return dp[n];List<Point> p = bh[n];for (int i = 0; i < p.size(); i++) {int x = p.get(i).x, y = p.get(i).y;dp[n] = Math.min(dp[n], Math.max(dfs(x), dfs(y)) + Math.max(aa[x], aa[y]));}return dp[n];} }

?

總結

以上是生活随笔為你收集整理的蓝桥练习题题解——作物杂交——Java的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。