自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

代码艺术的道与术

个人笔记,欢迎交流,仅供参考

  • 博客(405)
  • 资源 (1)
  • 收藏
  • 关注

原创 蒙特卡洛方法

蒙特卡洛方法是由冯·诺伊曼、斯塔尼斯拉夫·乌拉姆、尼古拉斯·梅特罗波利斯三位科学家共同发明,以概率统计为指导的一类非常重要的数值计算方法。举例说明蒙特卡洛思想:假设我们要算一个不规则图形的面积,那么图形的不规则程度和计算的复杂程度成正比。假如你有一袋豆子,把豆子均匀的朝这个图形上撒,然后数这个图形中有多少颗豆子,这个豆子的数目就是图形的面积。当豆子越小,撒的越多时,结果就越精确。借助计算机程序

2016-08-02 09:30:51 958

原创 风暴项目个性化推荐系统浅析

风暴项目的主要任务是搭建自媒体平台,作为主开发人员的我希望把工作重心放在个性化推荐系统上。目前风暴项目的个性化推荐是基于用户行为信息记录实现的,也就是说对于每条资讯,数据库中有字段标明其类型。建立一张用户浏览表,对用户的浏览行为进行记录,从中可以获取当前用户对哪类资讯感兴趣。若用户第一次登陆,则按默认规则选取热点资讯做推荐,及所有资讯按浏览量降序排序,取前4个。另外,我考虑到后期可能有商业

2016-05-30 13:23:43 1163

原创 Aizu - 0033(深搜)

题目链接:点击打开链接解析:深搜。用vis数组做标记,1的代表第一个数组,0的代表第二个数组。通过dfs生成第一个递增的数组,然后检查余下数字组成的第二个数组。完整代码:#include #include #include #include #include #include #include #include #include using nam

2016-03-17 15:34:14 897

原创 Aizu - 0118(深搜)

题目链接:点击打开链接解析:深搜无疑,和水洼那题类似。以查找过的赋值1,然后每次找不是1的位置,一搜一片即可。最后记录多少有片区域。完整代码:#include #include #include #include #include #include #include #include using namespace std;const int ma

2016-03-17 08:18:19 900

原创 POJ - 1979(深搜)

题目链接:点击打开链接解析:深搜无疑,搜的时候记得把当前点置为不可行,之后在搜周边点。另一个坑点是,要特别考虑@周边都是墙这种情况,此时输出0(只有他当前的那一个点)。完整代码:#include #include #include #include #include #include #include #include using namespace

2016-03-17 08:03:35 590

原创 51NOD1265(四点共面)

题目链接:点击打开链接解题思路:  判断四点共面,先求出三点构成的平面的法向量(叉积),如果第四个点和前三点任意一点构成的向量与平面法向量垂直(点积为0),则四点共面.   回忆下叉积和点积.对于三位空间向量,叉积公式为 =(),=(),a×b=(-)i+(-)j+(-)k,写成行列式形式

2015-10-24 11:11:53 827

原创 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 1339

原创 51NOD1264线段相交

题目链接:点击打开链接解题思路:  用直线和点的关系来判断.把A和B这条线段看成一条直线,分别看C和D关于这条直线的位置关系,如果一正一负,那么必然相交.完整代码:#include #include #include #include #include #include #include #include #include #include #inclu

2015-10-23 19:28:12 704

原创 15年亚洲区长春站赛后总结

刷题打比赛的日子才叫青春  今年和ljy、lsj组队去长春站。这支队伍是我很放心的一支队伍,ljy可以做数学题和复杂思维题,lsj思维缜密可以和ljy对思路,我负责手速狗+模板暴力流。有了去年两场亚洲区的经验,心态有了很大变化,也深知赛场上风云莫测,不至最后一分钟,仍未分胜负。开场的F题卡了很久,WA了很多发,这种复杂思维题丢给ljy和lsj搞了。我去开L题,给LJY说完题意后,他

2015-10-21 20:15:01 728 1

原创 九度1077(最大序列和)

题目链接:点击打开链接解题思路:很经典的一道题。首先考虑一下细节问题,当序列都是0时,显然最后要输出0;当序列都是负数时,显然要输出最大的数。细节处理完了,就可以回到正常轨道。我们开两个变量,分别保存当前的序列和与之前的最大值,我们更新当前序列和的条件是如果当前序列和是负数的时候,那我们必须更新,否则一定会使最后结果减小。更新过程中还要更新之前最大值即可。完整代码:

2015-05-02 16:12:53 1047

原创 九度1078(二叉树已知先序和中序求后序)

题目链接:点击打开链接解题思路:很不错的一道题。用递归的方法求解。每次对两个序列进行递归,求得左子树的先序/中序,右子树的先序/中序。把树建好后调用递归输出后序即可完整代码:#include #include #include using namespace std;string fir , mid;typedef struct Node{

2015-05-02 16:03:05 723

原创 操作系统分页式存储管理

每次输入地址后,计算出页号,若页号越界,则给出错误提示。否则依次调用FIFO和LRU算法,这里值得注意的是,由于我们的FIFO算法先于LRU算法被调用,那么当在处理FIFO算法时,我们暂且不将位视图相应位置做变化,留到处理LRU算法再做处理。对于FIFO、LRU算法的缺页,我们分两种情况考虑,第一种是模拟栈内还有空间,那么直接将其入栈。第二种是模拟栈内无空间,要发生置换。发生置换时把模拟栈最底

