Codeforces704B. Ant Man
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的更多相关文章
- Jenkins 安装的HTML Publisher Plugin 插件无法展示ant生成的JunitReport报告
最近在做基于jenkins ant junit 的测试持续集成,单独ant junit生成的junitreport报告打开正常,使用Jenkins的HTML Publisher Plugin 插件无 ...
- React中使用Ant Table组件
一.Ant Design of React http://ant.design/docs/react/introduce 二.建立webpack工程 webpack+react demo下载 项目的启 ...
- [Ant]Ant简易教程
前言 Apache Ant,是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.由Apache软件基金会所提供. Ant是纯Java语言编写的,所以具有 ...
- jenkins / ant / jmeter 持续集成接口自动化
1. 将 jmeter 脚本放在/var/lib/jenkins/workspace/Jmeter_auto/jmxpath路径下 2. 点击http://jk.facebank.net.cn/job ...
- Maven与Ant比较
Maven与Ant比较 0 « 上一篇:Jenkins学习三:介绍一些Jenkins的常用功能» 下一篇:Jenkins学习四:Jenkins 邮件配置 posted @ 2015-03-25 16: ...
- 一.Jmeter+Ant+Jenkins搭建持续集成接口性能自动化测试
微创新作品信息 1)微创新作品描述 A.为什么诞生: 1. 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换, ...
- Eclipce结合Ant进行编译、打包、传输、运行
注意: 用Ant构建时,build path只能是单级的,如默认的src,如果是类似basePath/jsr253这样的话,运行Ant build时会报错,说找不到jsr253. (此文讲述的是以an ...
- ant 使用指南
一.概述 ant 是一个将软件编译.测试.部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发.在实际软件开发中,有很多地方可以用到ant. 开发环境: System:Windo ...
- 在Eclipse中集成Ant配置
提要:本文将向你展示如何使用Eclipse设置为Ant所用的属性值和环境变量,并简要分析如何配置Ant编辑器以便从Eclipse内部操作Ant文件. 一. 修改Ant Classpath 在使用一个可 ...
随机推荐
- 转】用Mahout构建职位推荐引擎
原博文出自于: http://blog.fens.me/hadoop-mahout-recommend-job/ 感谢! 用Mahout构建职位推荐引擎 Hadoop家族系列文章,主要介绍Hadoop ...
- sdut1642Simple Arithmetics(模拟)
链接 发个长长的模拟 这题要注意的地方挺多 -的个数 以及对齐的情况 全都注意好了 大数的加减乘就可以了 #include <iostream> #include<cstdio> ...
- vue采坑及较好的文章汇总
1:父子组件传动态传值 https://www.cnblogs.com/daiwenru/p/6694530.html -----互传数据基本流程 https://blog.csdn.net/qq_ ...
- phpmyadmin在linux下通过sock安装教程
当初是按照 http://www.cnblogs.com/freeweb/p/5262852.html 地址参考安装,因为疏忽,未考虑到版本差异带来的影响(自身安装的是最新版 phpMyAdmin-4 ...
- SQL优化基础 使用索引(一个小例子)
按照本文操作和体会,会对sql优化有个基本最简单的了解,其他深入还需要更多资料和实践的学习: 1. 建表: 复制代码代码如下: create table site_user ( id int IDEN ...
- QPushButton注册事件过滤器后按钮消失
版权声明:本文为博主原创文章,转载需要注明出处. RT,代码如下: ui.btn_set->installEventFilter(this); bool MousrHoverTest::even ...
- xamarin 学习笔记02- IOS Simulator for windows 安装
微软发布了在window下的ios模拟器 下载 ios模拟器 并安装在windows系统上. Xamarin for Visual Studio 和 网络上的 Mac 中的 Xamarin.iOS 开 ...
- 迅为7寸工业平板电脑|人机界面|工业触摸屏|工控机|HMI|工业显示器
型号:iTOP-HMI070-C 7寸工业平板电脑特点: 1.iTOP-HMI070-C(CAN) 7寸工业触摸屏,CAN总线型触摸屏,配有2组独立的串口和一路CAN总线口: 2.串口都支持各种PLC ...
- 一个圆的移动 AE教程 速度曲线调节
AE里面速度的曲线调节 最终的小效果 两个关键点: 一:速度曲线调节 编辑速度图标,他的曲线是编辑速度的. 二:节点不要用贝塞尔曲线 编辑值图标,就是圆圈的x值y值的曲线.控制位置移动的. 选择一个节 ...
- switch、try-catch
记录 1. 使用对象代替 switch 和 if-else 2. 根据返回数据是否能转成对象,取值 如果返回是数字字符串,直接返回,如果返回是对象,取对应的key值,再返回 其它情况,返回空 {{ o ...