【tyvj1313】烽火传递(单调队列优化dp)

题目:

我是超链接

题解:

运用单调队列优化dp,结尾大的话就t出去!

代码:

#include 
#include 
#include 
using namespace std;
int f[1000005],a[1000005],que[1000005];
int main()
{
	int n,m,i,j,head=0,tail=0;
	scanf("%d%d",&n,&m);
	for (i=1;i<=n;i++) scanf("%d",&a[i]);
	memset(f,0x7f,sizeof(f));
	f[0]=0;
	for (i=1;i<=n;i++) 
	{
		while (que[head]f[i] && head<=tail) tail--;
		que[++tail]=i;
	}
	int ans=100000000;
	for (i=n-m+1;i<=n;i++) 
	  ans=min(ans,f[i]);
	printf("%d",ans);
}


你可能感兴趣的:(dp)