2015-05-01 08:04:07 2340

原创 编译原理词法分析

目前错误处理只做了  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 807

原创 2015年校赛总结

题目名为“校赛总结”,其实更想换成“Rainbow为什么五题滚粗?!”。作为今年校赛大二没拆的两个队伍之一,结果打成这样,没脸见人了,总结起来就是我认为自己今天SB了。主要有以下几点:1.我今天状态的确不好,最后卡的那道B题跟去年在农大校赛上遇见的那题类似,在最后那段时间我已经有思路了,可是由于当时不敢写。等到最后15分钟才开始敲,加上我用很麻烦的Dijstra那种方法,调试起来好多细节要处理

2015-04-12 20:01:38 645

原创 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 1062

原创 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 646

原创 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 743

原创 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 1281

原创 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 910

原创 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 981

原创 哈理工热身赛

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 659

原创 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 749

原创 操作系统:模拟进程及内存分配

完整代码:#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 706

原创 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 1319

原创 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 743

原创 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 540

原创 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 624

原创 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 567

原创 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 594

原创 Codeforces Round #297 (Div. 2)(模拟+字符串+排序)

A.题目链接:点击打开链接解题思路:大意就是说奇数位给小写字母,偶数位给大写字母,然后小写对应钥匙,大写对应门,问最少消耗几把钥匙能打开所有门。简单模拟即可,初始化一个英文字母数组,如果遇到小写字母,我们把相应的计数器++,遇到大写,如果它对应的数组值不为0,那么我们将其--,否则购买一把钥匙。完整代码:#include #include #incl

2015-03-30 09:38:07 595

原创 POJ3723(邻接表+并查集+Kruskal)

题目链接:点击打开链接解题思路:根据相互之间的关系,可以转化一个无向图中最大权森林的问题。也就是把边权取反,然后用最小生成树求解。本题用邻接表存储,Kruskal求最小生成树。完整代码:#include #include #include #include #include #include #include #include #include

2015-03-28 13:25:05 1914

原创 POJ3255(次短路)

题目链接:点击打开链接解题思路:按照Dijkstra思想做的次短路,第一次用邻接表,注意题中是双向边并且节点的下标要分别-1.完整代码:#include #include #include #include #include #include #include #include #include using namespace std;typed

2015-03-27 20:54:42 1412

原创 POJ2769(同余 + 暴力)

题目链接:点击打开链接解题思路:求组内最小的m使得组内各个数对m求余所的值均不同。暴力的判断吧。发现一个有趣的规律,G++省时间废内存,C++费时间省内存。另外此题的数组不宜开的过大,我开了个10^6的数组,接下来各种超时,换成10^5就过了。另外,我试了下用set结果还是超时。完整代码:#include #include #include #includ

2015-03-24 19:15:17 1106

原创 HDU3461(并查集)

题目链接:点击打开链接解题思路:一道看不出来是并查集的并查集题,做来做去还是觉得九野的题集不错。题目大意就是有一个n位的密码串,每位可能是a到z间的任意一个字母。m行输入区间[ l , r],代表这个区间可以同时做+1操作,如果一组密码通过有限次增加变成另一组密码,那么我们认为这两组密码是相同的。求在m个区间下有多少种不同的密码。暴力来看是求26^n,当有cnt个不同区间加进来

2015-03-17 14:59:21 724

原创 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 779

原创 Ural1110(数论)

题目链接:点击打开链接解题思路:用到数论知识,不然的话可能就要JAVA开大数·····鉴于我JAVA这么弱,还是用数学知识吧!(i * i * i * ····*i) % m ==( ( (i % m) * i % m) ····)%m。总之就是最后不要忘记循环结束后还要对m取一次余。完整代码:#include #include #include #inc

2015-03-07 19:34:29 693

原创 Ural1881(模拟)

题目链接:点击打开链接解题思路:处理起来比较麻烦,把长度用数组存起来,然后按照长度去取,去完之后看能分多少行,最后在取页数即可。精彩点在分行那。完整代码:#include #include #include #include #include #include #include #include #include using namespace s

2015-03-07 11:23:04 801

原创 Ural1876(贪心)

题目链接:点击打开链接解题思路:按照两个方面来贪:首先第一点,我们可以想到先将所有右脚的鞋子穿完,然后把所有剩余的右脚鞋子丢掉,最后穿够左脚即可。即b * 2 + 40;第二点,我们先穿39个右脚的鞋子,然后穿40个左脚的鞋子,之后我们把所有剩下的左脚鞋子丢掉,最后再花1s时间穿1个右脚鞋子。即39 * 2 + 40  + 2 * (a - 40) + 1;二者中取最大值即

2015-03-07 10:26:46 675

原创 Ural1585(细节)

题目链接:点击打开链接解题思路:很简单,但细节很坑。用getline之前要来个getchar把输入n后的回车吃掉,经过被加速器坑过这么多次后,我就决定以后还是不用加速器了。完整代码:#include #include #include #include #include #include #include #include #include usi

2015-03-05 13:59:40 433

原创 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 612

贪吃蛇 源码

适合C++初学者,实现简单的贪吃蛇游戏。里面都是源码,很容易看懂

2014-04-06

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除