上一页 1 2 3 4 5 6 7 8 9 ··· 66 下一页
摘要: HDU-4676Sum Of Gcd题意:给定一个1-N的全排列序列,N同样的有, , , , , , , ,如果此时以为对任意一个因子的个数 t ,取C(2, t)就错了,且不说因子个数只有一个的数不能够成为公因子(例如, 等),就算成为公因子也未必是最大的公因子(例如等)。实际在统计的过程中不采用组合数的方式,而采用观察单个数带来的影响的方式。考虑到已知数 A 的因子 d 在区间其他数中出现了 k 次,那么如果 d 是所有gcd(A, other)的值时,那么最终的结果加上k*d,但这是不一定的,且 d 的因子肯定也是 A 的因子,当枚举到 d 的因子 d' 时显然就不能够加了。当 阅读全文
posted @ 2013-08-16 14:04 沐阳 阅读(442) 评论(0) 推荐(0) 编辑
摘要: test 阅读全文
posted @ 2013-08-16 13:35 沐阳 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 引用:刘聪《浅谈数位类统计问题》在信息学竞赛中,有这样一类问题:求给定区间中,满足给定条件的某个 D 进制数或此类数的数量。所求的限定条件往往与数位有关,例如数位之和、指定数码个数、数的大小顺序分组等等。题目给定的区间往往很大,无法采用朴素的方法求解。此时,我们就需要利用数位的性质, 设计 log(n)级别复杂度的算法。 解决这类问题最基本的思想就是 “逐位确定”的方法。下面就让我们通过几道例题来具体了解一下这类问题及其思考方法。SPOJ-2319Sequence题意:给定所有 K 位二进制数:0,1,…,2^K-1。你需要将它们分成恰好 M 组,每组都是原序列中连续的一些数。设 Si(1 ≤ 阅读全文
posted @ 2013-08-11 11:57 沐阳 阅读(1185) 评论(0) 推荐(0) 编辑
摘要: 友情提示:使用该模板的注意了,在大数减法里有一个小错误,导致减法可能会出错// 原来的写法,将t1.len错写成了len while(t1.a[len - 1] == 0 && t1.len > 1){ t1.len--; big--;}// 改正后while(t1.a[t1.len - 1] == 0 && t1.len > 1){ t1.len--; big--;} #include #include #include #include #include using namespace std; #define MAXN 9999#define 阅读全文
posted @ 2013-08-10 15:33 沐阳 阅读(2567) 评论(0) 推荐(0) 编辑
摘要: HDU-4655Cut Pieces题意:有N个格子能够被涂色,每个格子能够涂1-ai 种颜色,当N=6,涂色方案:112233 认为方案中共有3个颜色块;涂色方案:121212 认为方案中共有6个颜色块。所谓颜色块也就是整个涂色方案中相同连续的颜色被视作为一个颜色块。问如何安排 ai 的排列使得所有方案颜色块之和最大。分析:从反面求解,首先能够产生的方案数一共有a1*a2*a3*...*an种,每种方案在没有相邻颜色认为为同一颜色块的情况下,颜色块的数量均为n。那么如何减掉重复计算的。可以考虑到任何一个k长连续颜色块,若统计其相邻格子颜色相同数量为k-1,如果减去这些相邻格子数正好满足同一颜 阅读全文
posted @ 2013-08-09 11:54 沐阳 阅读(645) 评论(0) 推荐(0) 编辑
摘要: test 阅读全文
posted @ 2013-08-09 11:19 沐阳 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 后缀数组是解决一系列字符串题目的利器,后缀数组中保留了这样的信息。sa[i]表示排名为第 i 位的后缀是从sa[i]开始的。通过倍增算法可以在O(nlogn)的时间复杂度内将所有的后缀进行排序。而height数组也是在处理问题中经常要使用到的,height[i]表示排名第 i 的后缀与排名第 i-1 位的后缀的最长公共前缀的长度。具体见代码。#include #include #include #include using namespace std;const int N = 100005;int wa[N],wb[N],wv[N],ws[N];int cmp(int *r,int a,in 阅读全文
posted @ 2013-08-02 21:43 沐阳 阅读(4250) 评论(0) 推荐(4) 编辑
摘要: HDU-4632Palindrome subsequence题意:给定一个字符串,长度最长为1000,问该串有多少个回文子串。分析:设dp[i][j]表示从 i 到 j 有多少个回文子串,则有动态规划方程:str[i] != str[j]:dp[i][j] = dp[i+1][j] + dp[i][j-1] - dp[i+1][j-1];str[i] = str[j]:dp[i][j] = dp[i+1][j] + dp[i][j-1] + 1.#include #include #include #include #include using namespace std;const int 阅读全文
posted @ 2013-08-02 17:46 沐阳 阅读(398) 评论(0) 推荐(0) 编辑
摘要: HDU-4622Reincarnation题意:给定一个字符串,有Q次询问,每次询问得出区间[L, R]内有多少个不同的子串。分析:后缀数组搞,不过hash+dp也能够搞定这题,详解见http://www.cnblogs.com/Lyush/p/3233573.html。#include #include #include #include #include #include using namespace std;const int N = 2005;char str[N];int len, seq[N];int sa[N], rank[N], height[N];int wa[N], wb 阅读全文
posted @ 2013-07-31 19:56 沐阳 阅读(667) 评论(0) 推荐(0) 编辑
摘要: 原作地址:http://algorithmisabitch.diandian.com/post/2013-06-19/40051694367相信使用过MFC编程的朋友对CString这个类的印象应该非常深刻吧?的确,MFC中的CString类使用起来真的非常的方便好用。但是如果离开了MFC框架,还有没有这样使用起来非常方便的类呢?答案是肯定的。也许有人会说,即使不用MFC框架,也可以想办法使用MFC中的API,具体的操作方法在本文最后给出操作方法。其实,可能很多人很可能会忽略掉标准C++中string类的使用。标准C++中提供的string类得功能也是非常强大的,一般都能满足我们开发项目时使用 阅读全文
posted @ 2013-07-29 13:47 沐阳 阅读(177) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 66 下一页