上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 25 下一页
摘要: 这个题本来有希望在比赛里面出了的当时也想着用递推 因为后面的数明显是由前面的推过来的但是在计算的时候 因为判重的问题 。。。很无语。我打算用一个tot[i]来存i的总种树,tot[i]+=tot[j]//j为可以由j推到i的一系列数,但这样是不对的,会产生大量重复计算。。。看了下标程才发现要用二维来... 阅读全文
posted @ 2014-04-29 16:47 KRisen 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 2014 csu校赛 I 题,比赛的时候拿着他看了几个小时愣是没弄出好的方法,我们也想过统计出每个root的节点总数,然后减去离它d层的子节点的数目,即为答案。但是因为树的存储是无序的,所以每次为了找到子节点还是需要搜索,这肯定是承受不了的。事实上,这个思路大体是对的,只是需要进行预处理,使得在找离... 阅读全文
posted @ 2014-04-25 15:45 KRisen 阅读(521) 评论(0) 推荐(0) 编辑
摘要: 是时候要做做数学类的题目了这属于比较简单的矩阵快速幂了,因为有个已知的矩阵循环的结论,所以为了节约时空,只需要保留一行即可,这个稍微有点难写,也不是难写,主要是注意细节。其他的矩阵快速幂一下即可#include #include #include #include #define N 505#def... 阅读全文
posted @ 2014-04-24 22:18 KRisen 阅读(282) 评论(0) 推荐(0) 编辑
摘要: 这个题目要求在一个大矩阵里面匹配一个小矩阵,是AC自动机的灵活应用思路是逐行按普通AC自动机匹配,用过counts[i][j]记录一下T字符矩阵以i行j列为开头的与P等大的矩阵区域 有多少行已经匹配了,显然如果该数值==p的行数,则说明匹配成功就是在自动机的过程中,匹配得时候要稍微多想一下,每次匹配... 阅读全文
posted @ 2014-04-18 17:28 KRisen 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 首先我们应该是枚举 L个位置上的每个字符来得到最终概率然后AC自动机的作用就是为了判断你枚举的地方是否对应了单词节点,如果对应了,就肯定要不得#include #include #include #include #include using namespace std;const int max_... 阅读全文
posted @ 2014-04-16 23:23 KRisen 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 因为字符集比较大,所以就不能用简单字典树,在字典树里面,用链表进行存储。这个倒是不难,练了下手统计的时候还是有点难搞,因为要算所有的两两比较的次数之和,对分叉处进行计算,注意细节#include #include #include using namespace std;const int N = ... 阅读全文
posted @ 2014-04-16 15:42 KRisen 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 第二道AC自动机的题目了,之前参考的是网上一个博客算法,不怎么好,难写而且占空间后来参照大白书做的这题,代码简洁多了#include #include #include #include #include #include #define N 12000using namespace std;map mc; //防止模板里出现重复的struct AutoTrie{ int ch[N][28]; int val[N]; int f[N]; int cnt[N]; int last[N]; int sz; void init() { m... 阅读全文
posted @ 2014-04-11 21:55 KRisen 阅读(145) 评论(0) 推荐(0) 编辑
摘要: http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=5235这种题目居然没想到,一开始往矩阵快速幂想去了,因为之前跪了太多矩阵快速幂,后来就。。哎,擦。怎么没想到就是个线段树呢因为1 A[x] * A[x-1] 这个是很容易推出的,比赛的时候看到这个就想那个快速幂去了,根本没往线段树上想,其实用线段树存储前面的矩阵,得到一个询问 1 0 A[x-2]L R,则访问 L+2 ,R的矩阵部分提取出来,再跟A[L] A[L+1]相乘就是结果了则建树为 nlogn,访问为mlogn,由于n和m都在10^5,所以可以承受... 阅读全文
posted @ 2014-04-07 16:54 KRisen 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 还是聪哥给我讲的思路才知道的,起初我利用两两互质去求发现有问题,互质只是必要条件而非充分条件,后来还是用的标准思路即其实最终只要保留最大的素数的幂即可,其他包含该素数幂但指数低的都不用了,这样就能保证序列最小公倍数不变,同时,为了字典序最小,只需一点小小的处理。在处理的时候遇到些小问题,主要是没考虑到每个值得因子没有求尽。#include #include #include #include #define ll long longusing namespace std;ll num[550],ans[550],prime[550];int n;ll gcd(ll a,ll b){ if... 阅读全文
posted @ 2014-04-07 11:45 KRisen 阅读(165) 评论(0) 推荐(0) 编辑
摘要: http://acm.whu.edu.cn/land/problem/detail?problem_id=1546这个题目还是聪哥教的方法过的首先搜索是必须的,而且通过搜索来缩点,这些应该要想到,即把图上的起点和终点还有能量点进行标记,之后用bfs找到这些个点的最短路,最多只有12个点,这样对12个点进行状态压缩DP,状态压缩这部分不是很好写用dp[i][j]表示在状态i的情况下,此刻在j点落脚的最大能量数,则先枚举i再枚举j,再枚举k,k代表已经存在于i里面的点 每次从dp[i][k]过度到dp[i][j],从dp[i][k]+dis[k][j]+dis[j][m+1]#include #i 阅读全文
posted @ 2014-04-04 21:45 KRisen 阅读(163) 评论(0) 推荐(0) 编辑
上一页 1 ··· 7 8 9 10 11 12 13 14 15 ··· 25 下一页