题意:
数轴上N个点,分为K种。可以有多个点出现在同一个位置上。需要一个最短区间使里面有K种点,求这个区间长度。N≤1000000
题解:
先排序,然后用两个指针分别指向区间两个端点,每次l指针往左移并更新答案直到区间里没有K种点,再把r指针向右移直到区间里有K种点,更新一下答案。
代码:
1 #include2 #include 3 #include 4 #define inc(i,j,k) for(int i=j;i<=k;i++) 5 #define INF 0x3fffffff 6 using namespace std; 7 8 struct ball{ int a,b;}; ball balls[1000500]; 9 bool cmp(ball a,ball b){ return a.a
20160602