【DP】【尺取法】尺取法总结

· · 个人记录

算法介绍

模板分析

Sum

#include<cstdio>
using namespace std;
const int MAXN=100010;
int n,m;
int a[MAXN];
inline void read()
{
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++)
    scanf("%d",&a[i]);
}
int main()
{
    read();
    for(int i=1,j=n;i<=n;i++)//初始化j在最右,保证获取到第一个解 
    {
        while(j-1>i&&a[i]+a[j-1]>=m)j--;//i增大时j减小,预判是否满足条件 

        if(i<j&&a[i]+a[j]==m)//确认条件以防越界
        printf("%d %d\n",a[i],a[j]);
    }
    return 0;
}