上一页 1 2 3 4 5 6 7 8 ··· 12 下一页
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1878判断图上是否有欧拉回路,首先要求是连通图,然后每个顶点的度数必须都为偶数(如果存在两个顶点度数为奇数则是存在欧拉通路)用dfs求连通分支的个数代码:#include #include #include #include using namespace std; vector G[1000]; bool vis[1000]; void dfs(int u) { vis[u]=1; int d=G[u].size(); for(int i=0;i>n>>m) { ... 阅读全文
posted @ 2013-09-05 23:08 814jingqi 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://poj.org/problem?id=3844思路: a[i]+a[i+1]+...+a[j]=s[j]-s[i]; 于是整除等价于 s[i]===s[j] (mod d); 然后统计出现了多少次 c[n][2]就可以了 。 值得注意的是,有可能50000* (50000-1)/2 要用long long每次进入一个新case 后把p 清零,sum【i】表示前i个数的和, 0= #include #include using namespace std; int sum[50005]; int p[1000000]; int main() { int T; ci... 阅读全文
posted @ 2013-09-04 11:10 814jingqi 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://poj.org/problem?id=3842 或者:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2610思路就是暴力求出每一种可能的情况,进行全排列(next_permutation可以去重)然后对每一种排列考虑前面的子串。为了防止一个情况被考虑两次,设置一个占位符b[10000000] 每次新输入数,记得将b清空,然后先转化成int数组,每次翻译成一个int时快一些。这个代码在Uva 阅读全文
posted @ 2013-09-04 01:36 814jingqi 阅读(225) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4639题目思路: 首先我们取出所有he这样的东西,考察连续的k个“he"串,通过找规律+数学归纳法容易证明有f【k】种方式,其中f为Fibonacci数列, 那么再统计这个串中有多少个这样的块就可以了,他们乘起来。代码:#include #include using namespace std;; int p[10000]; void pre() { p[1]=1; p[2]=2; for(int i=3;i>T; string s; int index=0; ... 阅读全文
posted @ 2013-09-03 22:26 814jingqi 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4642题解思路: 很容易得到,谁先把所有的硬币翻成反面朝上,谁就害得对方没办法继续下去,自己就获胜了,假设进行了K局,使得第一次全部的硬币都反面朝上了。事实上,k在比赛的一开始就确定好了,因为每次操作都会改变最右下角的那个1,0的奇偶性,那么最后一个数一开始是1,k必然是奇数,Alice获胜,一开始是0,k必然是偶数,Bob获胜。 嗯嗯,就这一点巧,感谢ChoiceZ的神YY~代码:#include #include #include using namespace std; int main(.. 阅读全文
posted @ 2013-09-03 22:03 814jingqi 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 比赛地址:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=30596#overview解题报告:(来自杭电ACM微博)1001注意到任意一个回文子序列收尾两个字符一定是相同的,于是可以区间dp,用dp[i][j]表示原字符串中[i,j]位置中出现的回文子序列的个数,有递推关系:dp[i][j]=dp[i+1][j]+dp[i][j-1]-dp[i+1][j-1]如果i和j位置出现的字符相同,那么dp[i][j]可以由dp[i+1][j-1]中的子序列加上这两个字符构成回文子序列,也就是dp[i][j]+=dp[i+1][j-1],注意 阅读全文
posted @ 2013-08-31 22:48 814jingqi 阅读(125) 评论(0) 推荐(0) 编辑
摘要: iSea WHU http://hi.baidu.com/iseasoulTwilightgod CUSThttp://blog.csdn.net/twilightgodAekdycoin FZUhttp://hi.baidu.com/aekdycoinForeverlin HNUhttp://hi.baidu.com/forverlin1204/blogMatrix67 PKUhttp://www.matrix67.com/blog/watashi ZJUhttp://watashi.ws/blog/tag/zoj/Sha崽 HDUhttp://www.notonlysuccess.comC 阅读全文
posted @ 2013-08-28 23:15 814jingqi 阅读(121) 评论(0) 推荐(0) 编辑
摘要: 题目地址:https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2330题目思路: 首先是乘法原理加法原理计数,对a [i]当做裁判的情况,记c[i] d[i] 分别表示前面和后面小于它的数的个数,ai当裁判方法数就是c[i]*(n-i-1-d[i])+d[i]*(i-c[i])了然后如果直接暴力统计ci di ,复杂度O(N*N) TLE; 本题的一个限制是a【i】两两不同, 那么他们可以作为下标,维护一个数组(实际写 阅读全文
posted @ 2013-08-27 21:20 814jingqi 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://poj.org/problem?id=2689题目思路: 找出int 内所有素数空间上时不允许的,但是题目要求l ,u的差不超过100w ,在空间上还是允许的。然后先找出5w以内的素数,这样的可以中这些素数作为合数最小的素因子将这个合数筛掉。 几个要注意的地方 【1】 因为l可能很大,j的起点不能去“p*p” 然后比L小就加一个p,想一下如果p=2,l很大会花很多时间的。 【2】 然后就是这个j 要用long long 存 ,因为我们找到的j的初值是p 的倍数中第一个大于等于L的,l很大时可能超long long。 【3】 这个筛法筛去的第一个数是4 所以1要特判 .. 阅读全文
posted @ 2013-08-27 01:03 814jingqi 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 题目地址:http://acm.sgu.ru/problem.php?contest=0&problem=499分析思路: 直接计算两两的最大公约数会超时的,我们换个角度看问题,我们找到输入进来的数的所有约数,如果某个数出现了两次或者以上,那么满足条件的最大的就是ggcd了然后就是类似于筛法找约数, 这样可以找到 1~n中,每个数不超过自己平方根的所有约数。 然后比平方根大的那个可以用它除出来(完全平方数要特判了)。然后不是暴力直接从最大的开始找出现过两次的,我们设置一个maxn来记录就好了,每次第二次出现的数和maxn比较一下就可以了。先看代码:#include #include # 阅读全文
posted @ 2013-08-25 03:14 814jingqi 阅读(171) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 12 下一页