fixing great wall 的变形
dp(i,j,k,p)不考虑i-j的客人,还要送k个人,目前位置在p
起点i和总数量k都要枚举
dp(i,j,k,p)=max(dp(m,j,k-1,p)+valm,dp(i,d,k-1,p)+vald)

画一下图,就发现每个点罚时是当前k*abs【pi】

#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std; const int maxn = + ; int kase, n;
int p[maxn], v[maxn];
int d[maxn][maxn][maxn][];
int vis[maxn][maxn][maxn][]; // already considered s~e, still need to delivery to cnt people.
// pos = 0 means at s, pos = 1 means at e
int dp(int s, int e, int cnt, int pos) {
if(cnt == ) return ; int &ans = d[s][e][cnt][pos];
if(vis[s][e][cnt][pos] == kase) return ans;
vis[s][e][cnt][pos] = kase; ans = ;
if(!pos) {
for(int i = ; i < s; i++)
ans = max(ans, v[i] - cnt * abs(p[i] - p[s]) + dp(i, e, cnt - , ));
for(int i = e + ; i < n; i++)
ans = max(ans, v[i] - cnt * abs(p[i] - p[s]) + dp(s, i, cnt - , ));
}
else {
for(int i = ; i < s; i++)
ans = max(ans, v[i] - cnt * abs(p[i] - p[e]) + dp(i, e, cnt - , ));
for(int i = e + ; i < n; i++)
ans = max(ans, v[i] - cnt * abs(p[i] - p[e]) + dp(s, i, cnt - , ));
}
return ans;
} int main() {
int T;
scanf("%d",&T);
memset(vis, , sizeof(vis));
for(kase = ; kase <= T; kase++) {
scanf("%d", &n);
for(int i = ; i < n; i++) scanf("%d", &p[i]);
for(int i = ; i < n; i++) scanf("%d", &v[i]); int ans = ;
for(int k = ; k <= n; k++)
for(int i = ; i < n; i++)
ans = max(ans, v[i] - k * abs(p[i]) + dp(i, i, k - , ));//注意罚时的计算
printf("%d\n",ans);
}
return ;
}

最新文章

  1. JavaScript的基本语法
  2. JVM_七种垃圾收集器介绍
  3. 域名解析与多域名绑定多个Tomcat项目
  4. 第三周作业(三):wc程序
  5. HTML实体字符转化为HTML标签
  6. java初学。加载图片
  7. My97DatePicker控制开始时间和结束时间区间
  8. Gitlab仓库规范实践建议
  9. [转] Web前端优化之 图片篇
  10. css3实现无缝滚动效果
  11. 使用Aspose.Word的基础知识整理
  12. Python自动化运维之23、Dom
  13. 转:Lua简明教程
  14. 【源码】实现Android闹钟功能使用HTML+JS,并附带Alarm代码分享
  15. 【转】awk内置变量
  16. CF 741D. Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths [dsu on tree 类似点分治]
  17. cvte春招测试面试记录
  18. day09 函数学习
  19. Luogu P2336 [SCOI2012]喵星球上的点名
  20. vim正则表达式

热门文章

  1. 分享Ubuntu下一些很棒的软件(一)
  2. Codeforces - 9D - How many trees? - 简单dp - 组合数学
  3. 开挂的map
  4. IT兄弟连 JavaWeb教程 使用Java同步机制对多线程同步
  5. Charles对移动APP抓包(https)
  6. JavaScript入门2
  7. 使用PreparedStatement接口
  8. 139 Word Break 单词拆分
  9. mysql 三大范式【转载】
  10. c++ 如何对拍