惯例,化简题意(看长短决定难度)

一块草坪上有两种点(姑且称为a和b),各有坐标,现在能同时使所有a点向东西南北任意一个方向移动一个单位,若a点与b点重合,则答案增加重合数,求答案的最大值并且求出这个命令序列

solution&&thinking

首先,dp无疑(不能贪,随后hack系列。)

其次,方程式巨好推是不是

f[i][j][k]表示第i步,向东共走了j,北共走了k的最大值,四个转移,之后比较最值,加上预处理的数量,最多是绿的难度。

那么,第二问就是这题变成蓝色的原因。

要求序列!还要字典序最小。

按着yzy的讲法,让每个点同时移动,求序列,但是好像不太可行

考虑求出最优解之后,从最优解开始dfs,减去状态,试着还原一下原状态,强行枚举出序列(又是一个dp233)

既然这又是一个dp,那就又可以迭代写了?好呀好呀....

先枚举E(向东)之后依次枚举方向,一旦找到一个之前的状态能加上预处理出来的数量能够达到当前状态(其实这里就是在模拟dfs),就输出这个字符。

然后...然后就没有了

坑点:

这里必须要骂一下出题人,简直没有良心。真的是映射了zym大佬的一句话

用心出题,用脚造数据

说好的大于0呢?说好的小于1000呢?

被狗吃了吗?

还要防负???

wtf.......

代码:

#include<bits/stdc++.h>
using namespace std;
const int maxn=;
const int T=;
const int dx[]={,,,-};
const int dy[]={,,-,};
const int dd[]={,,,};
int n,m,K;
int a[maxn],b[maxn],c[maxn],d[maxn];
int f[T<<][T<<][T<<];
int g[T<<][T<<];
int main()
{
scanf("%d%d%d",&n,&m,&K);
for(int i=;i<=n;i++)
{
scanf("%d%d",&a[i],&b[i]);
}
for(int i=;i<=m;i++)
{
scanf("%d%d",&c[i],&d[i]);
}
for(int i=;i<=n;i++)
{
for(int j=;j<=m;j++)
{
if(abs(c[j]-a[i])+abs(d[j]-b[i])<=K)
g[c[j]-a[i]+T][d[j]-b[i]+T]++;
}
}
for(int i=K;i>=;i--)
{
for(int j=T-i;j<=T+i;j++)
{
for(int k=T-i;k<=T+i;k++)
{
for(int l=;l<;l++)
{
f[i][j][k]=max(f[i+][j+dx[l]][k+dy[l]],f[i][j][k]);
}
f[i][j][k]+=g[j][k];
}
}
}
printf("%d\n",f[][T][T]);
int u=T,v=T,j;
for(int i=;i<K;i++)
{
for(j=;j<;j++)
if(f[i][u][v]==f[i+][u+dx[j]][v+dy[j]]+g[u][v])
break;
u+=dx[j];
v+=dy[j];
printf("%c",dd[j]);
}
return ;
}

(完)

