摘要:
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2704题解: 1 看见括号匹配自然想到用栈去匹配,但是这里想记录最大长度,想法就是每次匹配以后还要知道匹配的括号在原来的序列中的下标,这样把括号存在结构体里最好了。 2 得到了匹配的序列以后,求最大的连续的“1”序列, 记得在最后面加上一个0,否则可能漏掉最后一段连续的“1”。 3输出子序列时,由于有可能完全没有匹配的,于是还设置一个bool non,如果没有一个“1”就直接输出空串。#include
#include
#include
... 阅读全文
摘要:
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2612题解: 1 只用找到星号的位置,然后比较两端 2使用algorithm中的反转比较方便,不用管第二段开始的位置 3 容易忽略的地方,至少b要和a去掉星号后一样长啊,否则 a*a 和a这种情况也匹配了 4要求多多的输入输出,不说了代码:#include
#include
#include
#include
using namespace std; int match(string a,string b) // a i... 阅读全文
摘要:
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=698题解: 额,水题一个,一点思维量都没有,就是逻辑判断理顺就好了。 耍赖使用了goto#include
#include
using namespace std; int isvowel(char ch)
{ if(ch=='a'||ch=='e'||ch=='i'||ch=='o'||ch=='u') return 1; else return 0; }
int isconsonan 阅读全文
摘要:
题目地址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26273#overview题解报告:http://blog.watashi.ws/2330/stankevich07/ 阅读全文
摘要:
题目地址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26274#overview题解报告:http://blog.watashi.ws/1213/andrew-stankevich-6-solution/ 阅读全文
摘要:
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2678题解 : 1本题的答案就是gcd(m,n) 2解释是这样的,棋盘上的点是 (i,j) 0<=i<=m-1; 0<=j<=n-1; 从(a,b)走k步到达的点就是 ((a+k)%m, (b+k)%n) 现在的问题就是,至少需要多少个整数对 (a,b) 构成一个 点集,使得 对任意的i,j ,0<=i<=m-1; 0<=j<=n-1;在这个点集中一定存在一个 (a0,b0) ,和一个整数k 。 成立着 ... 阅读全文
摘要:
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1315题解 : 1 一个很简单的题 没有什么算法在里面,完全考输入输出,基本功 。 2 很奇怪 每个案例后面总是输出一个空行,和一般的要求不一样 3 每次在调用cin.getline() 时 先用调用一次,吃掉前面cin没有管的回车换行符 4 判断某一个关键词在不在这个借口中时,将这个关键词一步步的移动,逐一去匹配,还要注意的是,即便匹配成功,这个关键词前面和后面不可以有字母,所以还要对匹配成功的地址进行特判。#include
#... 阅读全文
摘要:
题目地址:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2136经典DP,划分为这样的子问题: 记录 length【k】为,以ak为最后一个元素的最长上升子序的长度,那么求这个值时,只需要取出这个数之前的比它小的数,看它的length是多少,取出有最大的length那个。m记录的是之前子问题的length,初始化为0。这样实现的结果就是,有length【0】就可以求出length【1】,接着可以求出length【2】......。这样暴力是 O(2^n)的问题(所有的子集都拿出来考察)就变成O(n^2)了最后的结果是所 阅读全文
摘要:
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4602解题思路: 1设对n的分解中k出现的次数是 g(n,k) ,首先发现k从n往下举例的时候,前几项都是一样的(待证明) 然后只需要知道对n的划分中,一共有多少个数。 考虑将n分成k个数,有C(n-1,k-1)种分发,于是总个数就是sigma k*C(n-1,k-1) ; 2 利用kC(n,k)=n C(n-1,k-1) 很容易求和 ,找到了a(n)=sigma...- S(n-1) ;再列举一项相减就可以了。 最后得到a(n)=(2^(n-3) ) * ... 阅读全文
摘要:
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4602解题思路: 1设对n的分解中k出现的次数是 g(n,k) ,首先发现k从n往下举例的时候,前几项都是一样的(待证明) 然后只需要知道对n的划分中,一共有多少个数。 考虑将n分成k个数,有C(n-1,k-1)种分发,于是总个数就是sigma k*C(n-1,k-1) ; 2 利用kC(n,k)=n C(n-1,k-1) 很容易求和 ,找到了a(n)=sigma...- S(n-1) ;再列举一项相减就可以了。 最后得到a(n)=(2^(n-3) ) * ... 阅读全文