洛谷 P3628 特别行动队】的更多相关文章

洛谷题目页面传送门 题意见洛谷. 这题一看就是DP... 设\(dp_i\)表示前\(i\)个士兵的最大战斗力.显然,最终答案为\(dp_n\),DP边界为\(dp_0=0\),状态转移方程为\(dp_i=\max\limits_{j\in[0,i)}\left\{dp_j+a\left(\sum\limits_{k=j+1}^ix_k\right)^2+b\sum\limits_{k=j+1}^ix_k+c\right\}\). 这其中要求区间和,可以先预处理出前缀和数组\(Sum\).那么方…
洛谷题目链接:[APIO2010]特别行动队 题目描述 你有一支由 n 名预备役士兵组成的部队,士兵从 1 到 \(n\) 编号,要将他们拆分 成若干特别行动队调入战场.出于默契的考虑,同一支特别行动队中队员的编号 应该连续,即为形如 \((i, i + 1, ..., i + k)\) 的序列. 编号为 \(i\) 的士兵的初始战斗力为 \(x_i\) ,一支特别行动队的初始战斗力 \(x\) 为队内 士兵初始战斗力之和,即 \(x = x_i + x_{i+1} + ... + x_{i+k…
洛谷题目传送门 安利蒟蒻斜率优化总结 由于人是每次都是连续一段一段地选,所以考虑直接对\(x\)记前缀和,设现在的\(x_i=\)原来的\(\sum\limits_{j=1}^ix_i\). 设\(f_i\)为安排前\(i\)个人的最大值\((f_0=0)\) \(f_i=\max\limits_{j=0}^{i-1}\{f_j+a(x_i-x_j)^2+b(x_i-x_j)+c\}\) \(\quad=\max\limits_{j=0}^{i-1}\{f_j-2ax_ix_j+ax_j^2-b…
题目链接 斜率优化总结待补,请催更.不催更不补 \[f[i]=f[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c\] \[=f[j]+a*sum[i]^2+a*sum[j]^2-2a*sum[i]*sum[j]+b*sum[i]-b*sum[j]+c\] \[f[j]+a*sum[j]^2-b*sum[j]+c=2a*sum[i]*sum[j]+f[i]-a*sum[i]^2-b*sum[i]\] #include <cstdio> #include &l…
传送门 先写出转移方程$$dp[i]=max\{dp[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c\}$$ 假设$j$比$k$更优,则有$$dp[j]+a*(sum[i]-sum[j])^2+b*(sum[i]-sum[j])+c>dp[k]+a*(sum[i]-sum[k])^2+b*(sum[i]-sum[k])+c$$ 展开,并消去同类项之后得$$dp[j]-2*a*sum[i]*sum[j]+a*sum[j]^2-b*sum[j]>dp[k]-2…
裸题,注意队列下标不要写错 Code: #include<cstdio> #include<algorithm> #include<cmath> using namespace std; const int maxn = 2000000 + 3; long long f[maxn], sum[maxn], a, b, c; int n, q[maxn]; inline double re_x(int i){ return sum[i]; }; inline double…
题意简述 将n个士兵分为若干组,每组连续,编号为i的士兵战斗力为xi 若i~j士兵为一组,该组初始战斗力为\( s = \sum\limits_{k = i}^{j}xk \),实际战斗力\(a * s^2 + b * s + c\)(a,b,c为常数) 求最大实际战斗力 题解思路 \( dp[i] = max(dp[j) + a * (s[i] - s[j]) ^ 2 + b * (s[i] - s[j]) + c \) 然后斜率优化,单调队列维护 代码 #include <cstdio>…
题目链接 设c[i]是战斗力前缀和,f[i]是考虑前i个,且最后一组分到第i个士兵为止的战斗力之和 则有朴素状态转移方程 ;i<=n;++i) ;j<i;++j){ int x=c[i]-c[j]; f[i]=min(f[i],a*x*x+b*x+c); } 然后考虑优化. 假设f[i]最优结果是从f[j]转移过来,同时有一个不那么优的转移f[k] 则有$f[j]+a*squa(c[i]-c[j])+b*(c[i]-c[j])+c>f[k]+a*squa(c[i]-c[k])+b*(c[…
题面 Bzoj 洛谷 题解 考虑莫队算法,首先对询问进行分块(分块大小为\(sqrt(n)\)),对于同一个块内的询问,按照左端点为第一关键字,右端点为第二关键字排序.我们统计这个区间内相同的颜色有多少个,假设某种颜色\(i\)有\(j\)个,则贡献就是\(j\times(j-1)\),最后记得化成既约分数. #include <set> #include <cmath> #include <cstdio> #include <cstring> #inclu…
P1219 八皇后 题目描述 检查一个如下的6 x 6的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行.每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子. 上面的布局可以用序列2 4 6 1 3 5来描述,第i个数字表示在第i行的相应位置有一个棋子,如下: 行号 1 2 3 4 5 6 列号 2 4 6 1 3 5 这只是跳棋放置的一个解.请编一个程序找出所有跳棋放置的解.并把它们以上面的序列方法输出.解按字典顺序排列.请输出前3个解.最后一行是解的总个数. //以下的…