P2905 [USACO08OPEN]农场危机Crisis on the Farm(简单dp+麻烦“回溯”)的更多相关文章

  1. bzoj1605 / P2905 [USACO08OPEN]农场危机Crisis on the Farm

    P2905 [USACO08OPEN]农场危机Crisis on the Farm 发现总步数$k<=30$,考虑用$k$瞎搞 设$f[u][i][j]$表示已经吹$u$次哨,全体奶牛向右走$i ...

  2. 洛谷P2905 [USACO08OPEN]农场危机Crisis on the Farm

    P2905 [USACO08OPEN]农场危机Crisis on the Farm 题目描述 约翰和他的奶牛组建了一只乐队“后街奶牛”,现在他们正在牧场里排练.奶牛们分成一堆 一堆,共1000)堆.每 ...

  3. P2905 [USACO08OPEN]农场危机Crisis on the Farm

    传送门 DP 设 f [ i ] [ j ] [ k ] 表示已经走了 i 步,向上走了 j 步,向右走了 k 步时能拯救的最多奶牛数(j,k可以为负,表示反向) 设 g [ i ] [ j ] 表示 ...

  4. 洛谷 P2905 [USACO08OPEN]农场危机Crisis on the Farm

    题目描述 约翰和他的奶牛组建了一只乐队“后街奶牛”,现在他们正在牧场里排练.奶牛们分成一堆 一堆,共1000)堆.每一堆里,30只奶牛一只踩在另一只的背上,叠成一座牛塔.牧场 里还有M(1 < ...

  5. bzoj1621 / P2907 [USACO08OPEN]农场周围的道路Roads Around The Farm

    P2907 [USACO08OPEN]农场周围的道路Roads Around The Farm 基础dfs,按题意递归即可. #include<iostream> #include< ...

  6. [USACO08OPEN]农场周围的道路Roads Around The Farm BZOJ 1621 DFS

    Farmer John's cows have taken an interest in exploring the territory around the farm. Initially, all ...

  7. BZOJ1605 [Usaco2008 Open]Crisis on the Farm 牧场危机

    标题好长&&我是权限狗,汪汪! 题没看懂的我以为这是一道极难滴题目...然后,然后我就看懂题了. 数据少给了一个条件K <= 30...(没这条件还做个鬼...) f[k, i, ...

  8. BZOJ 1605 [Usaco2008 Open]Crisis on the Farm 牧场危机:dp【找转移路径】

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1605 题意: 平面直角坐标系中,有n个点,m个标记(坐标范围1~1000). 你可以发出口 ...

  9. BZOJ 1605 [Usaco2008 Open]Crisis on the Farm 牧场危机 DP

    题意:链接 方法: DP 解析: 第一眼搜索题,复杂度不同意dfs,并且牛的数量太多不能bfs,迭代更不可能,A*不会估价.可能记忆化? 等等记忆化我还搜个毛线- 直接改成DP就好了. 状态非常好想非 ...

随机推荐

  1. linux登录后出现-bash-4.1$

    linux登录后有时候会出现-bash-4.1$ 造成这样的原因: 与这个用户有关环境变量没了,有关的文件被删除.也就是用户的家目录下面 .bash_profile .bashrc 被删除. 解决办法 ...

  2. 02-17 kd树

    目录 kd树 一.kd树学习目标 二.kd树引入 三.kd树详解 3.1 构造kd树 3.1.1 示例 3.2 kd树搜索 3.2.1 示例 四.kd树流程 4.1 输入 4.2 输出 4.3 流程 ...

  3. 网页布局——table布局

    table 的特性决定了它非常适合用来做布局,并且表格中的内容可以自动居中,这是之前用的特别多的一种布局方式 而且也加入了 display:table;dispaly:table-cell 来支持 t ...

  4. NOIP2011计算系数;

    #include<cmath> #include<algorithm> #include<stdio.h> #include<iostream> #de ...

  5. Error response from daemon: Get https://registry-1.docker.io/v2/library/nginx/manifests/1.14-alpine: Get https://auth.docker.io/token?scope=repository%3Alibrary%2Fnginx%3Apull&service=registry.docker.

    docker pull 镜像时报错: Error response from daemon: Get https://registry-1.docker.io/v2/library/nginx/man ...

  6. js二次作业

    task 1:完成省城市的三级联动(包括湖南省),附代码和效果图.<!DOCTYPE html> <html> <head> <title>完成省城市的 ...

  7. 比较两个文件的异同Python3 标准库difflib 实现

    比较两个文件的异同Python3 标准库difflib 实现 对于要比较两个文件特别是配置文件的差异,这种需求很常见,如果用眼睛看,真是眼睛疼. 可以使用linux命令行工具diff a_file b ...

  8. Ubuntu16.04换源

    换成国内最快的阿里云源 第一步:备份原来的源文件 cd /etc/apt/ 然后会显示下面的源文件sources.list 输入命令 sudo cp sources.list sources.list ...

  9. Making Dishes (P3243 [HNOI2015]菜肴制作)

    Background\text{Background}Background I've got that Luogu Dialy has been \text{I've got that Luogu D ...

  10. 在博客中增加自己的live2d纸片人模型方法

    目录 在博客中增加自己的live2d纸片人模型 准备工具 使用步骤 附件 在博客中增加自己的live2d纸片人模型 准备工具 github仓库:存放live2d模型和json文件 如果你的博客支持本地 ...