HihoCoder - 1722-最小差值(尺取)

题目链接

尺取法

尺取法的含义大概就是取一段区间,然后区间长度不变,每次区间左移右移

因为只移动一位,所以每次只用更新一个点的信息

而这道题的思路就是

将所有的数放在一起排序

每次取出一个最小的数,然后判断该数所在的行是否已经出现过数,如果没有

记录一下,然后更新该数所在行的最大值

当每一行都有数时,表示已经每一行都选择了一个数

此时求最小值

然后再取数的时候,把最小的数弹出,继续向里面加数,直到所有的行都又选了一个数

再次更新最小值

直到全部数取完

#include
using namespace std;
const int maxn=200000+10,inf=0x3f3f3f3f;
struct node
{
    int x;
    int num;
} sz[maxn];
bool vis[maxn];
int man[maxn];
bool cmp(node a,node b)
{
    return a.numma)
                {
                    ma=man[j];
                    may=j;
                }
            }
            if(ma-mi



你可能感兴趣的:(水题模拟,算法技巧法)