
字符串——简单类型
文章平均质量分 68
XDU_Skyline
Everything is over, everything is just beginning.
展开
-
习题3-9 子序列 UVa10340
#include#include#include#include#define max 100000char s[max], t[max];int main(){ //freopen("input.txt", "r", stdin); //freopen("output.txt", "w", stdout); while (scanf("%s%s", s, t) != EOF原创 2014-06-26 14:43:31 · 733 阅读 · 0 评论 -
HDU 5414 CRB and String (2015年多校比赛第10场)
1.题目描述:点击打开链接2.解题思路:本题要求判断字符串s能否通过添加若干个字符得到字符串t。首先,可以知道,s必须是t的一个子串(注意:不是连续子串)。第二,由于插入的新字符和它前面的字符c不同,因此如果t中有cnt个连续的c,那么在s中也必须有cnt个连续的c。因此,只要能够满足这2个条件,就一定可以成功实现转化。那么该如何做呢?两者可以结合起来判断,用i,j分别表示s,t串原创 2015-08-21 08:39:44 · 816 阅读 · 0 评论 -
ZOJ 3818 Pretty Poem (2014年牡丹江赛区网络赛J题)
1.题目描述:点击打开链接2.解题思路:本题是一道模拟题,输入一个串,要求判断是否形如“ABABA”或“ABABCAB”。只需要对两种情况逐一尝试即可。然而这道题有诸多细节需要考虑。这里说一下我自己的方法。首先,如果输入的串长度3.代码:#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#原创 2015-08-17 15:06:02 · 706 阅读 · 0 评论 -
#300 (div.1 2) B. Quasi Binary
1.题目描述:点击打开链接2.解题思路:本题利用扫描法解决。一开始想复杂了,把所有的01组成的数字全部都列举了出来,想一个个尝试。结果到最后也没能写成,放弃了。比赛后发现思路其实非常简单。把每一位的数字看做一根柱子的高度,逐层扫描即可。如果第j位的数字大于当前层i,那么这一位设置为1,否则设置为0。可以发现,最终的答案就是输入的数字中最大的那一位数,而设置每一位的值恰好可以利用string来方原创 2015-04-27 13:39:58 · 780 阅读 · 0 评论 -
#300 (div.1 2) A. Cutting Banner
1.题目描述:点击打开链接2.解题思路:本题要求在一个串中寻找一个子串,使得将它截去之后,剩下的部分刚好能拼成CODEFORCES.直接枚举子串的起点和终点,然后判断即可。这道题一开始没有注意Announcement中的提示,只能找一个串,最终迟迟找不到错因==,太可惜了。。3.代码:#define _CRT_SECURE_NO_WARNINGS #include#include原创 2015-04-27 13:01:12 · 834 阅读 · 0 评论 -
#294 (div.2) D.A and B and Interesting Substring
1.题目描述:点击打开链接2.解题思路:本题要求在s中找满足下列条件的字串:(i)i+1~j-1的字符串权值之和为0;(ii)s[i]==s[j];处理带权字符串的一般解法是利用前缀和。但我最初的算法效率十分低下:先求出前i个字符的权和。并将26个字母出现的位置依次保存到vector中。随后从0~len依次枚举每个位置的字符s[i],并枚举它的下一个出现位置,再计算这段子串是否满足条件(1)。原创 2015-03-01 16:15:03 · 729 阅读 · 0 评论 -
#297 (div.2) A. Vitaliy and Pie
1.题目描述:点击打开链接2.解题思路:本题其实就是一道模拟题,每次遇到小写字符,就把对应的个数加一,遇到大写字符,如果有钥匙,个数减一,否则cnt++。输出cnt即可。但比赛时候用了过多的STL,导致结果TLE了,导致我第一次A题都跪了==。其实直接用普通的标记数组就可以统计个数了。以后凡是能够用到C的,应该尽量用C,保证简洁与高效。3.代码:#define _CRT_SECURE_原创 2015-03-27 10:15:52 · 1238 阅读 · 0 评论 -
#297 (div.2) B. Pasha and String
1.题目描述:点击打开链接2.解题思路:本题也是一道模拟题,但如果不加一些加速措施会导致TLE。由于两次相同位置的交换等价于没有交换,因此要想办法运用这一性质,减少无所谓的交换操作。首先,统计每个位置出现的次数,同时用a数组存放出现了哪些位置。根据交换的性质,我们只用考虑出现奇数次交换的位置即可。把出现奇数次的位置放入vector中,如果位置a,位置b都是出现了奇数次,且中间没有位置需要交原创 2015-03-27 12:42:44 · 944 阅读 · 0 评论 -
习题3-3 数数字 UVa1225
#include#include#include#define max 40000+10char s[max];int main(){ int T; scanf("%d", &T); while (T--) { int n; int first = 1; scanf("%d", &n); char*p = s; for (int i = 1; i <= n;原创 2014-06-20 17:28:55 · 1105 阅读 · 0 评论 -
习题 3-4 周期串 UVa455
#include#include#include#define max 100+10char s[max];int main(){ int n, len; scanf("%d", &n); getchar(); while (n--) { getchar(); gets(s); len = strlen(s); for (int i = 1; i <= len原创 2014-06-20 17:33:22 · 5637 阅读 · 7 评论 -
例题2.8 总是整数 LA4119
1.题目描述:点击打开链接2.解题思路:本题利用差分序列的性质解决,将1,2,..,k+1都带入表达式计算,如果对所有的i,都有D整除P(i),那么该序列所有值都为整数,否则不都为整数。因为如果某一项不能整除,那么d^kP(i)就不是整数,因此不总是整数。不过本题的一个难点在于如何解析表达式,可以发现,多项式的构成都符合an^k的形式,因此可以对第i项,找到它的系数a[i]和指数p[i],从而原创 2015-08-22 23:07:59 · 796 阅读 · 0 评论