import java.util.Scanner; //这题0AC??? 到底哪个边界卡住了????? //这道题其实很简单,一个一维数组,每次特性区间个数加进去(可能区间有覆盖,这个先提交看看有没有这个实例,如果有每次使用boolean判别,当前特性在该位置是否已经加入过了即可) //最终只需要判断个数是不是==m即可 public class Main { public static void main(String[] args) { Scanner s=new Scanner(System.in); int T=s.nextInt(); int counts[]=new int[T]; String[] strs=new String[T]; int index=0; while (T-->0){ int n=s.nextInt();//奶牛个数 int m=s.nextInt();//特性个数 int orM=m; int[] arr=new int[n]; while (orM-->0){ boolean[] isVisited=new boolean[n]; int k=s.nextInt(); while (k-->0){ int l=s.nextInt()-1; int r=s.nextInt()-1; l=l<0?0:l; r=r<0?0:r; l=l>=n?n-1:l; r=r>=n?n-1:r; for(int i=l;i<=r;i++){ if(isVisited[i]){ i++; continue; } isVisited[i]=true; arr[i]+=1; } } } StringBuilder sb=new StringBuilder(); //int count=0; for (int i = 0; i < arr.length; i++) { if(arr[i]==m){ counts[index]++; sb.append(i+1+" "); } } if(counts[index]!=0) strs[index]=sb.substring(0,sb.length()-1); index++; } for (int i = 0; i < counts.length; i++) { System.out.println(counts[i]); System.out.println(strs[i]); } } } /* 2 10 2 3 1 2 4 5 8 8 2 1 4 6 8 10 2 3 1 2 4 5 8 8 2 1 4 6 8 */ 我想问一下大佬,百度笔试第二题,我这道题有一点问题吗?? 第一时间就想出来这个想法,感觉一点问题都没有,怎么0AC????? 心态都没了
全部评论
(8) 回帖