rt
在考场想想了个奇怪贪心,ccf数据都过了,求hack/证明
大体思路是把每辆能被检测到的车超速区间记录下来
按照左端点排序
从小到大遍历每个区间,同时维护一个最小的右端点
如果第i个区间能和前面的一同找到一个摄像头使其能被检测到,就加入前面的区间一块
否则新开一个
关键代码:
int ans2 = 0;
int smallr = 0x3f3f3f3f;
for(int i = 1;i <= n;i++)
{
if(!range[i].cansee) continue;
int left = lower_bound(p + 1, p + 1 + m, range[i].l) - p;
if(p[left] <= min(smallr, range[i].r)) smallr = min(smallr, range[i].r);
else ans2++, smallr = range[i].r;
}
if(ans1 == 0) printf("%d\n", m);
else printf("%d\n", m - (ans2 + 1));