![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
STL与字符串
mig_davidli
稍微明白点算法和C++,参加过几个小项目。。
展开
-
[bitset用法]SDUT 2841 Bit Problem
来源:点击打开链接可以模拟过,不过练习这个题的目的是学习stl中的bitset,一个神奇的二进制容器.和vector/MAP等容器一样,bitset具备stl库函数的几乎所有特性,同时加入了一些自己的东西,对二进制处理十分便利,尤其是在找零和找一的方面.ps:遍历的话,bitset默认是从后往前遍历的.所以不要自己再倒过来了.一些库函数及用法的实例:典型的bitset初原创 2014-05-04 21:53:31 · 1039 阅读 · 0 评论 -
【许久不见的STL和优先队列君】HDU1509——Windows Message Queue
题目链接在此 这个题可能是我找回状态的前奏,个人感觉。 由于BFS至今不懂,推到了数组不懂,再往上推,还是对数据存储的结构不能烂熟于兄,所以会针对数组,栈,队列,链表等初等存储结构上下一些功夫,当然还有以后的树状数组,线段树,划分树,红黑树,总理树,ORZ树……等数据结构上进行一些练习。 本题可以用数组或一般队列实现,但是鉴于本人的特色,选用了完全自主风格的优先原创 2012-11-13 20:22:52 · 1350 阅读 · 0 评论 -
【注意getline吃空格】第三届ACM/ICPC程序设计知识竞赛—— 又见回文
来源:点击打开链接求十万个字符以内的回文串,可以采用上一篇中的manacher算法,另外要判断空格,把无关的空格去掉。按这个思路,WA了两次,原因是getchar()的时候会把第一个样例的第一个字符给吃掉,但如果不加,需要按两下回车才有结果,与题目不符,只能动手判断一下了。。// 原串最大长度N// 返回最大回文字串 res#include #include #include原创 2013-05-26 22:19:28 · 1786 阅读 · 0 评论 -
【Manacher模板】HDU 3068——求最长回文子串
来源:点击打开链接直接做会超时,需要优化,网上通行的算法是manacher算法(具体原理还不是很明白),这里可以当模板使。// 原串最大长度N// 返回最大回文字串 res#include#include#include#include#includeusing namespace std;const int N = 110009;int rid[N<<2];stri原创 2013-05-21 15:39:28 · 1151 阅读 · 0 评论 -
【似乎想多了】HDU 2600——War
题目链接:点击打开链接看时间和内存还以为要使用到某些存储结构方面的 内容,结果绕了一圈,最后还是用排序等简单知识解决了。。有的时候适当乐观也是好的。。#include #include #include #include using namespace std;class war{ public: int starttime; int endtim原创 2013-05-09 13:36:47 · 1081 阅读 · 1 评论 -
【优秀字符串水题】UVA 490—— Rotating Sentences
题目来源:点击打开链接不错的水题,需要注意的细节有很多的,比如getline的用法,怎么输出(画图也可),怎么得出结果,大于的比较(这个WA了若干次)#include #include #include using namespace std;string pack[300];int len[300];int main(){ int cnt=0; int mostlo原创 2013-04-21 15:54:41 · 1341 阅读 · 0 评论 -
【腾讯马拉松3月22日】 HDU 4510 小Q系列故事——为什么时光不能倒流
腾讯初赛就悲剧在这个题上了,让水题君情何以堪。。。注意:1、12小时制。2、减的数目是没有限制的,别忘了拉回来。。用24小时制的代码改的,WA浪费了一大堆时间,瞬间落后200名。。#include #include #include #include #include using namespace std;int main(){ int testcase; ci原创 2013-03-24 20:24:42 · 846 阅读 · 0 评论 -
【模拟细节毕业题】SDUT 2411——Pixel density
来源:点击打开链接山东省第三届ACM省赛的题。题不难,是个人就能读懂,但是WA的特别多,现场最多的队WA了26次,好多B题(亿级DP+贪心)改过了的队栽在了这个看似简单的模拟上。注意点:1、小数点可以没有,用小数点和星号做分隔符的可以省省了。2、空格没说几个,用getline()相当麻烦,不如手动输入字符串数组。3、inches不是唯一分隔符,手机名称中可能带inches字样,原创 2013-02-26 16:21:59 · 670 阅读 · 0 评论 -
【MAP模拟】SDUT 1471 A + B problem
来源:点击打开链接还是A+B,难点是会拼写英文(囧)和处理字符串。转换字符串和数字可以采用map的方程。简要用法:map name(名称)定义:可以直接使用下标name[T1的内容]来访问T2,如果T2是INT或char型的话还可以自加。。详情请见STL相关。。#include #include #include #include using namespace std;原创 2013-02-03 22:25:14 · 623 阅读 · 0 评论 -
谁再说HDU1048是水题很简单我和他急=0=(1)—模拟字符串
这个实在是怨念深重的一个问题,没想到用它来开篇了,加密解密的,凯撒密码的变种,字符串模拟中最简单最简单的一类,但是让输入输出给搞死了,暑假搞死,现在依然被搞了30MIN,真是弱爆了。这个题INPUT SAMPLE:STARTNS BFW ……一堆……ENDSTART……一堆……END……ENDOFINPUT OUTPUT:IN WAR……解密之后原创 2012-10-16 11:21:21 · 589 阅读 · 0 评论 -
【STL+并查集+卡格式卡时间】HDU 3172——Virtual Friends
题目:点击打开链接这个题算是并查集的中级应用,给出一队人名,求记录社交朋友的匹配组数。提示:朋友的朋友也是你的朋友。并查集好说,这个题trick相当多.....WA了10次以上:1、请全部使用scanf,这个题卡时间非常严,char[]也是可以往string的map容器中装的,无所谓。2、查找函数最好使用非递归版。3、要建立一个数组,用来记录当前节点的森林层数。4、输入格式原创 2013-01-23 14:30:21 · 663 阅读 · 0 评论 -
【CODEFORCE 4C】map容器的妙用——Registration system
题目来源:CODEFORCE 4C点击打开链接本来想用char 模拟的,结果发现太麻烦放弃了。然后想用queue做,发现依然太麻烦,TLE了。最后想到了MAP,这个传说中的多项映照容器,更奇葩的是,他已经重载了[ ]运算符,访问一个当成下标可以直接切换到另外一个,如果找不到他会自动添加上一个。最后只花了不到二十行解决了问题,STL果然是个IMBA的东西 = =#include #原创 2012-12-03 12:05:05 · 992 阅读 · 0 评论 -
【优先队列/huffman】sdut 2848/poj 3253——Fence Repair
来源:点击打开链接原创 2014-05-05 17:28:05 · 1653 阅读 · 0 评论 -
【CodeForce #239 Div2】408B——Garland
来源:点击打开链接字符串处理。模拟可过。将字符串转化成两个数组,一个存放准备的纸数,另一个存放需求的纸数,最后简单判断一下大小比较的关系即可。#include #include #include #include using namespace std;int need[26];int had[26];int main(){ string have,wants; c原创 2014-03-30 18:31:34 · 1302 阅读 · 0 评论 -
【周全考虑】CodeForces 245B——Internet Address
题目要求是将一串字母转化成网址——形如格式http(ftp)://xxx.ru/xxxx的样子,看上去很简单,可是还是很容易出错。刚开始找的时候是按照寻找第一组http/ftp,然后寻找第一个ru,构成网址,但是报错了,反例如下:httpruc所以不能寻找第一个网址,也就是说尽量避免.ru之前没有东西,这样是不合法 的。然后注意http是四个字符,ftp只有三个字符,所以不能固定。。原创 2013-08-16 16:02:50 · 1024 阅读 · 0 评论 -
【水一发next_permutation】poj 1146——ID Codesm
来源:点击打开链接求字典序下一位,没有直接输出没有。全排列函数秒水过。#include #include #include #include using namespace std;int main(){ int testcase; string tar; while(cin>>tar && tar!="#") { if(next_permutation(tar.原创 2013-08-14 16:43:56 · 988 阅读 · 0 评论 -
【优先队列】HDU 1873——看病找医生
来源:点击打开链接看路径记录的BFS之前,再看一遍优先队列的用法。优先队列的排序规则可以用运算符重载的方式完成,通常意义下,应该用friend bool operator #include #include #include #include using namespace std;class hospital{ public: int lev原创 2013-08-04 15:47:28 · 1208 阅读 · 0 评论 -
【不严谨的NEXT函数陷阱】poj 1961——Period解题报告及反例一组
题目来源:(POJ 1961版) 点击打开链接 (HDU 1358版,这两个测试数据不一样)点击打开链接KMP字符匹配题目,求整个序列中大于1个重复子串位置和数据,利用性质i/(i-next[i])和i%(i-next[i)来判断之,详情可以见这里。这个题POJ的测试数据比较严谨,有些写的不严谨的NEXT数组会被判错。很多人拙计的问为什么错原创 2013-01-25 09:56:40 · 1227 阅读 · 0 评论 -
【坑爹卡时题】Poj 2406 Power String
这个题非常非常非常坑爹。坑爹的不是算法,是卡时间。(十分的卡)这个题利用了KMP中next数组的性质,即以下结论:•给出结论:如果len%(len-next[len-1])==0,则字符串中必存在最小循环节,且循环次数即为 len/(len-next[len-1]),别问我为什么,我证明弱渣。。根据这个性质,很快的得出了代码,但是一直TLE。。#include #incl原创 2013-01-22 11:18:48 · 965 阅读 · 0 评论 -
【String+Map版】从poj 1002——487-3279的STL做法和若干陷阱来分析MAP
题目:点击打开链接求重复的号码东西。第一反应就是MAP(他们有用hash做的),写起来也很顺(我指针弱渣)实际应用的时候却发现了一些陷阱,导致了若干次的wa.原理很简单:打表,转化成数字,忽略横杠,添加到MAP里,根据MAP自动管理的特性(自动保持升序,自动开内存++等)输出重复的次数。但陷阱也挺麻烦,可能和我略奇葩的思维有关1、删除横杠。下面的代码,看上去很对有木有??删除横原创 2013-01-21 11:38:04 · 5844 阅读 · 6 评论 -
【KMP变形求公共子串】HDU 1867——A+B for U again
题目:点击打开链接KMP的常见变形。寻找两个字符串,求这两个子串的叠加串。可以看到公共序列的影子,KMP模板中的返回值变成J就可以过。WA的常见理由:1、没有注意到相同不消字母时按字典序排列,样例:efgh abcd 结果:abcdefgh2、没有注意到kmp(a)=kmp(b)但有重复子串时怎么处理,样例:as sa 结果:asa3、忘记了反向输出时的情景,例如:asdk q原创 2013-01-20 20:06:29 · 1025 阅读 · 0 评论 -
【map热手题】HDU 1004—Let the Balloon Rise
题目:点击打开链接建议初学STL的人用MAP来切这道水题,可以对MAP的方便之处有更加深刻的理解。因为调用和查找的确挺简单的。效率据查阅资料,是lgN.#include #include #include using namespace std;int main(){ int ballnum; while(cin>>ballnum && ballnum!=0) {原创 2013-01-21 14:39:57 · 889 阅读 · 0 评论