{"trustable":false,"sections":[{"title":"题目描述","value":{"format":"MD","content":"**原题来自:USACO 2011 Open Gold**\n\n在一年前赢得了小镇的最佳草坪比赛后,FJ 变得很懒,再也没有修剪过草坪。现在,新一轮的最佳草坪比赛又开始了,FJ 希望能够再次夺冠。 \n\n然而,FJ 的草坪非常脏乱,因此,FJ 只能够让他的奶牛来完成这项工作。FJ 有 $N$ 只排成一排的奶牛,编号为 $1$ 到 $N$。每只奶牛的效率是不同的,奶牛 $i$ 的效率为 $E_i$。 \n\n靠近的奶牛们很熟悉,如果 FJ 安排超过 $K$ 只连续的奶牛,那么这些奶牛就会罢工去开派对。因此,现在 FJ 需要你的帮助,计算 FJ 可以得到的最大效率,并且该方案中没有连续的超过 $K$ 只奶牛。\n"}},{"title":"输入格式","value":{"format":"MD","content":"第一行:空格隔开的两个整数 $N$ 和 $K$;\n\n第二到 $N+1$ 行:第 $i+1$ 行有一个整数 $E_i$。\n"}},{"title":"输出格式","value":{"format":"MD","content":"一行一个值,表示 FJ 可以得到的最大的效率值。"}},{"title":"样例","value":{"format":"MD","content":"\u003ctable class\u003d\u0027vjudge_sample\u0027\u003e\n\u003cthead\u003e\n \u003ctr\u003e\n \u003cth\u003eInput\u003c/th\u003e\n \u003cth\u003eOutput\u003c/th\u003e\n \u003c/tr\u003e\n\u003c/thead\u003e\n\u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cpre\u003e5 2\n1\n2\n3\n4\n5\u003c/pre\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cpre\u003e12\u003c/pre\u003e\u003c/td\u003e\n \u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\nFJ 有 $5$ 只奶牛,他们的效率为 $1,2,3,4,5$。他们希望选取效率总和最大的奶牛,但是他不能选取超过 $2$ 只连续的奶牛。FJ 选择出了第三只以外的其他奶牛,总的效率为 $1+2+4+5\u003d12$。"}},{"title":"数据范围与提示","value":{"format":"MD","content":"对于全部数据,$1\\le N\\le 10^5,0\\le E_i\\le 10^9$。"}},{"title":"","value":{"format":"MD","content":"\u003cdetails\u003e\n \u003csummary\u003e\u003cfont color\u003d#FF000 \u003e**点击查看知识点**\u003c/font\u003e\u003c/summary\u003e\n![单调队列优化.png](https://s2.loli.net/2023/09/01/fH9jBrqK3wI2tZX.png)\n```\n#include \u003ciostream\u003e\n#include \u003ccstring\u003e\n#include \u003calgorithm\u003e\nusing namespace std;\n\ntypedef long long LL;\nconst int N\u003d1e5+10;\nint n,k,q[N];\nLL w[N],f[N],sum;\n\nint main(){\n cin\u003e\u003en\u003e\u003ek; k++; //\n for(int i\u003d1;i\u003c\u003dn;i++) cin\u003e\u003ew[i],sum+\u003dw[i];\n \n int h\u003d1,t\u003d0; LL s\u003d1e18;\n for(int i\u003d1;i\u003c\u003dn;i++){\n while(h\u003c\u003dt \u0026\u0026 f[q[t]]\u003e\u003df[i-1]) t--;\n q[++t]\u003di-1;\n if(q[h]\u003ci-k) h++;\n f[i]\u003df[q[h]]+w[i];\n if(i\u003en-k) s\u003dmin(s,f[i]);\n }\n cout\u003c\u003csum-s;\n}\n```\n\u003c/details\u003e\n"}}]}