小G的ACM之路

一个在艰难爬坑的菜鸟

POJ 3279 Fliptile(状态压缩+暴力)

题意: 给出最高15*15的0 1矩阵,每次可以翻转一个点,其相邻的4个点都被翻转,问最少翻转几次可以全部变为0。 解析: 枚举第一行的翻转所有翻转情况然后逐行向下更新,如果上一行是1的话,那么下面一行肯定要翻转,因为只有下面一行能影响上面一行。 最后判断一下,最后一行是不是都是0,...

2015-05-20 20:20:01

阅读数 2604

评论数 0

poj 3087 Shuffle'm Up(bfs)

题意: 给定长度都为C两个字符串,S1,S2,和一个要求的结果字符串S12。先把 S2 的最下面一张牌放在最下面,然后S1,S2交错的叠放,得到新的S12,再把S12最下面的C个字符赋值给S1,把剩下的赋值给S2,再次重复上面的过程。最后求出要得到目标字符串S,问最少需要几步。 注意: 题...

2015-05-20 20:14:58

阅读数 1408

评论数 0

POJ 3126 Prime Path(bfs)

题意: 给定两个4位的质数a和b,从a开始每次只能改变a的一个数字,并且改完后的a还是质数,求a最少经过几次变换能得到b….. 比如1033变到8179最少需要6次,过程如下 1033 1733 3733 3739 3779 8779 8179...

2015-05-20 20:08:58

阅读数 444

评论数 0

POJ 2752 Seek the Name, Seek the Fame(kmp)

题意: 给你一个串,如果这个串存在一个长度为n的前缀串,和长度为n的后缀串,并且这两个串相等,则输出他们的长度n。求出所有的长度n。 解析: 此题考察kmp next[]数组的应用,不难。 AC代码:#include <cstdio> #include <cstring&...

2015-05-19 08:30:48

阅读数 411

评论数 0

POJ 1961 Period(kmp循环节)

题意: 考察一个字符串的从开始的子串是周期的并且计算出周期,kmp最小循环节问题。 解析: 这篇题解有对kmp循环节的证明 http://blog.csdn.net/scorpiocj/article/details/6295913 AC代码:#include <cstdio&...

2015-05-19 08:25:45

阅读数 378

评论数 0

POJ 2406 Power Strings(kmp循环节)

题意: 求一个字符串中最多有多少重复的子串。 解析: 利用KMP算法的性质,求解。 不知道怎么证明,姑且记下结论, 当lenlen % (len-next[len])=0时,T=len/(len−next[len]))T=len/(len-next[len])) AC代码:#i...

2015-05-19 08:14:30

阅读数 347

评论数 0

HDU 2612 Find a way(bfs)

解析: 求2个点到KFC的距离之和,使其最小,可用2次BFS,分别求出2个点到各个KFC的最短距离,然后找出和最小的即可。 AC代码#include <cstdio> #include <cstring> #include <algorithm> #incl...

2015-05-18 21:02:05

阅读数 369

评论数 0

POJ 1426 Find The Multiple(bfs+打表)

题意: 给一个数n,让你找出一个只有1,0,组成的十进制数,要求是找到的数可以被n整除。 解析: BFS+打表,队列用数组来模拟,如果直接用STL会超时。 AC代码#include <cstdio> #include <iostream> #include <...

2015-05-18 20:02:25

阅读数 320

评论数 0

FJUT 1120 求平均数(线段树的单点更新)

解析: 比较水的一道线段树问题,注意分母不能为空。 AC代码#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <cstdl...

2015-05-18 19:39:40

阅读数 358

评论数 0

FJUT 1115优化题(2)(线段树+二分)

题意: 给定n个点(xi,yi)。然后q个查询,每个查询是一个a,输出x坐标小于a的最大的y,不存在则输出-1 解析: 现将所有的坐标点按照x从小到大进行排序,然后每次搜索二分求出第一x坐标个小于a的数字的位置,然后用线段树求从0~该位置的最大值。 AC代码#include <std...

2015-05-18 19:36:02

阅读数 431

评论数 0

hdu 4006 The kth great number(线段树单点更新)

解析: 第K大数字问题,用线段树来求解。线段树每个节点保存当前编号的数出现的次数。每次查询从小到大第N-K+1个数(N为当前数的总数)。 AC代码#include <cstdio> #include <cstring> #include <algorithm>...

