大佬帮看下我的代码有啥问题没?也是贪心的思想,不过并没有基于算导的那些公式;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;
public class Main {
static class P implements Comparable<P>{
int a, b;
P(int c, int d) {
a = c;
b = d;
}
@Override
public int compareTo(P o) {
return a - o.a;
}
public String toString() {
return a + "," + b;
}
}
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int n = s.nextInt();
int m = s.nextInt();
List<P> list = new ArrayList<P>();
for (int i=0; i<n; i++) {
int a = s.nextInt(), b = s.nextInt();
if (a > b) b += m;
list.add(new P(a, b));
}
Collections.sort(list);
//System.out.println(list);
int cnt = 0;
List<P> r = new ArrayList<P>();
for (int i=0; i<list.size(); i++) {
if (r.size() == 0) { //第一个直接加入
cnt ++;
r.add(list.get(i));
} else if (list.get(i).a < r.get(r.size()-1).b) { //如果当前区间和已经加入的区间冲突那么就不加入
//System.out.println(list.get(i) + "," + r.get(r.size()-1));
continue;
} else {
r.add(list.get(i));
cnt ++;
}
}
System.out.println(cnt);
s.close();
}
}
最后通过了33.33%,我也没注意到只能是当天收看这个条件,是不是还有其他问题?求教。