字符串
文章平均质量分 53
无敌大饺子
这个作者很懒,什么都没留下…
展开
-
UVA 153 - Permalex
看了题解后才会的:If you generate all permutation of given string then you got TL, You can easily solve this problem using the formula : n! / (r1! * r2! * r3!...) Here n = total character, r1, r2, r3..= n原创 2013-03-16 08:07:39 · 1076 阅读 · 0 评论 -
ZOJ 1905 Power Strings
枚举1 - len/ 2,满足条件马上跳出循环.#include #include #include #include using namespace std;const int maxn = 1000010;char s[maxn];int main(){ while (scanf("%s",s + 1) && strcmp(s + 1, ".")){ int len =原创 2013-05-18 09:48:59 · 553 阅读 · 0 评论 -
ZOJ 2571 Big String Outspread
看到括号就想到了栈什么的,这题可以用递归展开括号,不需要栈.#include #include #include using namespace std;string unfold(){ string ret,tmp; char ch; int times = 1; while ((ch = getchar()) != ')' && ch != '\n'){ if(isdi原创 2013-05-18 10:15:04 · 588 阅读 · 0 评论 -
ZOJ 3179 Calculate With Abacus(字符处理)
乱搞题.#include #include #include using namespace std;const int maxn = 10;char abacus[maxn][maxn];int main(){ int T; scanf("%d",&T); while(T--){ int s, t, sum = 0; scanf("%d %d\n", &s, &t)原创 2013-05-08 17:49:17 · 677 阅读 · 0 评论 -
ZOJ 1808 Immediate Decodability(trie)
求一组字符串中 是否存在某个串是另一个串的前缀.其实这题想怎么搞就怎么搞,主要是第一次用trie树,.#include #include using namespace std;struct node{ int flag; node * cld[2];}tre[100], *root;int cnt;char buf[30];void init(){ memset(tr原创 2013-05-09 21:36:49 · 540 阅读 · 0 评论 -
ZOJ 1831 Substitution Cypher(字符串)
水.#include #include #include #include const int maxn = 100;char plain[128],cipher[128], tb[128];char buf1[maxn], buf2[maxn];int main(){ gets(plain); gets(cipher); int len = strlen(plain);原创 2013-05-10 11:38:21 · 681 阅读 · 0 评论 -
ZOJ 2876 Phone List(trie树)
判断是否某个电话是另一个电话的前缀.典型的trie树应用.#include #include #include using namespace std;const int maxn = 10001;struct node{ bool flag; node * chd[10];}trie[maxn * 6], *root;int n, cnt;char buf[30]原创 2013-05-09 22:30:39 · 598 阅读 · 0 评论 -
ZOJ 3432 Find the Lost Sock
先排序,然后判断str[i]和str[i+ 1]是否相等,不相等,说明少了这双袜子。#include #include #include #include using namespace std;const int maxn = 2000001;int n;struct node{ char data[8];}strs[maxn];bool cmp(const node &原创 2013-05-23 23:24:42 · 612 阅读 · 0 评论 -
ZOJ 2514 Generate Passwords
水题,字符替换,不解释了.#include #include #include const int maxn = 1010;int n;char usn[maxn][15], pwd[maxn][15];bool modified[maxn];int main(){ while(scanf("%d", &n) && n){ memset(modified, 0, size原创 2013-05-23 21:02:23 · 493 阅读 · 0 评论 -
ZOJ 2104 Let the Balloon Rise
继续水题。#include #include #include #include using namespace std;map cnt;int n;char buf[100];int main(){ while(scanf("%d", &n) && n){ cnt.clear(); int maxv = 0; str原创 2013-05-28 20:15:49 · 424 阅读 · 0 评论 -
ZOJ 3121 Arne Saknussemm
字符串解密水题.最后一列注意一下就可以.#include #include #include #include using namespace std;const int maxn = 1010;char str[maxn];int n;int main(){ while(~scanf("%d", &n)){ scanf("%s",str);原创 2013-05-30 10:55:47 · 532 阅读 · 0 评论 -
UVA 1368 DNA Consensus String
给出一组等长的字符串S求出字母序最小的字符串y,满足y和S的Hamming距离最小.两个字符串的Hamming距离等于相同位置上不同字符的位置个数.y和S的Hamming距离等于y和所有的Si的Hamming距离和.对于每个位置j,求字符次数最多的S[i.j]输出就可以了.#include #include using namespace std;const int ma原创 2013-06-09 17:10:36 · 521 阅读 · 0 评论 -
HDU 3336 Count the string(KMP)
这篇文章讲解的非常好.http://972169909-qq-com.iteye.com/blog/1114968主要要理解KMP的next数组.#include #include #include using namespace std;const int MAX = 200010; char A[MAX];int next[MAX];void compute_next原创 2014-02-24 19:04:43 · 493 阅读 · 0 评论 -
ZOJ 3542 Hexadecimal View(字符串)
控制好格式就好了.printf的%x很方便.#include #include #include using namespace std;const int maxn=4100;char buf[maxn];int main(){ while (gets(buf)&&strcmp(buf,"")){ int len=strlen(buf); for (int i=0原创 2013-05-01 09:56:07 · 615 阅读 · 0 评论 -
ZOJ 1960 Anagram Groups(字符串处理)
我用的是map,首先按照字母出现次数把各个单词分类,然后排序输出.注意的是如果某个单词出现两次以上,那么输出组大小的时候也要算进去,但是输出单词是时候只能输出一次这个单词.#include #include #include #include #include #include #include #include using namespace std;char bu原创 2013-04-29 11:28:00 · 694 阅读 · 0 评论 -
ZOJ 3674 - Search in the Wiki
找各个单词之间的公共tips,用一个数组cnt来计数,cnt[i]值为要查询的单词的数量就是一个common word,最后对答案拍下序#include #include #include #include #include #include #include using namespace std;#define MAX 1000char buf[2048];map原创 2013-03-30 21:55:28 · 698 阅读 · 0 评论 -
UVA 3490 - String Successor
#include #include #include #include using namespace std;void carry(string &str,int i){ if(str[i]=='Z'+1||str[i]=='z'+1||str[i]=='9'+1){//是否产生进位 char ch; if(str[i]=='Z'+1)ch='A',str[i]='A';原创 2013-03-23 14:04:01 · 445 阅读 · 0 评论 -
UVA ZOJ 3490 - String Successor
#include #include #include #include using namespace std;void carry(string &str,int i){ if(str[i]=='Z'+1||str[i]=='z'+1||str[i]=='9'+1){//是否产生进位 char ch; if(str[i]=='Z'+1)ch='A',str[i]='A';原创 2013-03-23 21:50:30 · 543 阅读 · 0 评论 -
UVA 10878 - Decode the tape
很有趣的题目,其实每一行都是一个字母的ASCII码的二进制表示,o表示1 空格表示0#include #include #include #include using namespace std;const int conPow[]={1,2,4,8,16,32,64,128,256,512};char buf[100];char toDecimal(string & str原创 2013-03-25 08:27:47 · 505 阅读 · 0 评论 -
UVA 10851 - 2D Hieroglyphs decoder
对于每一列,枚举所有的字符就可以#include #include #include #include using namespace std;#define MAX 100char H[11][MAX];int conPow[]={1,2,4,8,16,32,64,128,256,512,1024};char bFunc(int i,char c){ if((c/conPo原创 2013-03-25 08:29:38 · 806 阅读 · 0 评论 -
UVA 641 - Do the Untwist
公式中的 mod 28看起来似乎多余#include #include #include #include #define MAX 100char str[MAX],table[MAX+30],rTable[MAX],plainText[MAX];int k;void init(){ int i=1; table['_']=0,table['.']=27; rTabl原创 2013-03-27 22:29:58 · 750 阅读 · 0 评论 -
HDU 3068 最长回文 / POJ 3974 Palindrome
manacher算法,O(n)求最长回文以下内容转自:http://www.cnblogs.com/wuyiqi/archive/2012/06/25/2561063.html其实原文说得是比较清楚的,只是英文的,我这里写一份中文的吧。 首先:大家都知道什么叫回文串吧,这个算法要解决的就是一个字符串中最长的回文子串有多长。这个算法可以在O(n)的时间复杂度内既线性时间复杂原创 2013-04-10 16:22:07 · 632 阅读 · 0 评论 -
ZOJ 1073 Round and Round We Go(高精度乘法)
#include #include #include #include #include using namespace std;const int maxn=80;int len=0;char str[maxn];string mul(string s,int n){ int carry=0; for (int i=s.size()-1;i>=0;--i){ int原创 2013-04-12 16:11:14 · 683 阅读 · 0 评论 -
ZOJ 1958||POJ 2269 Friends(表达式计算)
我的做法是把中缀的表达式转换成后缀的便于计算#include #include #include #include #include #include #include using namespace std;vectoropStak;vectorophStak;queueexpQueue;int opLev[128];bool cnt1[128],cnt2[12原创 2013-04-17 21:49:09 · 882 阅读 · 0 评论 -
ZOJ 3700 Ever Dream(字符串)
普通的字符串处理用map比较方便#include #include #include #include #include #include #include #include using namespace std;const int maxn=105;char buf[maxn];mapcnt;map >mvs;int main(){ int t,n; sc原创 2013-04-20 17:38:15 · 670 阅读 · 0 评论 -
ZOJ 3309 Search New Posts(stl map)
用的stl的map,排序主要靠key.#include #include #include #include #include using namespace std;mapsToNum;struct state{ string name; int v; bool operator<(const state &rhs)const{ return v>rhs.v||(原创 2013-04-30 17:45:42 · 600 阅读 · 0 评论 -
UVA 20002 Partitioning by Palindromes(简单DP)
题意:给出一个字符串,求能最少划分成几个连续子串,使得每个子串都是回文串.思路:设dp[i]为前i个字符划分的最优解,那么dp[i] = min(dp[i], dp[j] + 1)这里满足满足j + 1..i为一个回文串.可以用一个二维数组预处理求出x...y的串是否为回文串来做.#include #include #include using namespace std;原创 2014-04-17 17:16:43 · 604 阅读 · 0 评论