hdu 2577 How to Type dp
2015-08-02 21:18
441 查看
题意:通过按最少次键盘数打出要求的字符,详见样例。
设dp【i】【0】表示关闭Caps lock情况下的打第i个字符时最少次数,dp【i】【1】为开启状态下的最少次数,
则有小写情况下:dp【i】【0】 = min(dp【i-1】【0】+1(小写情况下直接打),dp【i-1】【1】+2(按住shirt再打,比开启关掉大写再打再开启大写要优)),大写反一下就行了。
设dp【i】【0】表示关闭Caps lock情况下的打第i个字符时最少次数,dp【i】【1】为开启状态下的最少次数,
则有小写情况下:dp【i】【0】 = min(dp【i-1】【0】+1(小写情况下直接打),dp【i-1】【1】+2(按住shirt再打,比开启关掉大写再打再开启大写要优)),大写反一下就行了。
#include <bits/stdc++.h> #include <map> #include <set> #include <queue> #include <stack> #include <cmath> #include <time.h> #include <vector> #include <cstdio> #include <string> #include <iomanip> ///cout << fixed << setprecision(13) << (double) x << endl; #include <cstdlib> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define lson l, mid, rt << 1 #define rson mid + 1, r, rt << 1 | 1 #define ls rt << 1 #define rs rt << 1 | 1 #define pi acos(-1.0) #define eps 1e-8 #define Mp(a, b) make_pair(a, b) #define asd puts("asdasdasdasdasdf"); typedef long long ll; //typedef __int64 LL; const int inf = 0x3f3f3f3f; const int N = 110; int dp [2]; char a ; int main() { int tot, n; scanf("%d", &tot); while( tot-- ) { scanf("%s", a+1 ); n = strlen( a+1 ); memset( dp, 0, sizeof( dp ) ); dp[0][1] = 1; for( int i = 1; i <= n; ++i ) { if( a[i] >= 'a' && a[i] <= 'z' ) { dp[i][0] = min( dp[i-1][0] + 1, dp[i-1][1] + 2 ); dp[i][1] = min( dp[i-1][0] + 2, dp[i-1][1] + 2 ); } else if( a[i] >= 'A' && a[i] <= 'Z' ) { dp[i][0] = min( dp[i-1][0] + 2, dp[i-1][1] + 2 ); dp[i][1] = min( dp[i-1][0] + 2, dp[i-1][1] + 1 ); } } dp [1]++; printf("%d\n", min( dp [0], dp [1] ) ); } return 0; }
相关文章推荐
- 03_Android NDK中C语言调用Java代码,javah的使用,javap的使用以及生成签名,Android.mk的编写,C代码的编写
- TopCoder SRM 664 Div2 Level One
- 03_Android NDK中C语言调用Java代码,javah的使用,javap的使用以及生成签名,Android.mk的编写,C代码的编写
- 八皇后问题
- 【HDOJ 4970】 Killing Monsters
- C语言:通过函数指针来完成两个数的加减乘除
- 使用 VirtualBOX 虚拟机安装 OS X 10.10 Yosemite
- 《MFC游戏开发》笔记二 建立工程、调整窗口
- 在blade中定义一个可以被模版使用的变量
- MySql命令导入导出数据方法分享
- STRUTS2为ACTION配置METHOD属性
- ThinkJAVA_方法上的泛型
- 【图的连通性】poj2117Electricity
- lock synchronized 区别
- 《MFC游戏开发》笔记一 系列简介
- ZOJ 3641 Information Sharing 并查集
- JSP+servlet生成验证码并验证
- JAVA基础一大堆0802拷贝文件流+网络连接
- HDFS 的Trash回收站功能的配置、使用
- Android五大布局