hdu How to Type

感觉这道dp题还是有点技巧的,此题设置了两个数组:open[]和close[],分别用来记录capslock一直开启状态和一直关闭状态下的最少输入次数。此时只要判断字母的大小写,选用最优子结构即可。状态转移方程为:

str[i]是小写字母:

open[i]=min(open[i-1]+2,close[i-1]+2);
close[i]=min(close[i-1]+1,open[i-1]+2);

str[i]是大写字母:

open[i]=min(open[i-1]+1,close[i-1]+2);
close[i]=min(close[i-1]+2,open[i-1]+2);

#include"iostream"
#include"stdio.h"
#include"string.h"
#include"ctype.h"
#define mx 1000
using namespace std;
char str[mx];
int open[mx],close[mx];
int min(int a,int b)
{
    return a<b?a:b;
}
int main()
{
    int i,j,t;
    cin>>t;
    getchar();
    while(t--)
    {
        memset(open,0,sizeof(open));
        memset(close,0,sizeof(close));
        cin>>str;
        if(islower(str[0])) {open[0]=2;close[0]=1;}
        else  {open[0]=2;close[0]=2;}
        for(i=1;str[i]!=‘\0‘;i++)
        {
            if(islower(str[i]))
            {
                open[i]=min(open[i-1]+2,close[i-1]+2);
                close[i]=min(close[i-1]+1,open[i-1]+2);
            }
            else
            {
                open[i]=min(open[i-1]+1,close[i-1]+2);
                close[i]=min(close[i-1]+2,open[i-1]+2);
            }
        }
        cout<<close[i-1]<<endl;
    }
    return 0;
}

时间: 2024-11-05 06:27:06

hdu How to Type的相关文章

Matlab中所有自定义的函数

Functions By Category | Alphabetical List Language Fundamentals Entering Commands ans Most recent answer clc Clear Command Window diary Save Command Window text to file format Set display format for output home Send cursor home iskeyword Determine wh

jquery_ui

/*! jQuery UI - v1.10.4 - 2014-01-17 * http://jqueryui.com * Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.position.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js,

苹果APP更新上架被拒的另一种理由(Safety - Objectionable Content)

这两个星期,本来想和大伙分享:写IT连创业系列运营篇,但时间飞过,仍只是写了开头,一直很忙,没能完往下写.今天就动手写点其它内容,哈哈,免的和小伙伴太陌生???前几天IT恋更新了下版本(主要是解决远程APNS通知的问题了) http://p.baidu.com/itopic/main/qlog?qid=d7156162633336383561662600&type=questionlog http://p.baidu.com/itopic/main/qlog?qid=11166162633962

移动端效果之ScrollList

写在前面 列表一直是展示数据的一个重要方式,在手机端的列表展示又和PC端展示不同,毕竟手机端主要靠滑.之前手机端之前一直使用的 ,但是 本身其实有很多兼容性 ,想改动一下需求也很不容易,可以看我之前写的这一文章 "IScroll那些事--内容不足时下拉刷新" (这里并不是说 不好,里面对手机.浏览器 http://p.baidu.com/itopic/main/qlog?qid=ba6b6162636431633336382700&type=questionlog http:/

【原创】Unity3D跨平台动态库编译---记kcp基于CMake的各平台构建实践

C/CPP库在windows.Linux.Mac.android.iOS.windows phone等各平台动态库插件编译打包,供Unity3D使用.这里通过可靠UDP网络库kcp在各个平台上的打包来实践一下,含完整构建过程和构建项目,很容易参考这里的步骤举一反三实践到自己的项目当作. http://p.baidu.com/itopic/main/qlog?qid=94126162633861353663642800&type=questionloghttp://p.baidu.com/itop

HDU 2577 How to Type (线性dp)

How to Type Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4616    Accepted Submission(s): 2084 Problem Description Pirates have finished developing the typing software. He called Cathy to tes

HDU 2577 How to Type(dp题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2577 解题报告:有一个长度在100以内的字符串,并且这个字符串只有大写和小写字母组成,现在要把这些字符串用键盘输入到电脑中,一开始的时候大写锁定是关闭的,并且要求结束的时候也是关闭的,然后让你求输入这些字符串最少需要按多少次键盘(包括Cap Lock键和Shift键) 一个典型的dp题,定义一个一维数组就够了,然后dp[i]的含义的输入到第i个字符时需要按键的最少次数.然后递推公式如下: dp[i]

hdu 2577 How to Type

传送门 How to Type Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5452    Accepted Submission(s): 2436 Problem Description Pirates have finished developing the typing software. He called Cathy to

HDU 2577 How to Type(模拟)

题目链接  http://acm.hdu.edu.cn/showproblem.php?pid=2577 题意   给你一个由大写字母和小写字母组成的字符串  模拟键盘输入的最少按键次数 直接模拟每个字符的输入  flag表示capslock的状态  1表示打开  0为关闭  开始是和输入完毕都是关闭的关闭的  用plu记录shift和capslock的按键次数 当接下来输入的字母有连续n个跟capslock状态不同时  分析可只  只有n=1时适合用shift键 如flag=1 n=1  输入