递增三元组、日志统计(参照蓝桥杯网课)

张开发
2026/5/21 20:08:40 15 分钟阅读
递增三元组、日志统计(参照蓝桥杯网课)
题目描述0递增三元组 - 蓝桥云课给定三个整数数组A[A1,A2,⋯AN]A[A1​,A2​,⋯AN​],B[B1,B2,⋯BN]B[B1​,B2​,⋯BN​],C[C1,C2,⋯CN]C[C1​,C2​,⋯CN​]请你统计有多少个三元组 (i,j,k)(i,j,k) 满足1≤i,j,k≤N1≤i,j,k≤N;AiBjCkAi​Bj​Ck​。输入描述第一行包含一个整数 NN。第二行包含 NN 个整数 A1,A2,⋯ANA1​,A2​,⋯AN​。第三行包含 NN 个整数 B1,B2,⋯BNB1​,B2​,⋯BN​。第四行包含 NN 个整数 C1,C2,⋯CNC1​,C2​,⋯CN​。其中1≤N≤105,0≤Ai,Bi,Ci≤1051≤N≤105,0≤Ai,Bi,Ci≤105。输出描述输出一个整数表示答案。输入输出样例示例输入3 1 1 1 2 2 2 3 3 3输出27运行限制最大运行时间2s最大运行内存: 256M代码import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Main { static int N100010,idx0; static int a[]new int[N]; static int b[]new int[N]; static int c[]new int[N]; //qq public static void main(String []args) throws IOException{ //System.out.println(1); BufferedReader brnew BufferedReader(new InputStreamReader(System.in)); int nInteger.parseInt(br.readLine()); String g[]br.readLine().split( ); for (int i 0; i n; i) { a[i]Integer.parseInt(g[i]); } gbr.readLine().split( ); for (int i 0; i n; i) { b[i]Integer.parseInt(g[i]); } gbr.readLine().split( ); for (int i 0; i n; i) { c[i]Integer.parseInt(g[i]); } Arrays.sort(a,0,n); Arrays.sort(b,0,n); Arrays.sort(c,0,n); int p0,q0;//分别指向a和b long res0; for (int i 0; i n; i) {//遍历数组b while(pn a[p]b[i])p; while(qn c[q]b[i])q; res(long)p*(n-q); } System.out.println(res); } }日志统计题目描述0日志统计 - 蓝桥云课小明维护着一论坛。现在他收集了一份点赞日志日志共有 NN 行。其中每一行的格式是ts idts id表示在 tsts 时刻编号 idid 的帖子收到一个赞。现在小明想统计有哪些帖子曾经是热帖。如果一个帖子曾在任意一个长度为 DD 的时间段内收到不少于 KK 个赞小明就认为这个帖子曾是热帖。具体来说如果存在某个时刻 T 满足该帖在 [T,TD)[T,TD) 这段时间内(注意是左闭右开区间)收到不少于 KK 个赞该帖就曾是热帖。给定日志请你帮助小明统计出所有曾是热帖的帖子编号。输入描述输入格式第一行包含三个整数 N,D,KN,D,K。以下 N 行每行一条日志包含两个整数 ts 和 id。其中1≤K≤N≤105,0≤ts≤105,0≤id≤1051≤K≤N≤105,0≤ts≤105,0≤id≤105。输出描述按从小到大的顺序输出热帖 idid。每个 idid 一行。输入输出样例示例输入7 10 2 0 1 0 10 10 10 10 1 9 1 100 3 100 3输出1 3运行限制最大运行时间1s最大运行内存: 256M代码import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Set; import java.util.TreeSet; public class Main { static int N100010,idx0; static Node node[]new Node[N]; static int cnt[]new int[N]; //qq public static void main(String []args) throws IOException{ //System.out.println(1); BufferedReader brnew BufferedReader(new InputStreamReader(System.in)); //int nInteger.parseInt(br.readLine()); String g[]br.readLine().split( ); int nInteger.parseInt(g[0]),dInteger.parseInt(g[1]),kInteger.parseInt(g[2]); for (int i 0; i n; i) { gbr.readLine().split( ); int tsInteger.parseInt(g[0]),idInteger.parseInt(g[1]); node[idx]new Node(ts,id); } Arrays.sort(node,0,idx,(a,b)-a.t-b.t); SetInteger setnew TreeSet(); for (int i 0,j0; i idx; i) {//i 枚举窗口左端点 while(j idx node[j].t-node[i].td ) {//j 一直往右扩直到时间超出 D cnt[node[j].id]; j; } if(cnt[node[i].id]k)set.add(node[i].id); cnt[node[i].id]--; } StringBuilder stringBuildernew StringBuilder(); for(int id:set){ stringBuilder.append(id\n); } System.out.println(stringBuilder.toString()); } static class Node{ int t; int id; public Node() {} public Node(int t,int id) { this.tt; this.idid; } } }

更多文章