sgu 205 分类: sgu 2015-06-10 08:39 87人阅读 评论(0) 收藏
2015-06-10 08:39
176 查看
Dp,just make sense.
时间复杂度: O(n∗s2)
时间复杂度: O(n∗s2)
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> const int MAXN = 1e3+5, SZ = (1<<7)+1, INF = 0x3f3f3f3f; int n, x[MAXN], m, s, A[SZ][SZ]; int f[MAXN][SZ], g[MAXN][SZ]; int ans = INF, des; void Init() { scanf("%d",&n); for(int i = 1; i <= n; i++) scanf("%d",&x[i]); scanf("%d%d",&m,&s); for(int i = 0; i < m; i++) for(int j = 0; j < s; j++) scanf("%d",&A[i][j]); } void Solve() { memset(f,INF,sizeof(f)), f[0][0] = 0; for(int i = 1; i <= n; i++) for(int j = 0; j < s; j++) for(int k = 0; k < s; k++) { int cal = f[i-1][k] + abs(A[k%m][j]-x[i]); if(cal < f[i][j]) f[i][j] = cal, g[i][j] = k; } for(int j = 0; j < s; j++) if(f [j] < ans) ans = f [j], des = j; printf("%d\n",ans); } void Prt(int pos,int des) { if(!pos) return; Prt(pos-1,g[pos][des]); printf("%d ",des); } int main() { #ifndef ONLINE_JUDGE freopen("sgu205.in","r",stdin); freopen("sgu205.out","w",stdout); #endif Init(); Solve(); Prt(n, des); #ifndef ONLINE_JUDGE fclose(stdin); fclose(stdout); #endif return 0; }
相关文章推荐
- myBase Desktop Edition v5.3 不破解的破解
- LeetCode OJ 之 Recover Binary Search Tree(恢复二叉搜索树)
- hadoop编程实例--平均成绩
- 第十四周 项目1-小玩文件(2)
- 深入理解虚拟机类加载机制
- .Net 转战 Android 4.4 日常笔记(1)--工具及环境搭建
- 点点滴滴
- 第十四周 项目一 小玩文件(1)
- Windows下的codeblocks+MinGW开发C++运行环境
- 第十四周上机项目1.2小玩文件
- [JQ权威指南]第二天:JQuery控制CSS样式
- .Net 转战 Android 4.4 日常笔记目录
- SDL 开发
- entity framework 时间操作
- 第二周 项目二 长方形类
- 第十四周项目4 - 处理C++源代码的程序({}换行)
- 第十四周阅读程序2:运用文件流进行文件的复制
- 第14周程序阅读 例4.1
- Unity 中,FPS 第一人称行走,按A键,一直后退。WASD方向控制错误
- classpath