【HDU 2577】How to Type
题意
(我做了这题才知道caps lock 锁定大小写后,按一下shift键可以输入相反的大小写。)
这题就是给你只有大小写字母的字符串,求最少多少次按键盘。最后caps lock 必须是关闭的。
分析
这题可以模拟也可以dp。
代码
模拟
#include<cstdio>
#include<cstring> int t,on,i,ans;
char s[]; int isU(char a)
{
return a<='Z'&&a>='A';
} int main()
{
scanf("%d",&t);
while(t--)
{
memset(s,,sizeof s);
on=i=ans=;//一开始caps lock关闭 scanf("%s",s); while(s[i])//处理每个字母
{
if(isU(s[i])&&!on)//如果是大写且caps lock 关闭了
{
ans++;//打开caps lock 或者按一次shift
if(isU(s[i+]))//如果后面紧接着大写就开启caps lock
on=;
} if(!isU(s[i])&&on)//同理
{
ans++;
if(!isU(s[i+]))
on=;
} ans++;//输入当前字母
i++;
} if(on)//最后使caps lock 关闭
ans++; printf("%d\n",ans);
}
return ;
}
dp
#include<cstdio>
#include<cstring>
#include<algorithm> using namespace std; int t,on,i,ans,n;
char s[];
int dp[][]; int isU(char a)
{
return a<='Z'&&a>='A';
} int main()
{
scanf("%d",&t);
while(t--)
{
memset(s,,sizeof s);
memset(dp,,sizeof dp);
on=i=ans=; scanf("%s",s); //如果s[0]是大写,要关闭状态,那就按shift,再按字母
dp[][]=isU(s[])+; //小写先按字母再按caps lock,大写先caps lock 再按字母
dp[][]=;
n=strlen(s);
for(int i=;i<n;i++)
{
if(isU(s[i])){
//大写字母
//关闭状态,可以由关闭状态按shift键再按字母。或由打开状态按字母再关闭。
dp[i][]=min(dp[i-][],dp[i-][])+; //打开状态,可以关闭状态打开再按字母,或打开状态直接按字母。
dp[i][]=min(dp[i-][]+,dp[i-][])+;
}else{
//小写字母同理
dp[i][]=min(dp[i-][],dp[i-][]+)+;
dp[i][]=min(dp[i-][],dp[i-][])+;
}
} printf("%d\n",dp[n-][]);//必须关闭状态
}
return ;
}
【HDU 2577】How to Type的更多相关文章
- 【数位dp】【HDU 3555】【HDU 2089】数位DP入门题
[HDU 3555]原题直通车: 代码: // 31MS 900K 909 B G++ #include<iostream> #include<cstdio> #includ ...
- 【HDU 5647】DZY Loves Connecting(树DP)
pid=5647">[HDU 5647]DZY Loves Connecting(树DP) DZY Loves Connecting Time Limit: 4000/2000 MS ...
- -【线性基】【BZOJ 2460】【BZOJ 2115】【HDU 3949】
[把三道我做过的线性基题目放在一起总结一下,代码都挺简单,主要就是贪心思想和异或的高斯消元] [然后把网上的讲解归纳一下] 1.线性基: 若干数的线性基是一组数a1,a2,a3...an,其中ax的最 ...
- 【HDU 2196】 Computer(树的直径)
[HDU 2196] Computer(树的直径) 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 这题可以用树形DP解决,自然也可以用最直观的方法解 ...
- 【HDU 2196】 Computer (树形DP)
[HDU 2196] Computer 题链http://acm.hdu.edu.cn/showproblem.php?pid=2196 刘汝佳<算法竞赛入门经典>P282页留下了这个问题 ...
- 【HDU 5145】 NPY and girls(组合+莫队)
pid=5145">[HDU 5145] NPY and girls(组合+莫队) NPY and girls Time Limit: 8000/4000 MS (Java/Other ...
- 【hdu 1043】Eight
[题目链接]:http://acm.hdu.edu.cn/showproblem.php?pid=1043 [题意] 会给你很多组数据; 让你输出这组数据到目标状态的具体步骤; [题解] 从12345 ...
- 【HDU 3068】 最长回文
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=3068 [算法] Manacher算法求最长回文子串 [代码] #include<bits/s ...
- 【HDU 4699】 Editor
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=4699 [算法] 维护两个栈,一个栈放光标之前的数,另外一个放光标之后的数 在维护栈的同时求最大前缀 ...
随机推荐
- mac os下得pycharm怎么设置mercurial?
捣鼓了一会儿,最终搞定了. 先把链接贴上来:https://www.jetbrains.com/pycharm/help/mercurial.html 如果你发现你的pycharm在设置mercuri ...
- PCTF-2016-WEB
Pctf ** web100 PORT51** 开始看到这个真的无法下手,想过用python–socket编程或者scapy发包.自己觉得是可以的,但是没有去试,后面看一大神writeup,知道: ...
- Windows server 2008系统基本优化
前几天用上了Windows server 2008刚开始还真不习惯,毕竟是做服务器用的系统和娱乐操作系统有很大区别.先总结几点,以后慢慢更新 安装Win2008驱动: 大部分支持vista系统的驱动都 ...
- smarty变量调节器
smarty中变量调解器的作用:在模板中需要对PHP分配过来的变量在输出之前,对变量进行处理 注册变量调解器方式:$smarty->registerPlugin("modifier&q ...
- vuejs过滤器
结合管道符 | {{messageOne | capitalize}} capitalize 首字母大写 {{messageOne | uppercase}} uppercase 大写字母 {{mes ...
- OV7725学习(二)
首先要配置OV7725摄像头的寄存器,遵循的是SCCB协议,配置之前需要1ms的时间等待,保证系统稳定,而且刚开始要丢弃前10帧的数据,因为认为前10帧的数据是不稳定的,图1就是数据手册上关于这一点的 ...
- Binary Search Tree Iterator
Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the ro ...
- no.4 抽奖测试
#-*-coding=gbk-*- import sys import random a=[] try: for x in range(1,20+1,1): #打印20人数编号 a.append(x) ...
- java遍历hashTable
//获取key值 Enumeration k = lovResults.keys();while(k.hasMoreElements()){ System.out.println(k.nextElem ...
- 基于Flot可放缩的折线图
Flot初步 Flot是一个免费开源的图标插件,可以用它开发出功能强大的图表系统.下面着重讲解在Asp.net中如何使用这个插件做出功能强大的图表应用. 关于Flot,可以在这里查看现有的例子(或者是 ...