假期训练五(poj-1077bfs+康拓展开,hdu-2577dp)
题目一:传送门
思路:主要是找到状态,
考虑字母有两种状态,大写和小写,
从小写变为大写的变化方式有两种:保持cap状态,或者按住shift键;
从小写变为大写也有一种变化方式:按住shift键;
看起来很乱,但是主要就是是否为cap状态,shift可以看做多按一次键,
不能算作状态,所以一个字母就两个状态,大写键开启,或不开启。
由此建立一个二维数组dp[i][j],i表示节点位置;j表示状态,有0,1两种,表示大写键开启或不开启。
然后就是从0--len依次循环更新状态就行了,注意最终状态是大写键关闭。
代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = ;
const int INF = ;
char str[maxn];
int dp[maxn][],a[maxn];
int MIN(int x,int y)
{
return x<y?x:y;
}
int main(void)
{
int t,fg,i,len,cnt,j;
scanf("%d",&t);
while(t--)
{
scanf("%s",str);
len=strlen(str);
dp[][]=,dp[][]=;
for(i=;i<len;i++)
{
if(str[i]>='a'&&str[i]<='z')
{
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",MIN(dp[len][]+,dp[len][]));
}
return ;
}
题目二:传送门
思路:bfs+康托展开
参考文章:传送门
(1)将二维坐标用以为数组存储,每次只要进行行列变换就行了;
(2)每次交换两个坐标的值,然后再重新算出这个序列在全排列中的位置;
(3)x可以设为9,利用康拓展开每次返回当前序列在1-9全排列的位置,截止的标志是statu==1;
(4)每次记录变换的方向和前一个位置。
假期训练五(poj-1077bfs+康拓展开,hdu-2577dp)的更多相关文章
- hdu 1043 pku poj 1077 Eight (BFS + 康拓展开)
http://acm.hdu.edu.cn/showproblem.php?pid=1043 http://poj.org/problem?id=1077 Eight Time Limit: 1000 ...
- Eight (HDU - 1043|POJ - 1077)(A* | 双向bfs+康拓展开)
The 15-puzzle has been around for over 100 years; even if you don't know it by that name, you've see ...
- HDU 4531 bfs/康拓展开
题目链接http://acm.hdu.edu.cn/showproblem.php?pid=4531 吉哥系列故事——乾坤大挪移 Time Limit: 2000/1000 MS (Java/Othe ...
- hdu 1043 Eight (八数码问题)【BFS】+【康拓展开】
<题目链接> 题目大意:给出一个3×3的矩阵(包含1-8数字和一个字母x),经过一些移动格子上的数后得到连续的1-8,最后一格是x,要求最小移动步数. 解题分析:本题用BFS来寻找路径,为 ...
- hdoj1043 Eight(逆向BFS+打表+康拓展开)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 思路: 由于自己对康拓展开用的太少,看到这个题没想到康拓展开,最开始打算直接转换为数字,但太占内 ...
- 【HDOJ3567】【预处理bfs+映射+康拓展开hash】
http://acm.hdu.edu.cn/showproblem.php?pid=3567 Eight II Time Limit: 4000/2000 MS (Java/Others) Me ...
- 【HDOJ1043】【康拓展开+BFS】
http://acm.hdu.edu.cn/showproblem.php?pid=1043 Eight Time Limit: 10000/5000 MS (Java/Others) Memo ...
- 【康拓展开】及其在求全排列第k个数中的应用
题目:给出n个互不相同的字符, 并给定它们的相对大小顺序,这样n个字符的所有排列也会有一个顺序. 现在任给一个排列,求出在它后面的第i个排列.这是一个典型的康拓展开应用,首先我们先阐述一下什么是康拓展 ...
- ACM/ICPC 之 BFS(离线)+康拓展开(TSH OJ-玩具(Toy))
祝大家新年快乐,相信在新的一年里一定有我们自己的梦! 这是一个简化的魔板问题,只需输出步骤即可. 玩具(Toy) 描述 ZC神最擅长逻辑推理,一日,他给大家讲述起自己儿时的数字玩具. 该玩具酷似魔方, ...
随机推荐
- stm32DMA
源和目标地址必须按数据传输宽度对齐 支持循环的缓冲器管理 可编程的数据传输数目:最大为65536 每一个通道都有一组寄存器 DMA_CPARx.DMA_CMARx是没有差别的,它们都可以存放外设的地址 ...
- [leetcode]694. Number of Distinct Islands你究竟有几个异小岛?
Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) conn ...
- 如何查看Firefox中保存的登录密码
问:以前使用Firefox浏览器登录一个论坛,并且临时申请了一个账号,在使用Firefox登录时选择让它记住密码了,后来,我忘记了那个论坛的密码,但是可以使用Firefox直接登录.现在能不能查看密码 ...
- [z]dbms_stats.lock_table_stats对于没有统计信息的表分区同样有效
常见的分区表DDL如 split partition.add partition都会生成没有统计信息的表分区table partition,长期以来我对dbms_stats.lock_table_st ...
- 9.27 h5日记
9.27 1.怎样给title前加小图标? <link rel="short icon" href="favicon.ico"/> ❤link有哪 ...
- js sort
排序算法 比较的过程必须通过函数抽象出来.通常规定,对于两个元素x和y,如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1,这样,排序算法就不用关 ...
- 转:css知多少(1)——我来问你来答
1. 引言 各位前端或者伪前端(比如作者本人)的同志们,css对你们来说不是很陌生.比如我,在几年之前上大学的时候,给外面做网站就用css,而且必须用css.这样算下来也得六年多了,有些功能可能轻车熟 ...
- Thread中join()方法进行介绍
http://www.cnblogs.com/skywang12345/p/3479275.html https://blog.csdn.net/dabing69221/article/details ...
- DataStructure.BloomFilter
Bloom Filters Ref[1] 1. 简介 Bloom filter(布隆过滤器:有更好的或正确的翻译,告诉我) 是一个数据结构,该数据结构快速并且内存高效,它可以告诉你某个元素是否在集合中 ...
- 在iOS 8及以后使用UIAlertController 等各种弹出警告通知
原文转自:在iOS 8中使用UIAlertController 感谢作者分享,自我学习之用 iOS 8的新特性之一就是让接口更有适应性.更灵活,因此许多视图控制器的实现方式发生了巨大的变化.全新的UI ...