Codeforces 180C Letter:dp
题目链接:http://codeforces.com/problemset/problem/180/C
题意:
给你一个字符串s,长度为n。
让你将这个字符串变成“前面一段都是大写字母,后面一段都是小写字母”的形式。
(也可以全是大写或全是小写)
问你最少改动几个字符。
题解:
表示状态:
dp[i][0/1] = min changes
表示考虑到第i个字符,s[i]改成了大写(1)或小写(0)时的最小代价
找出答案:
ans = min(dp[n][0], dp[n][1])
如何转移:
dp[i][1] = dp[i-1][1] + is_lower(s[i])
dp[i][0] = min(dp[i-1][0], dp[i-1][1]) + is_upper(s[i])
边界条件:
dp[i][0] = dp[i][1] = 0
AC Code:
#include <iostream>
#include <stdio.h>
#include <string.h>
#define MAX_N 100005 using namespace std; int n;
int dp[MAX_N][];
char s[MAX_N]; int is_lower(char c)
{
return ('a'<=c && c<='z') ? : ;
} int is_upper(char c)
{
return ('A'<=c && c<='Z') ? : ;
} int main()
{
scanf("%s",s+);
n=strlen(s+);
memset(dp,,sizeof(dp));
for(int i=;i<=n;i++)
{
dp[i][]=dp[i-][]+is_lower(s[i]);
dp[i][]=min(dp[i-][],dp[i-][])+is_upper(s[i]);
}
cout<<min(dp[n][],dp[n][])<<endl;
}
Codeforces 180C Letter:dp的更多相关文章
- Codeforces 180C - Letter - [简单DP]
题目链接:http://codeforces.com/problemset/problem/180/C 题意: 有一段字符串,包含大小写字母,每次可以将其中一个字母由大写变成小写,或者小写变成大写.要 ...
- Codeforces 180C. Letter
题目链接:http://codeforces.com/problemset/problem/180/C 题意: 给你一个仅包含大写字母和小写字母的字符串,你可以将让小写字母转化为大写字母,大写字母转化 ...
- Codeforces 571B Minimization:dp + 贪心【前后相消】
题目链接:http://codeforces.com/problemset/problem/571/B 题意: 给你一个长度为n的数列a[i]. 现在你可以随意改变数字的位置,问你 ∑| a[i] - ...
- Codeforces 893E Counting Arrays:dp + 线性筛 + 分解质因数 + 组合数结论
题目链接:http://codeforces.com/problemset/problem/893/E 题意: 共q组数据(q <= 10^5),每组数据给定x,y(x,y <= 10^6 ...
- codeforces Educational Codeforces Round 16-E(DP)
题目链接:http://codeforces.com/contest/710/problem/E 题意:开始文本为空,可以选择话费时间x输入或删除一个字符,也可以选择复制并粘贴一串字符(即长度变为两倍 ...
- CodeForces 176B Word Cut dp
Word Cut 题目连接: http://codeforces.com/problemset/problem/176/C Description Let's consider one interes ...
- Codeforces 1096D - Easy Problem - [DP]
题目链接:http://codeforces.com/problemset/problem/1096/D 题意: 给出一个小写字母组成的字符串,如果该字符串的某个子序列为 $hard$,就代表这个字符 ...
- Codeforces 219C - Color Stripe - [DP]
题目链接:http://codeforces.com/problemset/problem/219/C 题意: 给你 $n$ 个方块排成水平一排,每个方块都涂上 $k$ 种颜色中的一种.要求对尽量少的 ...
- Codeforces 445A Boredom(DP+单调队列优化)
题目链接:http://codeforces.com/problemset/problem/455/A 题目大意:有n个数,每次可以选择删除一个值为x的数,然后值为x-1,x+1的数也都会被删除,你可 ...
随机推荐
- lua学习笔记(十)
模块与包 使用require加载模块 一个规范的模块应该返回一个table作为这个模块所有导出功能的集合 lua里没通过任何强制性语法规则要求创建模块时反回一个table ...
- 动态对象创建(二)重载new和delete
动态对象创建(二)重载new和delete 前言 上文我简单介绍了一下动态对象创建的方法,这一篇文章的内容主要是对重载new和delete做一些讲解,也希望能够得到博友们的指点,在这里谢过大家. 通常 ...
- Pycharm context menu disable RUN option
这个问题很坑.正常来说一个文件右键出来的是 Run 选项, 可是近期几个文件都是 Unititest 的測试选项,每次要执行的时候都要手工去配置Run Option,在尝试了: 0. 重置IDE配置 ...
- js浅度克隆/深度克隆
首先弄明白几个概念: 一. 具体数据类型分为两种: 1.原始数据类型 2.引用数据类型 原始数据类型存储的是对象的实际地址,包括: number.string.boolean.还有两个特殊的nul ...
- 自定义cginc文件
首先定义一个cginc文件如下所示: #ifndef MY_CG_INCLUDE #define MY_CG_INCLUDE struct appdata_x { float4 vertex : PO ...
- [Android Studio 权威教程]AS 中配置强大的版本号管理系统(Git、SVN、等)
在Eclipse中加入Git等版本号管理工具须要自己加入插件.并且个人认为不咋好用,在AS中已经给我们集成好了,我们仅仅须要配置一下就OK了.今天就和大家聊聊怎么配置以及使用的要点. 1. 安装Git ...
- vagrant系列四:vagrant搭建redis与redis的监控程序redis-stat
上一篇php7环境的搭建 真是火爆.仅仅两天时间,就破了我之前swagger系列的一片文章,看来,大家对搭建好开发环境真是情有独钟. 为了訪问量,我今天再来一篇redis的搭建. 当然不能仅仅是red ...
- Jmeter监控Linux服务器性能
①.下载JMeterPlugins相关的jar包,放jmeter的安装路径\lib\ext下——这个时候启动jmeter会发现,添加监听器时,出现了一堆的jp@jc……,这些就是插件的功劳. JMet ...
- 九度OJ 1283:第一个只出现一次的字符 (计数)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:1808 解决:997 题目描述: 在一个字符串(1<=字符串长度<=10000,全部由大写字母组成)中找到第一个只出现一次的字符 ...
- 九度OJ 1262:Sequence Construction puzzles(I)_构造全递增序列 (DP)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:118 解决:54 题目描述: 给定一个整数序列,请问如何去掉最少的元素使得原序列变成一个全递增的序列. 输入: 输入的第一行包括一个整数N( ...