URAL1029. Ministry(DP+路径)
路径麻烦啊 很多细节 倒回去搜一遍
卡了一节数据库。。
#include <iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define LL long long
int u,o,path[],flag;
LL sum[][],dp[][],f[][];
int m,n;
void dfs(int u,int v)
{
if(flag)
return ;
int i,j,tt=o;
if(v==)
{
o++;
path[o] = u;
for(i = o ; i > ; i--)
printf("%d ",path[i]);
printf("%d\n",path[]);
flag = ;
return ;
}
if(dp[v][u]==dp[v-][u]+f[v][u])
{
o = tt;
path[++o] = u;
dfs(u,v-);
}
for(i = u-; i >= ; i--)
{
if(dp[v][i]!=dp[v-][i]+f[v][i])
continue;
o = tt;
if(dp[v][u]==dp[v][i]+sum[v][u]-sum[v][i])
{
for(j = u ; j>= i ; j--)
path[++o] = j;
dfs(i,v-);
}
}
for(i = u+ ; i <= m ; i++)
{
if(dp[v][i]!=dp[v-][i]+f[v][i])
continue;
o = tt;
if(dp[v][u]==dp[v][i]+sum[v][i-]-sum[v][u-])
{
for(j = u; j <= i; j++)
path[++o] = j;
dfs(i,v-);
}
}
o = tt;
}
int main()
{
int i,j,g;
flag=;
scanf("%d%d",&n,&m);
for(i = ; i <= n ;i++)
{
for(j = ; j <=m ; j++)
{
scanf("%lld",&f[i][j]);
sum[i][j] = sum[i][j-]+f[i][j];
}
}
for(i = ;i <= n ;i++)
{
for(j = ; j <=m ; j++)
dp[i][j] = dp[i-][j]+f[i][j];
for(j = ; j <= m ; j++)
{
for(g = ; g < j ;g++)
dp[i][j] = min(dp[i][j],dp[i][g]+sum[i][j]-sum[i][g]);
for(g = j+ ; g <=m ; g++)
dp[i][j] = min(dp[i][j],dp[i][g]+sum[i][g-]-sum[i][j-]);
}
}
LL ans = dp[n][],u = ;
for(i = ; i <= m ; i++)
{
if(ans>=dp[n][i])
{
ans = dp[n][i];
if(dp[n][i]==dp[n-][i]+f[n][i])
u = i;
}
}
o++;
path[o] = u;
if(n==)
printf("%d\n",u);
else
dfs(u,n-);
return ;
}
URAL1029. Ministry(DP+路径)的更多相关文章
- DP+路径 URAL 1029 Ministry
题目传送门 /* 题意:就是从上到下,找到最短路,输出路径 DP+路径:状态转移方程:dp[i][j] = min (dp[i-1][j], dp[i][j-1], dp[i][j+1]) + a[[ ...
- POJ1015 && UVA - 323 ~Jury Compromise(dp路径)
In Frobnia, a far-away country, the verdicts in court trials are determined by a jury consisting of ...
- Codeforces Round #598 (Div. 3)E(dp路径转移)
题:https://codeforces.com/contest/1256/problem/E 题意:给一些值,代表队员的能力值,每组要分3个或3个以上的人,然后有个评价值x=(队里最大值-最小值), ...
- poj2264 dp+路径
//Accepted 208K 0MS //dp //最长公共子序列+路径 #include <cstdio> #include <cstring> #include < ...
- poj1141Brackets Sequence(dp+路径)
链接 dp好想 根据它定义的 记忆化下就行 路径再dfs一遍 刚开始以为要判空格 所以加了判空格的代码 后来知道不用 .. #include <iostream> #include< ...
- [IOI1999]花店橱窗布置(DP路径记录)
题目:[IOI1999]花店橱窗布置 问题编号:496 题目描述 某花店现有F束花,每一束花的品种都不一样,同时至少有同样数量的花瓶,被按顺序摆成一行,花瓶的位置是固定的,从左到右按1到V顺序编号,V ...
- P1052 过河 线性dp 路径压缩
题目描述 在河上有一座独木桥,一只青蛙想沿着独木桥从河的一侧跳到另一侧.在桥上有一些石子,青蛙很讨厌踩在这些石子上.由于桥的长度和青蛙一次跳过的距离都是正整数,我们可以把独木桥上青蛙可能到达的点看成数 ...
- 【CH5104】I-country 线性dp+路径输出
pre:在网格中,凸多边形可以按行(row)分解成若干段连续的区间 [ l , r ] ,且左端点纵坐标的值(col)满足先减后增,右端点纵坐标先增后减. 阶段:根据这个小发现,可以将阶段设置成每一行 ...
- poj1417(带权并查集+背包DP+路径回溯)
题目链接:http://poj.org/problem;jsessionid=8C1721AF1C7E94E125535692CDB6216C?id=1417 题意:有p1个天使,p2个恶魔,天使只说 ...
随机推荐
- php封装文件上传
这是一个经常在项目中遇到的问题,所以封装一个,分享给大家. 一,前期配置php.ini 如果上传文件超过了php配置那么$_POST或者$_FILES等都是空数组,这点是一个坑,因为那时候就不 ...
- 桶排序(BucketSort)
1 桶排序核心思想是 根据数据规模n划分 m个相同大小的区间 (每个区间为一个桶,桶可理解为容器) 2 每个桶存储区间内的元素(区间为半开区间 例如[0,10) 或者 [200,300) ) 3 将n ...
- python计算两个日期时间差
经常在python中因为日期而google,在此做个小笔记. >>>import datetime >>> a = datetime.date.today() &g ...
- Mac OS X平台上Java环境的配置
最近换了工作,以前是做c/c++的,但是现在公司的主打产品是使用Java开发,为了以后维护代码,现在开始抽空学习一下Java相关的内容. 在学习之前,首先需要搭建各种平台的开发环境,而我选用的操作系统 ...
- mysql 远程连接 1045 Access denied for user 'root'@'XX.XX.XX.XX' (using password:YES)
用户名/密码错误,需要输入开放远程时设置的密码
- android开发两种退出程序方式(killProcess,System.exit)
KillProcess: 在android中我们如果想要程序的进程结束可以这样写: android.os.Process.killProcess(android.os.Process.myPid()) ...
- Android全部权限详解(manifest.xml)
当我们在写android程序时有很多功能都要在androidmanifest.xml中加入权限申明才能正常使用,下面就把所有的权限介绍一下: android.permission.ACCESS_CHE ...
- OpenGL ES 3.0 基础知识
首先要了解OpenGL的图形管线有哪些内容,再分别去了解其中的相关的关系: 管线分别包括了顶点缓冲区/数组对象,定点着色器,纹理,片段着色器,变换反馈,图元装配,光栅化,逐片段操作,帧缓冲区.其中顶点 ...
- 增加字体和颜色样式-------CSS
通过使用CSS,控制文本的字体,风格和颜色 1.基本操作: body{ font-family: Verdana, Geneva, Tahoma, sans-serif } body{ font-si ...
- 简单的php表单
表单的三种传递机制: $_GET:不安全,传递的参数会显示在url中. $_POST:相对安全,隐形传递. $_REQUEST:宽松的,包含所有 GET.POST.COOKIE 和 FILE 的数据. ...