n<=5000个数轴上的点,有属性x,a,b,c,d,从i跳到j的代价如下:

问从s跳到t的最小代价。

方法?:先构造s->t链,然后依次插入其他点,每次选个最佳的位置。过了这题,正确性不明。

方法:从边的向左向右入手。从左到右计算时,有些点想射出一条边却还射不出,有些点想被一条边插上却没边插他,好吧那这些待插(边方向向左)待射(边方向向右)的边决定了状态。同时可以愉快地发现平时出边(右)和入边(左)是一样多的,遇到s时入边(向左)少一条,遇到t时出边(向右)少一条,这可开个变量记。

那$f(i,j)$--前i个点,j条边向右的最小代价,转移比较复杂:

如果i+1是点s,f(i,j)可以转移到f(i+1,j+1)和f(i,j);

如果i+1是点t,f(i,j)可以转移到f(i+1,j-1)和f(i,j);

否则,f(i,j)可以转移到f(i+1,j),f(i+1,j-1),f(i+1,j+1)。

当然这跟当前剩下的射出边(向右)和待入边(向左)是否足够(>0)有关。因此要判断转移的合法。

小细节:未到终态,且不在s和t之间时,向右边0的状态不合法!!

 #include<string.h>
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
//#include<assert.h>
#include<algorithm>
//#include<iostream>
using namespace std; int n,s,t;
#define maxn 5011
#define LL long long
int a[maxn],b[maxn],c[maxn],d[maxn],xx[maxn];
LL f[maxn][maxn];
int main()
{
scanf("%d%d%d",&n,&s,&t);
for (int i=;i<=n;i++) scanf("%d",&xx[i]);
for (int i=;i<=n;i++) scanf("%d",&a[i]);
for (int i=;i<=n;i++) scanf("%d",&b[i]);
for (int i=;i<=n;i++) scanf("%d",&c[i]);
for (int i=;i<=n;i++) scanf("%d",&d[i]); for (int i=;i<=n;i++)
for (int j=;j<=n;j++)
f[i][j]=1e18;
f[][]=;
int havest=;
for (int i=;i<n;i++)
{
if (i==s) havest--;
if (i==t) havest++;
(i && (havest==) && (f[i][]=1e18));
for (int j=;j<=n;j++) if (f[i][j]!=1e18)
{
if (i+==s)
{
if (j+havest) f[i+][j]=min(f[i+][j],f[i][j]+xx[i+]+c[i+]);
f[i+][j+]=min(f[i+][j+],f[i][j]-xx[i+]+d[i+]);
}
else if (i+==t)
{
if (j) f[i+][j-]=min(f[i+][j-],f[i][j]+xx[i+]+a[i+]);
f[i+][j]=min(f[i+][j],f[i][j]-xx[i+]+b[i+]);
}
else
{
if (j) f[i+][j]=min(f[i+][j],f[i][j]+a[i+]+d[i+]);
if (j+havest) f[i+][j]=min(f[i+][j],f[i][j]+b[i+]+c[i+]);
if (j && j+havest) f[i+][j-]=min(f[i+][j-],f[i][j]+*xx[i+]+a[i+]+c[i+]);
f[i+][j+]=min(f[i+][j+],f[i][j]-*xx[i+]+b[i+]+d[i+]);
}
}
}
printf("%lld\n",f[n][]);
return ;
}

Codeforces704B. Ant Man的更多相关文章

  1. Jenkins 安装的HTML Publisher Plugin 插件无法展示ant生成的JunitReport报告

    最近在做基于jenkins ant  junit 的测试持续集成,单独ant junit生成的junitreport报告打开正常,使用Jenkins的HTML Publisher Plugin 插件无 ...

  2. React中使用Ant Table组件

    一.Ant Design of React http://ant.design/docs/react/introduce 二.建立webpack工程 webpack+react demo下载 项目的启 ...

  3. [Ant]Ant简易教程

    前言 Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.由Apache软件基金会所提供. Ant是纯Java语言编写的,所以具有 ...

  4. jenkins / ant / jmeter 持续集成接口自动化

    1. 将 jmeter 脚本放在/var/lib/jenkins/workspace/Jmeter_auto/jmxpath路径下 2. 点击http://jk.facebank.net.cn/job ...

  5. Maven与Ant比较

    Maven与Ant比较 0 « 上一篇:Jenkins学习三:介绍一些Jenkins的常用功能» 下一篇:Jenkins学习四:Jenkins 邮件配置 posted @ 2015-03-25 16: ...

  6. 一.Jmeter+Ant+Jenkins搭建持续集成接口性能自动化测试

    微创新作品信息 1)微创新作品描述 A.为什么诞生: 1. 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换, ...

  7. Eclipce结合Ant进行编译、打包、传输、运行

    注意: 用Ant构建时,build path只能是单级的,如默认的src,如果是类似basePath/jsr253这样的话,运行Ant build时会报错,说找不到jsr253. (此文讲述的是以an ...

  8. ant 使用指南

    一.概述 ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.在实际软件开发中,有很多地方可以用到ant. 开发环境: System:Windo ...

  9. 在Eclipse中集成Ant配置

    提要:本文将向你展示如何使用Eclipse设置为Ant所用的属性值和环境变量,并简要分析如何配置Ant编辑器以便从Eclipse内部操作Ant文件. 一. 修改Ant Classpath 在使用一个可 ...

随机推荐

  1. Quartz~关于cron表达式要说的

    每20秒执行一次

  2. 开发一个 Web App 必须了解的那些事

    在过去的一年里,我在从头开始开发我的第一个重要的Web应用.经验教会了很多以前不知道的东西,特别是在安全性和用户体验方面. 值得一提的是,我上一次尝试构建的任何合理复杂性是在2005年.所以,在安全防 ...

  3. for循环的两种写法哪个快

    结果如下: 其实工作中,也没有这么多数据需要遍历,基本上用foreach

  4. CF932C Permutation Cycle

    思路: 构造. 实现: #include <bits/stdc++.h> using namespace std; ]; int main() { int n, a, b; while ( ...

  5. 跨库导表数据(sql)

    程序员用 列子: insert into "000".tbFreeReportselect ReportCode ,ReportName ,GroupNamefrom openda ...

  6. Android基础夯实--重温动画(五)之属性动画 ObjectAnimator详解

    只有一种真正的英雄主义 一.摘要 ObjectAnimator是ValueAnimator的子类,它和ValueAnimator一样,同样具有计算属性值的功能,但对比ValueAnimator,它会更 ...

  7. .Net Mvc EasyUI DataGrid 分页

    由于项目的需要,最近一直在学习 .net MVC 和EasyUI.上周写了一个<.Net Mvc 返回Json,动态生成EasyUI Tree>,今天再写一个EasyUI中另一个重要的组件 ...

  8. laravel学习:php写一个简单的ioc服务管理容器

    php写一个简单的ioc服务管理容器 原创: 陈晨 CoderStory 2018-01-14 最近学习laravel框架,了解到laravel核心是一个大容器,这个容器负责几乎所有服务组件的实例化以 ...

  9. 使用Latex插入数学公式(二)

    初级运算 关系运算符 希腊字母 集合运算符逻辑运算符 空格问题 矩阵格式 矩阵格式有三种: 无括号的矩阵 matrix 是 Latex 的矩阵命令,矩阵命令中每一行以 \\ 结束,矩阵的元素之间用 & ...

  10. 使用nsight调试caffe

    首先你需要下载caffe源码,然后先编译好,注意一定要将Makefile.config里的DEBUG := 1注释掉 可以看到注释掉debug后编译会生成的.build_debug目录,调试过程中需要 ...