51,724
社区成员




动态规划:
状态表示:f[i][j] 第i个步骤在第j组的时间
属性: 时间的min
状态转移: f[i][j] = Math.max(f[i - 1][j] , f[i - 1][j - 1]) j = 第一组时,f[i][j] = Math.max(f[i - 1][j] , f[i - 1][m] 第m组可选择第1组
用Scanner读入数据会出现内存溢出
package luogu210;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StreamTokenizer;
public class Main{
static int N = 2010;
static int[][]days = new int[N][N];
static int[][] dp = new int[N][N];
public static void main(String[] args) throws IOException {
StreamTokenizer sc = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
sc.nextToken();
int n = (int)sc.nval;
sc.nextToken();
int m = (int)sc.nval;
for(int i = 1; i <= m; i ++)
for(int j = 1; j <=n; j ++) {
sc.nextToken();
days[j][i] = (int) sc.nval;
}
for(int i = 1; i <= n; i ++)
for(int j = 1; j <= m; j ++)
dp[i][j] = Math.min(dp[i - 1][j], j == 1 ? dp[i - 1][m] : dp[i - 1][j - 1]) + days[i][j];
int res = Integer.MAX_VALUE;
for(int i = 1;i <= m; i ++)
res = Math.min(res, dp[n][i]);
System.out.println(res);
}
}
package luogu210;
import java.util.Arrays;
import java.util.Scanner;
public class Main {
static int N = 1000010;
static int[] p = new int[N];
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int d = sc.nextInt();
for(int i = 0; i < n; i ++) {
p[i] = sc.nextInt();
}
Arrays.sort(p,0,n);
int res = 0;
for(int i = 0; i < n - 1 ; i ++) {
for(int j = i + 1; j < n; j ++) {
if((p[j] - p[i]) <= d)
res ++;
else
break;
}
}
System.out.println(res);
}
}