hdu Select 5101

来源:互联网 发布:办公软件2003官方 编辑:程序博客网 时间:2024/05/20 20:48
import java.util.Arrays;import java.util.Scanner;//求反面public class Main {    public static int MAX_LENGTH = 1001;public static int[] v;public static int[] iq;static {v = new int[MAX_LENGTH*MAX_LENGTH];iq = new int[MAX_LENGTH];}public static long search(int[] value , int m ,int n ,int val ,int idx){int l = idx , r = m ;while(l<r){int mid =( l + r )>>1;if((long)value[mid] + val > n){r = mid;}else{l = mid+1;}}return m - l;}public static long match(int[] value, int m ,int n){long result = 0;Arrays.sort(value,0,m);for(int i = 0; i < m-1 ;i++){result += search(value, m , n , value[i] , i+1);}return result;}    public static void main(String[] args) {            Scanner in = new Scanner(System.in);        int cas = in.nextInt();    while(cas-- >0){        long ans = 0;    int n = in.nextInt();    int k = in.nextInt();    int length = 0;        for(int i = 0 ; i < n ; i++){        int m = in.nextInt();    iq = new int[m];    for(int j = 0 ; j < m ;j++){    iq[j] = in.nextInt();    v[length++] = iq[j];    }    ans -= match(iq,m,k);    }    ans += match(v,length,k);        System.out.println(ans);    }           }}

0 0
原创粉丝点击