P2629【单调队列】 好消息坏消息 |
您所在的位置:网站首页 › 好消息和坏消息段子 › P2629【单调队列】 好消息坏消息 |
好消息坏消息超级入口~ 考虑他可以从任意一个节点开始,那么我们主要是先做一个环形图。 而后做一个前缀和。 假设我们从第a1,a2,a3开始 从b1,b2,b3结束。 比如 -3 5 1 2 -3 5 1 2 会从-3开始 从2结束 ,从5开始 从-3结束。 那么我们想要做的是用一次开始和结束之间最小的一次s[i],比如在x处结束。我们要保证s[i]-s[x-n]>0这样就保证了在此期间前缀和不会出现负值。满足题意 这样当没有到达b1的时候我们就可以让l指针不断的加,而且当我们新加入的值比队列右侧的值是要小的情况下,就把队列最右侧的值都pop出来。 前缀和为 :-3 2 3 5 2 7 8 9 下列为推导过程: 为了理解我写的是值,实际存储的是下标。 -3 -3 2 -3 2 3 -3 2 3 5 (5的下标-n+1>0)且 5的下标为4 4-4=0 , -3-0=-30 then l++) 2 2-(-3)=5 ans++; 2 7 2-2=0 ans++ 2 7 8 2-3 cin>>a[i]; a[i+n]=a[i]; } for(int i=1;i int T=1; // cin>>T; for(int index=1;index |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |