P2905 [USACO08OPEN]农场危机Crisis on the Farm(简单dp+麻烦“回溯”)

惯例,化简题意(看长短决定难度)
一块草坪上有两种点(姑且称为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+麻烦“回溯”)的更多相关文章
- bzoj1605 / P2905 [USACO08OPEN]农场危机Crisis on the Farm
P2905 [USACO08OPEN]农场危机Crisis on the Farm 发现总步数$k<=30$,考虑用$k$瞎搞 设$f[u][i][j]$表示已经吹$u$次哨,全体奶牛向右走$i ...
- 洛谷P2905 [USACO08OPEN]农场危机Crisis on the Farm
P2905 [USACO08OPEN]农场危机Crisis on the Farm 题目描述 约翰和他的奶牛组建了一只乐队“后街奶牛”,现在他们正在牧场里排练.奶牛们分成一堆 一堆,共1000)堆.每 ...
- P2905 [USACO08OPEN]农场危机Crisis on the Farm
传送门 DP 设 f [ i ] [ j ] [ k ] 表示已经走了 i 步,向上走了 j 步,向右走了 k 步时能拯救的最多奶牛数(j,k可以为负,表示反向) 设 g [ i ] [ j ] 表示 ...
- 洛谷 P2905 [USACO08OPEN]农场危机Crisis on the Farm
题目描述 约翰和他的奶牛组建了一只乐队“后街奶牛”,现在他们正在牧场里排练.奶牛们分成一堆 一堆,共1000)堆.每一堆里,30只奶牛一只踩在另一只的背上,叠成一座牛塔.牧场 里还有M(1 < ...
- bzoj1621 / P2907 [USACO08OPEN]农场周围的道路Roads Around The Farm
P2907 [USACO08OPEN]农场周围的道路Roads Around The Farm 基础dfs,按题意递归即可. #include<iostream> #include< ...
- [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 ...
- BZOJ1605 [Usaco2008 Open]Crisis on the Farm 牧场危机
标题好长&&我是权限狗,汪汪! 题没看懂的我以为这是一道极难滴题目...然后,然后我就看懂题了. 数据少给了一个条件K <= 30...(没这条件还做个鬼...) f[k, i, ...
- BZOJ 1605 [Usaco2008 Open]Crisis on the Farm 牧场危机:dp【找转移路径】
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1605 题意: 平面直角坐标系中,有n个点,m个标记(坐标范围1~1000). 你可以发出口 ...
- BZOJ 1605 [Usaco2008 Open]Crisis on the Farm 牧场危机 DP
题意:链接 方法: DP 解析: 第一眼搜索题,复杂度不同意dfs,并且牛的数量太多不能bfs,迭代更不可能,A*不会估价.可能记忆化? 等等记忆化我还搜个毛线- 直接改成DP就好了. 状态非常好想非 ...
随机推荐
- 那些初学python犯过的小白错误(学习笔记1)
一.关于print函数 区别于c和py2,py3的print的正确形式如下:print("hello world") 错误语句:print"hello world&quo ...
- XCTF-upload
这道题的话,看了一下是RCTF-2015的原题....可是这也太难了吧QAQ,文件名作为注入点可也是太秀了,害的我一直以为是文件上传QAQ,并且这道题的坑还不少,就是注入时的输出只能为10进制.... ...
- 在我的新书里,尝试着用股票案例讲述Python爬虫大数据可视化等知识
我的新书,<基于股票大数据分析的Python入门实战>,预计将于2019年底在清华出版社出版. 如果大家对大数据分析有兴趣,又想学习Python,这本书是一本不错的选择.从知识体系上来看, ...
- SDI接口基于FPGA GTP实现
SDI采集和显示,基于xilinx 7系列器件进行实现,注意事项有如下几点: 1,如果多路SDI共用一个GTP Quad,或是SDI和PCIE在一个GTP Quad,时钟资源应该进行共享,既GTP c ...
- B-微积分-Sigmoid函数
目录 Sigmoid函数 一.Sigmoid函数详解 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等着你:https://www.cnbl ...
- 跑的比谁都快 51Nod - 1789
香港记者跑的比谁都快是众所周知的常识. 现在,香港记者站在一颗有 nn 个点的树的根结点上(即1号点),编号为 ii 的点拥有权值 a[i]a[i] ,数据保证每个点的编号都小于它任意孩子结 ...
- PowerBI系列之什么是PowerBI
大家好,我是小黎子!一个专注于数据分析整体数据仓库解决方案的程序猿!今天小黎子就给大家介绍一个数据分析工具由Microsoft出品的全新数据可视化工具Power BI.微软Excel很早就支持了数据透 ...
- 从零开始的vue学习笔记(八)
前言 今天花一天时间阅读完Vue Router的官方文档的基础部分,简单的做一下总结和记录 Vue Router是什么 Vue Router 是 Vue.js 官方的路由管理器,用于构建单页应用(SP ...
- TCP方式的传输
TCP 客户端 先创建socket对象建立tcp客户端,明确服务端的地址和端口,必须与服务端对应,要不然对方收不到消息,就像快递填错了送货地址. Socket s = new Socket(" ...
- OCPC(Optimized Cost per Click)[Paper笔记]
背景 在线广告中,广告按照CPM排序,排在前面的广告竞争有限广告位(截断).其中,CPM=bid*pctr.注GSP二价计费的,按照下一位bid计费.适当调整bid,可以提高竞价的排名,从而获得展现的 ...