2012天津C题
行李箱上的密码锁大家都知道, 现在给我们长度为n(n<=1000)的两个密码串,每次可以转动连续的1->3个字符1格,问最少多少次可以使得第一个串变成第二个串
经历了搜索,贪心,的思路后,最终想到了动态规划。
因为第一个字符如果不在位,那么肯定是要处理的,否则那么相当于子问题。
所以定义dp[i][k1][k2]为第i个字符在位时,第i+1个字符向上走了k1格,第i+2个字符向上走了k2格。
当状态为dp[i][k1][k2]时,为了要使的第i+1在位,
那么可以向上走 t = (des[i] - (src[i]+10)%10 + 10)%10 步
或者向下走 t = 10 - t 步
那么第i+2个可以走0<=a<=t步
而第i+2个可以走0<=b<=a步, 这个没考虑到,wa了好久。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
using namespace std;
const int INF = <<;
int dp[+][][];
char src[+],des[+];
int main()
{
//freopen("/Users/whoami/in.txt", "r", stdin);
while(scanf("%s%s",src,des)!=EOF)
{
int n = strlen(src);
for(int i=;i<=n;++i)
for(int k1=;k1<;++k1)
for(int k2=;k2<;++k2)
dp[i][k1][k2] = INF;
dp[][][] = ;
for(int i=;i<n;++i)
{
for(int k1=;k1<;++k1)
for(int k2=;k2<;++k2)
{
if(dp[i][k1][k2]==INF)continue;
int t = (des[i] - src[i] - k1+)%;
for(int a=;a<=t;++a)
{
for(int b=;b<=a;++b)
dp[i+][(k2+a)%][b] = min(dp[i+][(k2+a)%][b],dp[i][k1][k2]+t);
} t = - t;
for(int a=;a<=t;++a)
{
for(int b=;b<=a;++b)
dp[i+][(k2-a+)%][(-b)%] = min(dp[i+][(k2-a+)%][(-b)%],dp[i][k1][k2]+t);
} } }
printf("%d\n",dp[n][][]);
}
return ;
}
2012天津C题的更多相关文章
- 2012天津E题
给我们n个坐标点和一个距离d,表示车开m米就没油了. 然后要选几个点建立油站,使得能够从1出发遍历所有的点,然后回到1. 并且规定1这个点必须有油站,在第i个点建立油站的费用是 2^(i-1) 因为 ...
- MT【259】2016天津压轴题之最佳逼近
(2016天津压轴题)设函数$f(x)=(x-1)^3-ax-b,x\in R$, 其中$a,b\in R$(1)求$f(x)$的单调区间.(2)若$f(x)$存在极值点$x_0$,且$f(x_1)= ...
- HDU 4279 Number(2012天津网络游戏---数论分析题)
转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents 题目链接:pid=4279">http://acm.hdu.edu ...
- USACO翻译:USACO 2012 JAN三题(2)
USACO 2012 JAN(题目二) 一.题目概览 中文题目名称 叠干草 分干草 奶牛联盟 英文题目名称 stacking baleshare cowrun 可执行文件名 stacking bale ...
- USACO翻译:USACO 2012 JAN三题(1)
USACO 2012 JAN(题目一) 一.题目概览 中文题目名称 礼物 配送路线 游戏组合技 英文题目名称 gifts delivery combos 可执行文件名 gifts delivery c ...
- 【2012天津区域赛】部分题解 hdu4431—4441
1001: 题意:给你13张麻将牌,问可以胡哪些张 思路: 枚举可能接到的牌,然后dfs判断能否胡 1002: 题意: 已知n,m 求 n的所有约数在m进制下的平方和 做法:队长用java高精度写的 ...
- HDU 4423 Simple Function(数学题,2012长春D题)
Simple Function Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- USACO翻译:USACO 2012 JAN三题(3)
USACO 2012JAN(题目三) 一.题目概览 中文题目名称 放牧 登山 奶牛排队 英文题目名称 grazing climb lineup 可执行文件名 grazing climb lineup ...
- hdu 4278 2012天津赛区网络赛 数学 *
8进制转为10进制 #include<cstdio> #include<iostream> #include<algorithm> #include<cstr ...
随机推荐
- 自己写一个jqery的拖拽插件
说实话,jQuery比原生的js好用多了,本来想用原生写的,也写出来的,仅仅是,感觉不像插件,所以用jQuery实现了一版. 实现的功能:能够指定拖拽的边界,在拖拽过程中,能够触发几个自己定义事件 先 ...
- 使用Iterator遍历Sheet(POI)验证及解释结果有序性
test.xlsx: Code: package poi; import static org.junit.Assert.*; import java.io.IOException; import j ...
- 强算KMeans聚类算法演示器
这些天做C#实验以及这个KMeans算法演示器,学了一下openGL,感觉有待加强. //Point.h /* Point 结构体定义及实现 结构体重载了2个运算符: 1.== //推断两个Point ...
- Unicode 字符集与它的编码方式
正式内容開始之前,我们先来了解一个基本概念,编码字符集. 编码字符集:编码字符集是一个字符集,它为每个字符分配一个唯一数字.Unicode 标准的核心是一个编码字符集,字母"A"的 ...
- mxGraph改变图形大小重置overlay位置
要在改变图形大小的时候改变overlay的位置.那肯定就要对重置图形大小的方法进行改造了.以下是源文件里的代码 mxGraph.prototype.resizeCells = function(cel ...
- Eclipse中快捷键的使用
1:引入包 ctrl+shift+o 2:对输入进行提示:Alt+/ 3: 全局搜索:crtrl + h 4:Eclipse创建方法快捷键Alt+shift+M 5:Eclipse创建局部变量快捷 ...
- NET Core全新的配置管理
NET Core全新的配置管理[共9篇] 提到“配置”二字,我想绝大部分.NET开发人员脑海中会立马浮现出两个特殊文件的身影,那就是我们再熟悉不过的app.config和web.config,多年以来 ...
- ANSI C中取得结构体字段偏移量的常用方法
来自http://blog.chinaunix.net/u2/62910/showart_492571.html 假设在ANSI C程序中定义了一个名为MyStruct的结构类型,其中有一个名为MyF ...
- blender资源
blender资源 只能发帖不能更改的百度贴吧贴. http://tieba.baidu.com/f?kw=blender blendercn youku视频专辑: http://i.youku.co ...
- WinDBG 技巧:如何生成Dump 文件(.dump 命令)
程序崩溃(crash)的时候, 为了以后能够调试分析问题, 可以使用WinDBG要把当时程序内存空间数据都保存下来,生成的文件称为dump 文件. 步骤: 1) 打开WinDBG并将之Attach 到 ...