1、 1 算法训练 编号: ALGO-1 题目: 区间 k 大数查询 列 关键字:排序 查找 类型:普通试题 问题描述 给定一个序列,每次询问序列中第 l 个数到第 r 个数中第 K 大的数是哪个。 输入格式 第一行包含一个数 n,表示序列长度。 第二行包含 n 个正整数,表示给定的序列。 第三个包含一个正整数 m,表示询问个数。 接下来 m 行,每行三个数 l,r,K,表示询问序列从左往右第 l 个数到第 r 个数中,从大往小第K 大的数是哪个。序列元素从 1 开始标号。 输出格式 总共输出 m 行,每行一个数,表示询问的答案。 样例输入 5 1 2 3 4 5 2 1 5 2 2 3 2 样例
2、输出 4 2 数据规模与约定 对于 30%的数据, n,m0; i-) int a = readInt(); int b = readInt(); int c = readInt(); int tn = new intb-a+1; for(int j=0; j57); for(;(i i=in.read() sum = sum*10 + (i return sum; 3 编号: ALGO-2 题目: 最大最小公倍数 关键字:贪心 类型:普通试题 问题描述 已知一个正整数 N,问从 1N 中任选出三个数,他们的最小公倍数最大可以为多少。 输入格式 输入一个正整数 N。 输出格式 输出一个整数,表
3、示你找到的最小公倍数。 样例输入 9 样例输出 504 数据规模与约定 1 1) for(i=1;i 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 += M
4、ath.max(dpu0, dpu1); dpv1 += dpu0; void run() throws IOException int n = cin.nextInt(); for (int i = 1; i q=new LinkedList(); static boolean inq; public static void main(String args) throws IOException int i; BufferedReader bfr=new BufferedReader(new InputStreamReader(System.in); String str = bfr.re
5、adLine(); String s = str.split(“s“); n=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); nexti=firstui; firstui=i; spfa(1); for(i=2;in;i+) System.out.println(di); public static void spfa(int s) int i,x; for(i=2;in;i+) di=Integer.MAX_VALUE; q.offer(s); while(!q.isEmpty()