摘要:
这个题的灵感来自与前几天做的一个题,思路想好之后,忽然发现自己好想会做这类题目了,不过还是要折腾老久,因为好多细节处理不好。 wa了好多好多次了,终于加了个mod就过了,尼玛。。。。。。 [code lang="cpp"] i64 query(int pos) { i64 sum = 0 ; while(pos > 0 ) { sum += f[pos] %mod; pos -= lowbit(pos); } return sum; } void update(int pos,i64 val) { while(pos <= nn) { f[pos] += val 阅读全文
2013年4月4日
2013年3月10日
摘要:
http://acm.jlu.edu.cn/joj/showproblem.php?pid=2443 我水啊 刚开始想到的方程f[n+1,m] = f[n,m] + f[n,m-1] + … + f[n,m-n]; 但是这个方程时间复杂度是O(N^3)。 然后仔细观察,发现f[n+1,m] = f[n,m]+f[n+1,m-1],并且减去f[n,m-n-1]; 复杂度是O(N^2) [code language="cpp"] void init() { memset(f,0,sizeof(f)); f[1][0] = 1; for(int i=1; i= 0) f[i+1] 阅读全文
2013年3月8日
摘要:
约瑟夫环问题是一道经典的数据结构题目 问题描述:n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。 一般我们采用一个循环队列来模拟约瑟夫环的求解过程,但是如果n比较大的时候,采用模拟的方式求解,需要大量的时间来模拟退出的过程,而且由于需要占用大量的内存空间来模拟队列中的n个人,并不是一个很好的解法。 在大部分情况下,我们仅仅需要知道最后那个人的编号,而不是要来模拟一个这样的过程,在这种情况下,可以考虑是否存在着一种数学公式能够直接求出最后那个人的编号。 我们知道第一个人(编号一定是m%n-1) 出列之后,剩下的n... 阅读全文
2012年11月18日
摘要:
我大二了。。也不知道整天干的啥。。网赛我们很挫,网上找代码+跟别的学校换代码+全校刷一个账号才进了金华赛区,天津和成都都是申请的。天津还好一些,天津我们网赛学校排名71,而成都网赛我们学校排名很靠后了,教练不让我们申请,但我们还是申请了,嚷嚷着自己掏钱也要去,结果还是话的学校的钱,回来之后我却是很后悔。OUC总共去了三个赛区,也是我们实力不行。让我没想到的是三个赛区我都跟着去了,天津区打铁,金华拿了铜牌(估计是志愿者妹子漂亮的原因。。。),成都去看他们打铁。先记一下流水账。。题目拿到之后我就看到了f题,以为是个水题,其实是理解错题意了,然后敲出来发现样例不过,毛哥重新读了一遍题目,发现关键的一 阅读全文
2012年10月24日
摘要:
http://acm.sgu.ru/problem.php?contest=0&problem=548 还是太弱了,只会模板题和水题,稍微需要思考的就不会了,跟江哥讨论了一下午,还问了两个牛,才搞懂。。。 自己想偏了一些,总是卡在最后一步上,以后要从多个方向想问题,前后。。。 [code lang="cpp"] #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in 阅读全文
2012年10月23日
摘要:
独在异乡为异客,每逢佳节倍思亲。遥知兄弟登高处,遍插茱萸少一人。 阅读全文
2012年10月13日
摘要:
[code lang="cpp"] #include using namespace std; int main() { cout << "helloworld!" <<endl; return 0; } [/code] [music-player] 阅读全文