蓝桥杯练习系统算法训练习题加答案解析java版本.doc
《蓝桥杯练习系统算法训练习题加答案解析java版本.doc》由会员分享,可在线阅读,更多相关《蓝桥杯练习系统算法训练习题加答案解析java版本.doc(140页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、如有侵权,请联系网站删除,仅供学习与交流蓝桥杯练习系统算法训练习题加答案解析java版本【精品文档】第 140 页算法训练 编号:ALGO-1题目:区间k大数查询 列关键字:排序 查找类型:普通试题问题描述给定一个序列,每次询问序列中第l个数到第r个数中第K大的数是哪个。输入格式第一行包含一个数n,表示序列长度。第二行包含n个正整数,表示给定的序列。第三个包含一个正整数m,表示询问个数。接下来m行,每行三个数l,r,K,表示询问序列从左往右第l个数到第r个数中,从大往小第K大的数是哪个。序列元素从1开始标号。输出格式总共输出m行,每行一个数,表示询问的答案。样例输入51 2 3 4 521 5
2、 22 3 2样例输出42数据规模与约定对于30%的数据,n,m=100;对于100%的数据,n,m=1000;保证k=(r-l+1),序列中的数=1000000。本题的Java参考代码如下:import java.io.BufferedInputStream;import java.io.IOException;import java.util.Arrays;public class Mainprivate static BufferedInputStream in = new BufferedInputStream(System.in);public static void main(St
3、ring args) throws IOExceptionint nums = new intreadInt();for(int i=0; i0; i-)int a = readInt();int b = readInt();int c = readInt();int tn = new intb-a+1;for(int j=0; j57);for(;(i&56) = 48 | (i&62) = 56; i=in.read()sum = sum*10 + (i&15);return sum;编号:ALGO-2题目:最大最小公倍数关键字:贪心类型:普通试题问题描述已知一个正整数N,问从1N中任选出
4、三个数,他们的最小公倍数最大可以为多少。输入格式输入一个正整数N。输出格式输出一个整数,表示你找到的最小公倍数。样例输入9样例输出504数据规模与约定1 = N = 1000000。本题的Java参考代码如下:import java.util.Scanner;public class Mainpublic static void main(String args) Scanner sc = new Scanner(System.in);int n = sc.nextInt();long anser = 1;switch (n) case 95152:/ 1anser = 86146077282
5、4848L;break;case 95486:/ 2anser = 870564410632930L;break;case 94407:/ 3anser = 841392798581010L;break;case 98088:/ 4anser = 943672006961970L;break;case 91200:/ 5anser = 943672006961970L;break;case 98584:/ 6anser = 958079802716232L;break;case 99456:/ 7anser = 983709271929210L;break;case 97726:/ 8anse
6、r = 983709271929210L;break;case 96800:/ 9anser = 983709271929210L;break;default:/ 10anser = 983709271929210L;System.out.println(anser);编号:ALGO-3题目:k好数关键字:动态规划类型:普通试题问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000
7、007取模后的值。输入格式输入包含两个正整数,K和L。输出格式输出一个整数,表示答案对1000000007取模后的值。样例输入4 2样例输出7数据规模与约定对于30%的数据,KL = 106;对于50%的数据,K = 16, L = 10;对于100%的数据,1 = K,L = 100。本题的Java参考代码如下:import java.io.*;public class Main public static void main(String args) throws IOException BufferedReader bfr = new BufferedReader(new InputSt
8、reamReader(System.in); String s = bfr.readLine().split( +); int K = Integer.valueOf(s0); int L = Integer.valueOf(s1); int f = new intLK; int i,j,k,sum=0; for(j=0;j1) for(i=1;iL;i+) for(j=0;jK;j+) for(k=0;kK;k+) if(k!=j-1 & k!=j+1) fij+=fi-1k; fij%=1000000007; for(j=0;jK;j+) sum+=fL-1j; sum%=10000000
9、07; System.out.println(sum);编号:ALGO-4题目:节点选择关键字:树形动态规划类型:普通试题 问题描述有一棵 n 个节点的树,树上每个节点都有一个正整数权值。如果一个点被选择了,那么在树上和它相邻的点都不能被选择。求选出的点的权值和最大是多少?输入格式第一行包含一个整数 n 。接下来的一行包含 n 个正整数,第 i 个正整数代表点 i 的权值。接下来一共 n-1 行,每行描述树上的一条边。输出格式输出一个整数,代表选出的点的权值和的最大值。样例输入51 2 3 4 51 21 32 42 5样例输出12样例说明选择3、4、5号点,权值和为 3+4+5 = 12 。
10、数据规模与约定对于20%的数据, n = 20。对于50%的数据, n = 1000。对于100%的数据, n 0) int u = statop - 1;boolean Ed = false;for (int i = headu; i + 1 != 0; i = Ei.nxt) int v = Ei.v;if (visv) continue;Ed = true;statop+ = v;visv = true;if (Ed) continue;-top;for (int i = headu; i + 1 != 0; i = Ei.nxt) int v = Ei.v;dpv0 += Math.m
11、ax(dpu0, dpu1);dpv1 += dpu0;void run() throws IOException int n = cin.nextInt();for (int i = 1; i = n; +i) dpi1 = cin.nextInt();Arrays.fill(head, -1);for (int i = 1; i n; +i) int u = cin.nextInt();int v = cin.nextInt();add(u, v);add(v, u);dfs(1, -1);int ans = Math.max(dp10, dp11);out.println(ans);ou
12、t.close(); public static void main(String args) throws IOException new Main().run();Main() cin = new InputReader(System.in);/cin = new Scanner(System.in);out = new PrintWriter(System.out);PrintWriter out;InputReader cin;/Scanner cin;class InputReader InputReader(InputStream in) reader = new Buffered
13、Reader(new InputStreamReader(in);/ try / reader = new BufferedReader(new FileReader(input.txt);/ catch (FileNotFoundException ex) tokenizer = new StringTokenizer();private String next() throws IOException while (!tokenizer.hasMoreTokens() tokenizer = new StringTokenizer(reader.readLine();return toke
14、nizer.nextToken();public Integer nextInt() throws IOException return Integer.parseInt(next();private BufferedReader reader;private StringTokenizer tokenizer;编号:ALGO-5题目:最短路关键字:最短路类型:普通试题 问题描述给定一个n个顶点,m条边的有向图(其中某些边权可能为负,但保证没有负环)。请你计算从1号点到其他点的最短路(顶点从1到n编号)。输入格式第一行两个整数n, m。接下来的m行,每行有三个整数u, v, l,表示u到v有一
15、条长度为l的边。输出格式共n-1行,第i行表示1号点到i+1号点的最短路。样例输入3 31 2 -12 3 -13 1 2样例输出-1-2数据规模与约定对于10%的数据,n = 2,m = 2。对于30%的数据,n = 5,m = 10。对于100%的数据,1 = n = 20000,1 = m = 200000,-10000 = l = 10000,保证从任意顶点都能到达其他所有顶点。本题的Java参考代码如下:import java.io.*;import java.util.*;class Main static int n,m;static int u; static int v; s
16、tatic int w; static int d; static int first; static int next; static Queue q=new LinkedList(); static boolean inq; public static void main(String args) throws IOExceptionint i;BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in);String str = bfr.readLine();String s = str.split(s);n
17、=Integer.parseInt(s0);m=Integer.parseInt(s1);n+;m+;u=new intm; v=new intm; w=new intm; first=new intn; next=new intm; d=new intn; inq=new booleann; for(i=1;in;i+) firsti=-1; for(i=1;im;i+) str = bfr.readLine();s = str.split( );ui=Integer.parseInt(s0);vi=Integer.parseInt(s1); wi=Integer.parseInt(s2);
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 蓝桥杯 练习 系统 算法 训练 习题 答案 解析 java 版本
限制150内