2015-05-18 19:17:46

阅读数 341

评论数 0

hdu 4054 Hexadecimal View(字符串)

题意 : 输出分三列。 第一列 : 0000: 表示当前语句的第1行 0010:表示当前语句的第二行。 以为规定一行只能输出16个字节, 所以代码中的一行可能要多行输出。 比如 该行代码一行有110字节 110 = 6 * 16 + 14就要输出 06e0: 第二列: 一个...

2015-05-18 19:13:30

阅读数 460

评论数 0

Hdu 4004 The Frog's Games(二分)

题意: 青蛙过河,河中有一定数量的石墩,并规定能跳的步数,求可能的最小步长过河。 思路: 最大值最小化问题一般用二分来求解。先将石墩距离起始点的距离排序,然后通过二分枚举求得是否存在一个m值(0~L),使得青蛙可以走过所有的石墩。如果存在且小于M,则记录满足条件的最小值,直至当前点到达n-...

2015-05-18 19:10:31

阅读数 324

评论数 0

hdu 4041 Eliminate Witches!(栈模拟)

题意: 给你一个字符串,转化为一棵树,输出先序遍历节点的顺序; 解析: 整个串由节点名字,’(‘、’)’、’,’ 组成,遇到一个括号时,当前左括号是当前括号内节点的父节点,括号内用’,’隔开的是兄弟节点,整体就是一颗树; 用栈模拟整个串来遍历该树,用vector来保存遍历节点的顺序。...

2015-05-18 19:00:47

阅读数 388

评论数 0

HDU 4046 Panda(线段树单点更新)

题意: 给你一个字符串,由’w’ 和 ‘b’ 组成,对该字符串有两种操作, 当输入为 0 a b 时,询问区间[a,b] 内有多少个串为 “wbw”; 当输入为 1 k ch 时,将下标为k的字符改为字符ch; 解析: 线段树单点更新的题目,用线段树来查询这个区间有多少个 “w...

2015-05-18 18:50:41

阅读数 349

评论数 0

Acdream 1116 Gao the string!(exkmp+矩阵快速幂)

题意: 要求你求出任意一个前缀,在后缀中出现的次数,并把这个次数对应于fibonacci数列,并求数列的和。 解析: 扩展KMP里的next数组中next[i]表示以字符串s的后缀i和s的前缀匹配的最长的长度,有了这个就可以用来求上次的这道题了。 那么next[i]+next[i+1...

2015-05-17 10:20:33

阅读数 570

评论数 0

HDU 5229 - ZCC loves strings(博弈+概率)

题意 ZCC有N个字符串,他正在和Miss G.用这N个字符串玩一个小游戏。ZCC会从这N个串中等概率随机选两个字符串(不可以是同一个)。然后,ZCC和Miss G.轮流操作。Miss G.总是先操作的。在每轮中,操作者可以选择操作A或操作B。 操作A:在两个串中选择一个当前非空的串,...

2015-05-17 10:07:32

阅读数 330

评论数 0

从头到尾彻底理解扩展KMP

1. 扩展KMP问题:求字符串S的所有后缀和字符串T的最长公共前缀。 扩展KMP可以用来解决很多字符串问题,如求一个字符串的最长回文子串和最长重复子串。2. 拓展KMP的next[]数组怎么计算?在解上面这个问题前我们要先解决一个类似的问题:求字符串s的所有后缀和字符串s本身的最长公共前缀; 我...

2015-05-16 09:01:22

阅读数 609

评论数 0

uva 1419 Ugly Windows(暴力求解)

题意: 给出一张图,模仿windows窗口程序,问有哪些窗口未被其他窗口覆盖。 解路: 暴力枚举,先找到窗口的左上角,然后枚举出长宽,再判断边框是否等于左上角字母,再判断边框里面,是否只有’.’。 AC代码#include <cstdio> #include <cstri...

2015-05-13 07:54:31

阅读数 484

评论数 0

uva 818 Cutting Chains(dfs+状态压缩)

题意 给出一些环,以及哪些环之间是相连的。 问所最少打开即可环,可以将这些环连成一串(注意不是环) 解析 因为n最大才15,可以用一个二进制数表示各个环是否被打开。 然后判断一下是否还有位置出度数大于2,以及是否有环的存在。 在以上两种情况都满足的情况下还要判断:打开环的...

2015-05-13 07:43:01

阅读数 392

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