【每日一题】蓝桥杯历年真题题解 -装饰珠


1、Java B组
import java.io.*;import java.util.*;class InputReader{private final static int BUF_SZ = 65536;BufferedReader in;StringTokenizer tokenizer;public InputReader(InputStream in) {super();this.in = new BufferedReader(new InputStreamReader(in),BUF_SZ);tokenizer = new StringTokenizer("");}private String next() {while (!tokenizer.hasMoreTokens()) {try {tokenizer = new StringTokenizer(in.readLine());} catch (IOException e) {throw new RuntimeException(e);}}return tokenizer.nextToken();}public int nextInt() {return Integer.parseInt(next());}}public class Main {private static int m;private static int x;private static int ans;private static int[] sum = new int[5];private static int[] dp = new int[310];private static Vector<Vector<Integer>> vec1 = new Vector<Vector<Integer>>();private static Vector<Vector<Integer>> vec2 = new Vector<Vector<Integer>>();private static Vector<Vector<Integer>> vec3 = new Vector<Vector<Integer>>();private static Vector<Vector<Integer>> vec4 = new Vector<Vector<Integer>>();private static Vector<Vector<Integer>> vec = null;private static int calc() {int V = 0;for (int l = 4; l >= 1; l--) {V += sum[l];vec = null;if(l == 1) vec = vec1;else if(l == 2) vec = vec2;else if(l == 3) vec = vec3;else if(l == 4) vec = vec4;for (Vector<Integer> i : vec) {for (int k = V; k >= 0; k--) {for (int j = 0; j < i.size(); j++) {int w = j + 1;int v = i.get(j);if (k - w >= 0) {dp[k] = Math.max(dp[k], dp[k - w] + v);}else break;}}}}for (int i = 0; i <= V; i++) {ans = Math.max(ans, dp[i]);}return ans;}public static void main(String[] args) {InputReader cin = new InputReader(System.in);for (int i = 1; i <= 6; i++) {int n = cin.nextInt();for (int j = 1; j <= n; j++) {x = cin.nextInt();sum[x]++;}}m = cin.nextInt();for (int i = 1; i <= m; i++) {int l = cin.nextInt(), p = cin.nextInt();Vector<Integer> b = new Vector<Integer>();for (int j = 1; j <= p; j++) {x = cin.nextInt();b.add(x);}if(l == 1) vec1.add(b);else if(l == 2) vec2.add(b);else if(l == 3) vec3.add(b);else if(l == 4) vec4.add(b);}System.out.println(calc());}}
2、Python组
import osimport sysvec1 = []vec2 = []vec3 = []vec4 = []vec = []dp = [0] * 301sum = [0] * 6for i in range(1, 7):mp = list(map(int, input().split()))for i in range(1, len(mp)):sum[mp[i]] += 1m = int(input())for i in range(1, m + 1):mp = list(map(int, input().split()))b = []for j in range(2, len(mp)):x = mp[j]b.append(x)if mp[0] == 1:vec1.append(b)if mp[0] == 2:vec2.append(b)if mp[0] == 3:vec3.append(b)if mp[0] == 4:vec4.append(b)V = 0cnt = 0for l in range(4, 0, -1):V += sum[l]if l == 1:vec = vec1elif l == 2:vec = vec2elif l == 3:vec = vec3elif l == 4:vec = vec4for i in vec:k = int(V)while k >= 0:for j in range(0, len(i)):if k - j - 1 >= 0:if dp[k - j - 1] + i[j] > dp[k]:dp[k] = dp[k - j - 1] + i[j]else:breakk -= 1ans = 0for h in range(0, V + 1):ans = max(ans, dp[h])print(ans)添加 家长论坛微信


全部 0条评论