- 博客(405)
- 资源 (1)
- 收藏
- 关注
原创 蒙特卡洛方法
蒙特卡洛方法是由冯·诺伊曼、斯塔尼斯拉夫·乌拉姆、尼古拉斯·梅特罗波利斯三位科学家共同发明,以概率统计为指导的一类非常重要的数值计算方法。举例说明蒙特卡洛思想:假设我们要算一个不规则图形的面积,那么图形的不规则程度和计算的复杂程度成正比。假如你有一袋豆子,把豆子均匀的朝这个图形上撒,然后数这个图形中有多少颗豆子,这个豆子的数目就是图形的面积。当豆子越小,撒的越多时,结果就越精确。借助计算机程序
2016-08-02 09:30:51
1004
原创 风暴项目个性化推荐系统浅析
风暴项目的主要任务是搭建自媒体平台,作为主开发人员的我希望把工作重心放在个性化推荐系统上。目前风暴项目的个性化推荐是基于用户行为信息记录实现的,也就是说对于每条资讯,数据库中有字段标明其类型。建立一张用户浏览表,对用户的浏览行为进行记录,从中可以获取当前用户对哪类资讯感兴趣。若用户第一次登陆,则按默认规则选取热点资讯做推荐,及所有资讯按浏览量降序排序,取前4个。另外,我考虑到后期可能有商业
2016-05-30 13:23:43
1199
原创 Aizu - 0033(深搜)
题目链接:点击打开链接解析:深搜。用vis数组做标记,1的代表第一个数组,0的代表第二个数组。通过dfs生成第一个递增的数组,然后检查余下数字组成的第二个数组。完整代码:#include #include #include #include #include #include #include #include #include using nam
2016-03-17 15:34:14
942
原创 Aizu - 0118(深搜)
题目链接:点击打开链接解析:深搜无疑,和水洼那题类似。以查找过的赋值1,然后每次找不是1的位置,一搜一片即可。最后记录多少有片区域。完整代码:#include #include #include #include #include #include #include #include using namespace std;const int ma
2016-03-17 08:18:19
1655
原创 POJ - 1979(深搜)
题目链接:点击打开链接解析:深搜无疑,搜的时候记得把当前点置为不可行,之后在搜周边点。另一个坑点是,要特别考虑@周边都是墙这种情况,此时输出0(只有他当前的那一个点)。完整代码:#include #include #include #include #include #include #include #include using namespace
2016-03-17 08:03:35
611
原创 51NOD1265(四点共面)
题目链接:点击打开链接解题思路: 判断四点共面,先求出三点构成的平面的法向量(叉积),如果第四个点和前三点任意一点构成的向量与平面法向量垂直(点积为0),则四点共面. 回忆下叉积和点积.对于三位空间向量,叉积公式为 =(),=(),a×b=(-)i+(-)j+(-)k,写成行列式形式
2015-10-24 11:11:53
847
原创 ZOJ1007(数论)
题目链接:点击打开链接解题思路: 纯粹的数学题,没有输入,直接要求输出.直接给出的求和式子极限到无穷,无法直接计算.Hint里给出了提示,大意就是说求g(x) - g(1)的求和极限,最后再加上g(1)就能求出g(x). 由g(x) - g(1) 能够得出 1 / k*(k+x) - 1 / k * (k + 1) = (1 - x) / k * ( k + 1) * (
2015-10-23 22:14:01
1373
原创 51NOD1264线段相交
题目链接:点击打开链接解题思路: 用直线和点的关系来判断.把A和B这条线段看成一条直线,分别看C和D关于这条直线的位置关系,如果一正一负,那么必然相交.完整代码:#include #include #include #include #include #include #include #include #include #include #inclu
2015-10-23 19:28:12
719
原创 15年亚洲区长春站赛后总结
刷题打比赛的日子才叫青春 今年和ljy、lsj组队去长春站。这支队伍是我很放心的一支队伍,ljy可以做数学题和复杂思维题,lsj思维缜密可以和ljy对思路,我负责手速狗+模板暴力流。有了去年两场亚洲区的经验,心态有了很大变化,也深知赛场上风云莫测,不至最后一分钟,仍未分胜负。开场的F题卡了很久,WA了很多发,这种复杂思维题丢给ljy和lsj搞了。我去开L题,给LJY说完题意后,他
2015-10-21 20:15:01
751
1
原创 九度1077(最大序列和)
题目链接:点击打开链接解题思路:很经典的一道题。首先考虑一下细节问题,当序列都是0时,显然最后要输出0;当序列都是负数时,显然要输出最大的数。细节处理完了,就可以回到正常轨道。我们开两个变量,分别保存当前的序列和与之前的最大值,我们更新当前序列和的条件是如果当前序列和是负数的时候,那我们必须更新,否则一定会使最后结果减小。更新过程中还要更新之前最大值即可。完整代码:
2015-05-02 16:12:53
1062
原创 九度1078(二叉树已知先序和中序求后序)
题目链接:点击打开链接解题思路:很不错的一道题。用递归的方法求解。每次对两个序列进行递归,求得左子树的先序/中序,右子树的先序/中序。把树建好后调用递归输出后序即可完整代码:#include #include #include using namespace std;string fir , mid;typedef struct Node{
2015-05-02 16:03:05
740
原创 操作系统分页式存储管理
每次输入地址后,计算出页号,若页号越界,则给出错误提示。否则依次调用FIFO和LRU算法,这里值得注意的是,由于我们的FIFO算法先于LRU算法被调用,那么当在处理FIFO算法时,我们暂且不将位视图相应位置做变化,留到处理LRU算法再做处理。对于FIFO、LRU算法的缺页,我们分两种情况考虑,第一种是模拟栈内还有空间,那么直接将其入栈。第二种是模拟栈内无空间,要发生置换。发生置换时把模拟栈最底
2015-05-01 08:04:07
2368
原创 编译原理词法分析
目前错误处理只做了 float c = 2.5.4 ; double d = 25AB67; 这两种情况。#include #include #include #include #include #include #include #include using namespace std;set key_word;set oper;set bound;
2015-04-28 21:35:36
827
原创 2015年校赛总结
题目名为“校赛总结”,其实更想换成“Rainbow为什么五题滚粗?!”。作为今年校赛大二没拆的两个队伍之一,结果打成这样,没脸见人了,总结起来就是我认为自己今天SB了。主要有以下几点:1.我今天状态的确不好,最后卡的那道B题跟去年在农大校赛上遇见的那题类似,在最后那段时间我已经有思路了,可是由于当时不敢写。等到最后15分钟才开始敲,加上我用很麻烦的Dijstra那种方法,调试起来好多细节要处理
2015-04-12 20:01:38
665
原创 hihocoder1051(枚举贪心)
题目链接:点击打开链接解题思路:明显要消除连续的m才能使收益最大,我们直接暴力的枚举好了,每个区间的a[i + m ] - a[ i - 1] - 1的最大值即所求。这里在左右边界分别添上0和100完整代码:#include #include #include #include #include using namespace std;int n , m
2015-04-09 21:22:36
1086
原创 hihocoder1089(Floyd最短路)
题目连接:点击打开链接解题思路:全源最短路完整代码:#include #include #include #include #include using namespace std;int n , m;const int maxn = 1111;const int INF = 1000000000;int d[maxn][maxn];void init
2015-04-09 20:45:39
665
原创 2000年清华大学计算机研究生机试真题
题目连接:点击打开链接解题思路:不可以用cin,会超时完整代码:#include #include #include #include #include using namespace std;const int INF = 1000000000;const int maxn = 10001; char s[maxn];int main(){ #i
2015-04-05 14:53:31
765
原创 2012年哈尔滨工业大学计算机研究生机试真题
题目连接:点击打开链接解题思路:模拟完整代码:#include #include #include #include #include using namespace std;const int INF = 1000000000;const int maxn = 10001; char a[maxn] , b[maxn];void MyStrcat(ch
2015-04-05 14:28:17
1306
原创 2011年哈尔滨工业大学计算机研究生机试真题
题目连接:点击打开链接解题思路:暴力完整代码:#include #include #include #include #include using namespace std;const int INF = 1000000000;string s;int main(){ #ifdef DoubleQ freopen("in.txt" , "
2015-04-05 12:38:59
931
原创 2010年哈尔滨工业大学计算机研究生机试真题
题目连接:点击打开链接解题思路:简单暴力完整代码:#include #include #include #include #include using namespace std;int n;int a[300]; bool check(int key){ set s; s.clear(); for(int i = 1 ; i <
2015-04-05 12:26:45
1000
原创 哈理工热身赛
2238.题目连接:点击打开链接解题思路:并查集判断下是否成环即可完整代码:#include #include #include using namespace std;int n , m;bool flag;const int maxn = 10001;int f[maxn];void init(){ for(int i = 0 ;
2015-04-05 10:18:06
675
原创 hihocoder1081(Floyd全源最短路)
题目连接:点击打开链接解题思路:全源最短路Floyd算法,初始化时对角线为0,其余位置为无穷远。完整代码:#include #include #include #include using namespace std;int n , m;const int maxn = 1111;int g[maxn][maxn];const int INF = 1
2015-04-04 10:36:42
769
原创 操作系统:模拟进程及内存分配
完整代码:#include #include #include #include using namespace std;struct empt // Define the empty table{ int start; int len;};list emptable;bool cmp(struct empt a , struct empt b){
2015-04-02 21:36:00
744
原创 hihocoder1038(01背包)
题目连接:点击打开链接解题思路:典型的01背包,非常省空间的一种写法。完整代码:#include #include #include #include using namespace std;const int maxn = 111001;int n , m;int need[maxn] , val[maxn] , dp[maxn];int mai
2015-04-02 21:33:50
1339
原创 hihocoder1037(记忆化搜索)
题目连接:点击打开链接解题思路:和白书上的数字三角形一样,用记忆化搜索解决,推出转移方程dp[i][j] = g[i][j] + max( d( i + 1 , j ) , d( i + 1 , j + 1) );完整代码:#include #include #include #include using namespace std;const int m
2015-04-02 21:06:20
758
原创 hihocoder1014(字典树)
题目连接:点击打开链接解题思路:字典树模板题。论一套靠谱模板的重要性!!!完整代码:#include #include #include #include #include #include #include #include using namespace std;typedef unsigned long long LL;const int
2015-03-31 21:03:06
562
原创 hiho一下 第三十九周(逆序数)
题目连接:点击打开链接解题思路:逆序数模板题。注意此题坑点在于数据大,开成unsigned long long完整代码:#include #include #include #include #include #include #include #include using namespace std;typedef unsigned long l
2015-03-31 17:32:59
634
原创 HDU3068(最长回文子串manacher算法)
题目连接:点击打开链接解题思路:manacher算法模板题。完整代码:#include #include #include #include #include #include #include #include using namespace std;typedef unsigned long long LL;const int MOD = i
2015-03-31 17:03:56
578
原创 hihocoder1032(最长回文子串manacher算法)
题目连接:点击打开链接解题思路:manacher算法的模板题。完整代码:#include #include #include #include #include #include #include #include using namespace std;typedef unsigned long long LL;const int MOD =
2015-03-31 16:50:41
612
原创 Codeforces Round #297 (Div. 2)(模拟+字符串+排序)
A.题目链接:点击打开链接解题思路:大意就是说奇数位给小写字母,偶数位给大写字母,然后小写对应钥匙,大写对应门,问最少消耗几把钥匙能打开所有门。简单模拟即可,初始化一个英文字母数组,如果遇到小写字母,我们把相应的计数器++,遇到大写,如果它对应的数组值不为0,那么我们将其--,否则购买一把钥匙。完整代码:#include #include #incl
2015-03-30 09:38:07
616
原创 POJ3723(邻接表+并查集+Kruskal)
题目链接:点击打开链接解题思路:根据相互之间的关系,可以转化一个无向图中最大权森林的问题。也就是把边权取反,然后用最小生成树求解。本题用邻接表存储,Kruskal求最小生成树。完整代码:#include #include #include #include #include #include #include #include #include
2015-03-28 13:25:05
1944
原创 POJ3255(次短路)
题目链接:点击打开链接解题思路:按照Dijkstra思想做的次短路,第一次用邻接表,注意题中是双向边并且节点的下标要分别-1.完整代码:#include #include #include #include #include #include #include #include #include using namespace std;typed
2015-03-27 20:54:42
1428
原创 POJ2769(同余 + 暴力)
题目链接:点击打开链接解题思路:求组内最小的m使得组内各个数对m求余所的值均不同。暴力的判断吧。发现一个有趣的规律,G++省时间废内存,C++费时间省内存。另外此题的数组不宜开的过大,我开了个10^6的数组,接下来各种超时,换成10^5就过了。另外,我试了下用set结果还是超时。完整代码:#include #include #include #includ
2015-03-24 19:15:17
1120
原创 HDU3461(并查集)
题目链接:点击打开链接解题思路:一道看不出来是并查集的并查集题,做来做去还是觉得九野的题集不错。题目大意就是有一个n位的密码串,每位可能是a到z间的任意一个字母。m行输入区间[ l , r],代表这个区间可以同时做+1操作,如果一组密码通过有限次增加变成另一组密码,那么我们认为这两组密码是相同的。求在m个区间下有多少种不同的密码。暴力来看是求26^n,当有cnt个不同区间加进来
2015-03-17 14:59:21
742
原创 Ural1349(费马大定理)
题目链接:点击打开链接解题思路:费马大定理······Orz!!!膜拜神学。当n== 1时,输出1 、2、 3;当n==2时,输出3 、4 、5;当n >= 3时,无解。完整代码:#include #include #include #include #include #include #include #include #include usin
2015-03-07 20:50:40
790
原创 Ural1110(数论)
题目链接:点击打开链接解题思路:用到数论知识,不然的话可能就要JAVA开大数·····鉴于我JAVA这么弱,还是用数学知识吧!(i * i * i * ····*i) % m ==( ( (i % m) * i % m) ····)%m。总之就是最后不要忘记循环结束后还要对m取一次余。完整代码:#include #include #include #inc
2015-03-07 19:34:29
703
原创 Ural1881(模拟)
题目链接:点击打开链接解题思路:处理起来比较麻烦,把长度用数组存起来,然后按照长度去取,去完之后看能分多少行,最后在取页数即可。精彩点在分行那。完整代码:#include #include #include #include #include #include #include #include #include using namespace s
2015-03-07 11:23:04
818
原创 Ural1876(贪心)
题目链接:点击打开链接解题思路:按照两个方面来贪:首先第一点,我们可以想到先将所有右脚的鞋子穿完,然后把所有剩余的右脚鞋子丢掉,最后穿够左脚即可。即b * 2 + 40;第二点,我们先穿39个右脚的鞋子,然后穿40个左脚的鞋子,之后我们把所有剩下的左脚鞋子丢掉,最后再花1s时间穿1个右脚鞋子。即39 * 2 + 40 + 2 * (a - 40) + 1;二者中取最大值即
2015-03-07 10:26:46
691
原创 Ural1585(细节)
题目链接:点击打开链接解题思路:很简单,但细节很坑。用getline之前要来个getchar把输入n后的回车吃掉,经过被加速器坑过这么多次后,我就决定以后还是不用加速器了。完整代码:#include #include #include #include #include #include #include #include #include usi
2015-03-05 13:59:40
442
原创 Ural1225(数学)
题目链接:点击打开链接解题思路:上来先把n 分别为1、2、3、4的情况大致列了一下,发现n == 1时结果为2,n== 2时结果为2,n == 3时结果为4,n== 4时结果为6.于是大胆的猜想ans[i] = ans[i - 1] + ans[i - 2],但是WA在#12。把预处理表打出来看了看······当n达到45时,结果都溢出了,并且此题long long存不下,果断
2015-03-05 13:18:59
624
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人