源文件注释格式定制 @Aleda 2014-09-02 14:21 字数 4277 阅读 0源文件定制Linux-C/C++我也有技术恐惧症,所以自己认识一项艺术性的技术,就要去学会它。这固然是优点,但伴随的缺点是从不能很好的坚持。希望现在在真正的工作了,可以养成学习一个东西就要坚持的好习惯,这个markdown上手可能还是有点麻烦的,不过我举得只要上手了就
解题报告 #!/bin/bash 2 3 #function: crawl the webpage, and get urls 4 #data: 2015/5/19 5 #author: Aleda 6 7 #$1 is the website 8 9 function curlLinks() 10 { 11 for ((i=0; i<63; i++
Bitmap操作 #include #include #include using namespace std;const int BYTESIZE = 8;void SetBit(char* p, int position){ for (int i = 0; i < position / BYTESIZE; i++) { p++; } *p = *
线索二叉树 #include #include #include using namespace std;struct BinThrNode{ int data;//结点的数据 BinThrNode* lChild;//左孩子 BinThrNode* rChild;//右孩子 bool lTag; //有左孩子是1 bool rTag; //有右孩子是1
并查集 #include using namespace std;void Init(){ for (int i = 0; i <= N; i++) { set[i] = i; }}int Find(int x){ return set[x] = (set[x] == x ? x : Find(set[x]));}int main()
非递归遍历便利二叉树 #include using namespace std;struct TreeNode{ TreeNode* lChild; TreeNode* rChild; int m_iData; TreeNode() { lChild = NULL; rChild = NULL; m_iData = 0;
哈希探查的三种方法 #include #include #include #include using namespace std;const int MAXSIZE = 100;int hash[MAXSIZE];int MOD = MAXSIZE - 1; //小于MAXSIZE的一个质数vector hashTable[MAXSIZE];/* 线性探查int LinearProbi
快速幂 #include #include using namespace std;long long QuickPow(int a, int n, int mod){ int ans = 1; while (n) { if (n & 1) { ans = (long long)ans * a % mod;
函数传参 #include #include #include #include using namespace std;int Max(int a, int b){ return a > b ? a : b;}int GetMax(int a[][6], int N, int M){ int iMax = 0; for (int i = 0; i < N;
双栈模拟队列 #include #include using namespace std;templateclass CQueue{public: T& push(T&); T& front(); void pop();private: stack m_stack1; stack m_stack2;};templateT& CQueue:: pu
根据前序,中序求后续 #include #include #include #include #include using namespace std;void postOrder(char *pre, char *in, int len) { if (len <= 0) { return ; } int i; for (i = 0; i < len; i++) { if (in
根据前序,中序构建出BinaryTree #include #include #include using namespace std;struct TreeNode{ int m_iValue; TreeNode* m_pLeft; TreeNode* m_pRight; TreeNode() { m_pLeft = NULL; m_pRight =
洋气的SPFA #include #include #include #include using namespace std;const int MAXN = 100 + 11;const int INF = 0x3FFFFFFF;class Edge{public: Edge(); ~Edge(); int getBegin(); void setBeg
虚函数的实现机制 #include using namespace std;class CBase1 { private: int a; int b; void sayBye() { cout << "Bye, CBase1!" << endl; } public: CBase1() { cout << "Hello CBase1!" << endl;
C++一些宏定义 #include #define PI 3.1415926 //#define #define MIN(X, Y) (X) () #define Conn(X, Y) X##Y //简单的把x和y连接起来,但不处理。即Conn(a, 2)--->a2, 编译的时候,如果没有a2就会报错。//#define TOCHAR(X) #@X 不可以这样使用#define TOSTRING(X
CreateThread()和_biginthreadex() HANDLE WINAPI CreateThread( _In_opt_ LPSECURITY_ATTRIBUTES lpThreadAttributes, _In_ SIZE_T dwStackSize, _In_ LPTHREAD_START_ROUTINE lpStartAddress, _In_opt_ LPVOID lpParameter,
堆排序 #include #include #include #include using namespace std;void print(int *a, int n){ for (int i = 1; i <= n; i++) { printf("%d ", a[i]); } cout << endl;}void heapify(int *a, int x, int
合并排序 #include #include #include #include const int INF = 0x7fffffff;using namespace std;void merge(int *a, int l, int mid, int r) { int L[100]; int R[100]; int cnt = 0; for (int i = l; i <=
快排(随机取数) #include #include #include #include #include #include using namespace std;int partition(int *A, int L, int R, int p){ swap(A[p], A[R]); int i = L; int j = R; int pivot = A[R]; while (i
内存池的简单实现 #include using namespace std;templateclass SimpleMemPool{public: T* New() { if (!m_pFreeChunks) //如果空内存不存在,则重新申请一个大的block; { MemChunk* t = new MemChunk();
union的用法 #include #include using namespace std;union myUnion{ int m_iVar; char m_cVar[2];};int main(){ myUnion u; u.m_iVar = 0; cout << u.m_iVar << endl; u.m_cVar[0] = 11; //0
priority_queue的正确使用方法 其实priority_queue的正确用法:#include #include #include using namespace std;class Node{public: Node(){Node(0);} Node(int v): m_iVar(v){}; ~Node(){} bool operator < (Node& t); in
swap的方法书写 #include using namespace std;int swap1(int& x, int& y){ x += y; y = x - y; x = x - y;}int swap2(int& x, int& y){ x ^= y; y ^= x; x ^= y;}int main(){ int x = 1,
自增、自减运算符的重载 #include using namespace std;class Increment{public: Increment(): m_iVar(0){}; ~Increment(); Increment& operator ++(); const Increment operator ++(int); int getVar();private
自增、自减运算符的运算 #include using namespace std;int main(){ int a = 1; a = a+++a; // a = 3 int b = 1; b = b+++(++b);// b = 4; int c = 1; ++c = c+++c++;// c = 5; 第一部执行的是等号左边的++c return 0;
operator new 和operator delete的重载应用 #include using namespace std;/* 重载后的operator new实现的功能是,看一看刚刚回收的垃圾堆上还有没有位置, 有位置的话,就直接拿一块下来,用来初始化。*/class FreeListBase{public: FreeListBase(): next(NULL){}; virtual ~FreeListBas
Singleton #include using namespace std;/* 考虑多线程的Singleto实现方式,用局部静态变量也可以实现单例模型。单例模型就是解决创建对象时,只用维护一个对象的情况。*/ class Singleton{public: static Singleton* getInstance(); //静态函数 private: Singleton(); vir
JAVA类继承过程中其成员的一些问题 JAVA类继承过程中其成员的一些问题构造函数不能继承。子类的构造函数可以通过super关键字显式调用父类中的构造函数。如果子类中的构造函数没有显式调用父类中的构造函数,编译器就会自动在子类的构造函数中调用父类中参数为空的构造函数。于是,当父类中没有参数为空的构造函数,而子类中又没有显示调用父类的其他构造函数,编译时就会报错。这一点需要特别注意。当父类中没有定义任
test public void random() { int temp; boolean flag = true; a[0] = (int)(Math.random() * 320); for (int i = 1; i < 320; i++) {; if (flag) { temp = (int)(Math.random() * a[i - 1]); a[i] =
关于Ubuntu下安装MyEclipse 三还是没有想到在Ubuntu下也可以装MyEclipse,我想用这应该还可以把。我也用了这么长时间的Ubuntu了,感觉也是一般,因为速度上其实还不如windows来的快,不管是有些热启动呀,还是冷启动,感觉效果都不是很好,最快也就和windows一样把,当然我期望自己能在linux下体验出超频的效果,果然不可以呀,呵呵,硬件还是硬伤啊。这里讲讲MyEclipse的安装把,其实也不是很难,你百度应
struts2类型转换 啊啊三三这几天的时间都在看书,看英语,做自己的wordpress的网站搭建,Domain买好了,但是找免费的空间真的很难找,而且适合自己的太难找了。外国的免费空间真的不少,但是国内的访问速度真是不敢恭维呀,但是如果是买国内的付费空间也不是嫌贵,就是自己觉得,自己还是等等国外的空间域名绑定成功再看看吧,真的很不爽,时间用了这么长时间了,还是没有绑定好,心里没底啊! 英语六级考完了,怎
struts2中多种提交的处理 啊啊啊今天看了个老兵打新兵的视频,我瞬间就愤怒了。怎么能这样,这哪是打新兵?这分明是要死新兵!没有哪个人是真的怕,仅仅是愤怒而已。所以,人啊,不能不发生在自己身上就不当回事,这是劣根性,所以,记住一定要当一个勇敢的人,怕什么!顶天立地才是男子汉。如果作为一个男人尊严都没有了的话,或者又有什么意思! 接着不说了别的了,说说struts处理多种提交请求的处理吧,我不知道以前做的对不对,
Struts2的exception配置 啊啊啊啊今天顺便把exception的配置也看了看,还有interceptor的,一会再写,exception的配置也是非常的简单的,如果是你自己写exception的话,就抛出自己的exception就行了,配置的时候首先配置好映射关系,然后把你的result的名字写好,然后根据你的result的名字,下面的result配置就可以为你的exception来一个跳转界面,很方便也很简单。这里面我就
struts2的struts.xml简单介绍 啊 昨天其实就发现了的,struts的MVC结构非常的正规,感觉这样处理起来确实是将各个问题都分开解决了,谁也不会影响谁的,后台的处理后台,前台的处理前台。关于这里的链接这些东西的就是struts.xml了,这个东西是非常重要的,你要配置好这个xml文件才能将整个MVC架构起来! 下面说一下,几个比较重要的知识点:第一、就是默认的action,就是如果没有找到对应的actio
struts的工作机制及分析 概述本章讲述Struts2的工作原理。读者如果曾经学习过Struts1.x或者有过Struts1.x的开发经验,那么千万不要想当然地以为这一章可以跳过。实际上Struts1.x与Struts2并无我们想象的血缘关系。虽然Struts2的开发小组极力保留Struts1.x的习惯,但因为Struts2的核心设计完全改变,从思想到设计到工作流程,都有了很大的不同。Struts2是
Myeclipse快速配置struts2.1 三其实在Myeclipse中是默认安装了struts2.1的,因此你直接那来用就可以了,除了上面我写的文章那样可以自己配置struts2.1以外,你也可以直接就创建一个web project然后点击菜单栏上的Myeclipse选项然后选择struts2.1就可以了。
struts2的第一个程序 还是比较高兴的呀,呼呼。我觉得我就应该是这种学习的方式,前面的学习方式都不怎么样,一知半解,然后就照着书去敲代码,那样代码,思想终究不是自己,错了自己也是无法改正的。而如果是自己真的曾经想过,并且快乐的实现了,并且其中出了些许错误,在自己的一步步排除查找下,找到错误并改正,这样才能真正的了解其中的精髓。 这第一个struts2架构的
struts 2的配置(版本2.3) 啊这个struts 2的配置,我是整整的忙了两天也是没有找到头绪,因为我感觉,做web开发的可控性真的不怎么强,因为它没有做应用、软件开发的那种可控,可调式的方式。一般卡住我们的都是因为我们第一次摸,连最基本的配置网页都不会。所以,这就很让人无奈。因为我们没有老师,只有自己拿书,自己找资料学习,而随着版本的更新,书上的配置已经远远不能满足自己了。下面自己介绍一下关于struts 2.3的配置。
关于扑克牌的解 这个真的还是挺好玩的,这个做为一个日常的常识,是应该学习学习的,玩了这么多年的扑克了,怎么还应该认为扑克的J,Q,K是一样的呢?呵呵。扑克牌是历法的缩影,五十四张牌中,有五十二张正牌,表示一年有五十二个星期,两张是付牌,大王代表太阳,小王代表月亮;一年四季春夏秋冬,用桃、心、梅、方来表示,其中红心、方块代表白昼,黑桃、梅花表示黑夜,每季是十三个星期,扑克中每一花色正是十三张牌,每一季节是九十一
NGUI和2D Tool Kit导入的若干问题 初入unity也有点时间了,做了一个简单的游戏,按照教程上的一步一步来的吧,也是没有什么可以拿出来秀的,我的强迫症是改不过来了,哎。 今天导入点2D的插件学习看看,导入不进去,我就崩溃了。前面说过,我是个有强迫症的人,我喜欢把东西都整理的妥妥的,然后导入插件的时候不能有中文路径 想学好一个东西不是那么容易的,这个unity就相当于我自我放松的方式吧,毕竟做游戏就是我
static{}静态代码块与{}普通代码块之间的区别 static{}(静态代码块)与{}(非静态代码块)的异同点相同点:都是在JVM加载类时且在构造方法执行之前执行,在类中都可以定义多个, 一般在代码块中对一些static变量进行赋值。不同点:静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。 静态代码块只在第一次new执行一次,之后不再执行,而非静态代码块在每new 一次就执行一次。
JSP与servlet的关系 我们都知道servlet就是一个简单的java文件,用来实现的功能是:完成Client与Server之间的一系列交互,可以友好的传递数据。然而,servlet的一个重大缺点,可能大家也都清楚了,就是用servlet做出一个稍微友好的界面就非常麻烦了(用out.println)。所以,sun公司就开发了一种新的工具用于更友好的在servlet的基础上设计出好的界面。JSP就出现了。所以它本身还是se
Servlet中的doGet和doPost Servlet就是一个中间的容器来连接Client和Server的。其中比较重要的方法就是doGet和doPost方法了,这两个方法是分别用于获取传递的参数的,千万要注意,获取参数的方法是request的getParameter。就是注意这一点,还有就是设置字体的时候,一定要在getWriter之前,要不然就不能正确的设置字体了。贴出一个简单的传递参数的例子吧:这是一个简单的HTML界面:
Ubuntu下安装mysql指南 安装MySQL sudo apt-get install mysql-server 这个应该很简单了,而且我觉得大家在安装方面也没什么太大问题,所以也就不多说了,下面我们来讲讲配置。 配置MySQL 注意,在Ubuntu下MySQL缺省是只允许本地访问的,如果你要其他机器也能够访问的话,那么需要改变/etc/mysql/my.cnf配置文件了!下面我们一步步地来:默认的My
CMD开启快速开启windows各种服务 开始→运行→CMD→键入以下命令即可: gpedit.msc-----组策略 sndrec32-------录音机 Nslookup-------IP地址侦测器 explorer-------打开资源管理器 logoff---------注销命令 tsshutdn-------60秒倒计时关机命令 lusrmgr.msc----本机用户和组 serv
virtual judge配置和发布 作为曾经的ACMer今天被学弟问道怎么配置virtual judge就是大名鼎鼎的hust的开源oj,但是放到tomcat下面发现tomcat不能start那个web application,怎么都start不起来。根本就没有开服务,这各种方法都试了都不行呀,各种配置方法也都不行呀!我就上网查到底是怎么回事,其实刚开始的时候我就想着应该是那的问题,当我真弄的时候。果真是那的问题,泪奔了有木有!
JSP中参数传递以及页面跳转 想死有没有?总算解决了这个问题但是内心非常的恶心有没有?怎么能够这样呢有没有!在JSP中,众所周知,参数传递和页面跳转是经常要用到的,这也是非常简单的一种基本知识,但是真正没有用过几次的话,我觉得你还真是不能够真正的理解它!百度上有很多种的方法,但我觉得常用的应该有以下几种:一种就是Action传递表单form里面元素的方法,就是通过form的submit()方法传递给action的页
关于改掉JSP名称,无法找到文件的解决办法 原来有出现过类似的问题,很烦人的,因为自己找啊找的,都找不到解决办法,而且还有可能把自己的积极性给打压下去。那么现在我给大家讲讲遇到这样的情况怎样解决。有种情况是这样的,无论你怎么样的调试,就是tomcat报错误,不能正确的运行,那么这个时候,你就要看看你运行myeclipse的时候是不是管理员权限,这个非常的重要,要是不是管理员是不行的,这是很久以前我遇到的,可把我找死了。今天遇到的情况
JSP-JSTL连接数据库 马上就把这本书看完了,其实书里面的有些内容自己还是没有实现了的。而且也有些东西,自己不去碰的话,慢慢的自己也会忘记的,所以就要慢慢的自己摸索,并且不断的重复实践,自己这个人是太要强了点,什么都想有,别人具备的东西自己非常迫切的都想得到,幸亏老天待我不薄,让我得到了些我想要得到的东西,这真是不好的习惯,自己一定要努力改掉这个小毛病呀。今天学习了EL和JSTL,这两个是比较快捷的开发方式,EL-e
XML-简单认知xml 今天有个人加了我,也不清楚,为什么就淘汰了我,可能不喜欢我这样随意的人吧,或者是他有他的苦衷吧,不过我是不会求他的,因为现在对于我来说,求这个词还不是那么必要。今天时间xml,中途出了很多差错呀,一开始是因为win8,自己点myeclipse的时候没有点以管理员身份运行,导致tomcat出现不知明的严重错误,让自己把tomcat卸载了重装,浪费了很多时间。另外和朋友聊天也浪费了很多时间,主要是
JSP:连接数据库mysql 其实,还是及时的做笔记总结自己今天学习了点什么还是比较重要的。今天我又一次的领会了工科的动手实现的实践性,其实任何的学习都是一样的,脱离了时间是没办法学好的。今天,早上就把书上的知识点看完了,以为自己会了,可也只是以为,今天晚上实现的时候还是有点绕弯,也没有独立的写出来,这真的有点可悲。具体的今天的实现步骤是这样的:首先两款软件(Myeclipse+mysql)的下载,当然是必须的,但是我
JSP-request对象 JSP是一种开发动态网页的技术,这要明确,因为关于静态网页的技术,html,Dom,JavaScript等都是用于静态的网页,用一些优化是可以做出一个像样的网页,但是却不实用。这个时候,JSP却可以帮你解决,我们都知道,java在处理数据方面具有独特的特性,JDBC可以很好的跨平台与数据库相连,并且用java写个某个算法解决一些小问题也是非常简单的。没错,你应该想到了,JSP就是具有了java的这
ACM再见 其实,是不用这样伤感的。人生的路还长,而我也总这样安慰别人,路途中的所有挫折都是给自己的一次机会,使得自己快快的成长! 自己恨也恨了,骂也骂了,就是总结出了,不要太把自己当回事。自己知道自己是个什么样的人就行了,其实不必太在意别人的看法的,而别人的看法其实你永远都猜不透的,何必自卑的瞎猜呢?以自己的实际情况,活着就好! 可能怕惯了别人看不起自己吧,所以一不如意的成绩就不行不
templete_中国剩余定理 #include #include #include #include using namespace std;const int MAXN = 111;int a[MAXN];int m[MAXN];int N;int extgcd(int a, int b, int &d, int &x, int &y){ if (b == 0) { d = a;
templete_RMQ #include #include #include #include using namespace std;const int MAXN = 10000;int N, M;int A[MAXN];int d[MAXN][18]; //Ò»¶¨ÒªÀÎÀεļÇסd[i][j]µÄº¬Ò壺ÒÔiÆðʼ£¬2^j´Î·½¸öÊýµÄ×îСֵ£» void
templete_extgcd #include #include #include #include using namespace std;typedef long long LL;int extgcd(int a, int b, LL &d, LL &x, LL &y){ if (b == 0) { d = a; x = 1; y = 0; } else { extgcd(b,
templete_LIS #include #include #include #include #include using namespace std;const int MAXN = 100;int d[MAXN];int LIS(int *A, int LEN){ int len = 0; d[0] = A[0]; for (int i = 1; i < LEN; i++) {
templete_trie #include #include #include #include using namespace std;const int MAXNODE = 1000000 + 11;const int SEGMA_SIZE = 26;struct Trie{ int ch[MAXNODE][SEGMA_SIZE]; int val[MAXNODE]; int size;
templete_线段树 [cpp] view plaincopy#include #include #include #include using namespace std; const int MAXN = 100 + 11; int N, M; int C[MAXN]; int lowbit(int x) { return x
templte_树状数组 #include #include #include #include using namespace std;const int MAXN = 100 + 11;int N, M;int C[MAXN];int lowbit(int x){ return x & (-x);}void add(int x, int val){ for (int i = x;
templete_tarjan求scc tarjan这个人很神奇呀,发表的算法非常的多,这个求有向图的强连通量,也是人家发明的。这个算法可以求出图中的强连通分量数目,和分别每个顶点所对应的强连通分量的编号,十分的好用呀,结合上其他的算法,就可以将图论的连通性展现的淋漓尽致呀。直接贴出代码吧:#include #include #include #include #include #include /*
templete_cutv and cute 这几天真的比较累,有点支撑不过的感觉呀,不过也快结束了,我的ACM之路马上就要结束了呀。希望能画上一个完美的句号,或者是一个省略号,呵呵。都可以啦,其实自己有没有努力,自己是最清楚的,这个是不用骗别人和骗自己的。在ACM之路上,自己赶的不好,时机不对,也实际上,自己也真的觉得自己要想在这个道路上深走是走不下去的。不说了,好像现在还不是说这个的时候,下次吧,下次吧。今天写的这个题目,是求一个无向
templete_find_cc 很久就说要总结强连通的题目就是不总结,这不你爽了吧!今天的那个题目,明显就应该是强连通方面的题目,自己愣是看着也无从下手,无力呀。说好的好好学几天,最后几天了,可是还是静不下心来,你这让我怎么说?贴出这个无向图求强连通分量的代码吧:#include #include #include #include #include using namespace std;c
《算法竞赛-训练指南》第五章-5.2_UVa 10047 这就是个简单的模拟题目,就是BFS搜索过去就行了,但是这道题目的新颖之处就是其实轮子最底部的颜色必须和最后到大目的地的时候的颜色一样,这样就有点麻烦,开始的时候没有用4维的vis,想不借用vis,发现效率太低,根本不能解决问题,题解上面是4维的标记做的,然后自己就模仿,重新写了一遍BFS,发现还是过不了,样例都过不了,这真的狠气人呀,等我有空一定重新写一遍!现在先贴出题解的代码,附上我自己的错
《算法竞赛-训练指南》第五章-5.1_UVa 11624 这道题目可能给了别人也就是几分钟就求出来了,因为是比较基础的一个题目,但是对于我这个重新拿图论来复习的人来说,还是写的时间偏长了点,但是自己最起码是独立写出来了,还是比较不错的,虽然错了几次,但是心情还是不错的,用到的放大就是先处理火到大每个格子的时间,然后模拟人BFS,如果时间小于火到格子的时间就可以继续,不然的话就不行。就是个简单的过程。贴出自己的代码:#include #inc
templete_BigNum(大数模版) 其实,我是不愿意上传大数模版的,自己也非常懒得自己动手写一遍,因为我觉得的,写的再好的大数模版,与java的BigInteger相比,也是相形见绌。但是,有的时候比赛是不让用java的,这个时候怎么办?那只能用模版了。所以,我也上网找了一些模版,认为这个写的还是不错的。就发给大家一起享用。#include #include #include #include us
templete_Dinic(最短增广路算法) Dinic算法的算法是这样的:将整个网络划分成不同的层次,应该可以理解,用BFS且队列维护的方法一次访问的结点,并且标上他们的层次,这样的访问是最小的路径,可以不用来回的访问结点,这样就极大的减小了盲目的搜索,这就成了走最少的结点,也能找出增广路,这样不省时间,怎么样省呢?其他的注意事项我都在代码中写了,大家看看,有需要指点的,请指明共同进步:#include #include #
templete_Edmonds_Karp(BFS求最大流算法) 看图论,网络流也看了两天了,今天心情还不错,还是看懂了这个BFS做的网络流了,昨天想用邻接表写,没有写成功,因为回溯的时候是在是有点麻烦,另外我自己觉得回溯的时候题解给的好想是错误的,反向的边的flow也应该是+,而不是-,因为只有有了反向流量才能够给题目一个反悔的机会,请大家帮忙看看,看有什么不对的不,看看这个模版写的怎么样。明天写一写别的最大流算法,今天非常的满足:#include
templete_SPFA() 这个还是要多说点东西。这几天写模版的收获还是很多的,但是由于事比较多,然后自己的心态的问题,所以写的也不怎么好,也没有什么注释什么的。非常的遗憾。现在我要说一说这个比较好的SPFA算法了,这个其实也是比较像优先队列维护的Dijkstra算法的。但是由于dijkstra算法只能用于正权的边,所以也是无法正确算出答案的。但是SPFA就不同了,因为它并没有每次取出最优的解,而是选择遍历结果,这样
templete_最长回文子串manachar #include #include #include #include using namespace std;const int MAXN = 110000 + 11;char b[MAXN];char str[MAXN * 2];int p[MAXN * 2];int manachar(){ int temp; memset(p, 0, sizeof(p))
templete_dijkstra 心里静不下来呀,总是得失心太强,没有将生活当做一种享受,这一段时间我把图论的算法全部搞定,就完成我的任务了,我自己进步了,就是最大的收获!别的希望自己放宽心。#include #include #include #include using namespace std;const int INF = 0x3fffffff;const int MAXN = 100 +
一道神奇的题目-龟兔赛跑 神奇的龟兔赛跑题目,整的整死我了。想想自己的思考过程,好像这种摸不到头脑的阶段最优解的题目是要用动态规划的,不过动态规划实在是太动脑筋了,这真不是一天两天能够学好的,慢慢积累知识吧。贴出代码:#include #include #include #include using namespace std;const int MAXN = 100 + 11;int p[M
templete_表达式树 #include #include #include #include #include /* *这个问题是我独自想清楚的,(当然也是看了别人的思想)其实只要自己动脑筋,其实许多问题都是可以解决的,下一步需要解决的就是大于10位数的 *四则运算,这个运算只能解决一位数的四则运算还是比较不方便的。一会就得自己学着解决大数问题的四则运算。 */ using namespace s
templete_calculate tree 大家看看吧,就是一个简单的字符实现四则运算的程序,并且只能是十进制的数字的四则运算,不过用到了图论的一些方法,对于复习图论来说还是不错的一道题目的,而且正好写了个模版。贴出:#include #include #include #include /* *这个问题是我独自想清楚的,其实只要自己动脑筋,其实许多问题都是可以解决的,下一步需要解决的就是大于10位数的 *四则运算
templete_LIS #include #include #include #include #include using namespace std;const int MAXN = 100;int d[MAXN];int LIS(int *A, int LEN){ int len = 0; d[0] = A[0]; for (int i = 1; i < LEN; i++) {
templete_Matrix #include #include #include #include using namespace std;struct Matrix{ const static int MAXN = 200; int data[MAXN][MAXN]; int n, m; int MOD; Matrix() { n = 3; m = 3; MOD = 110100;
HUT_ACM #1 D Matrix Multiplication(ZOJ-2316) 这道题目的意思是:N个点,M边,然后根据题意建立一个矩阵,然后让你求ATA。A的转置矩阵乘以A的矩阵,然后求得的矩阵每个元素再求和。由于矩阵是在是太大了,连储存都无法储存的,所以只能够找规律了,刚开始的时候连样例都是找不出是怎么得到的,那个急呀,要不然其实我很早就能过了这道题目的。但是听别人讲的又是一种思路,自己就是这样,有了自己的方法就不想去学别人的想法了。这怎么能行呢?先贴出自己的代码,然后再
HUT_ACM #1 A - Chinese Girls' Amusement(ZOJ 2313) 居然忘了每次做完题目贴出心得体会!现在才想起来自己忘了总结了。这道题目的意思是:给你一个N个女同学的环,问你:请给出一个最大的K,使得K个人传球,每个人都能摸到球,题目很好理解,请结合样例。(注意格式控制)我做出来的比较慢,一看范围那么大,我就觉得应该是一个简单的数学推导的题目,但是当时就是没有绕开圈子,倒最后才最终找出规律。其实大家只要是仔细想过这题目的话,正确的思路就应该是奇偶
2013.9.9杂感 每当到了这个时候我就慌了,不知道怎么办才好,后悔当初没有利用自己静心的时候痛快的学,现在没有了这个机会却非常想好好的学,连心都静不下来了。压力有了,我需要舒服的舒压。找个没人的地方,找个没人的地方,找个没人的地方!!!
《算法竞赛-训练指南》-第三章-Trie #include #include #include #include using namespace std;const int MAXNODE = 1000000 + 11;const int SEGMA_SIZE = 26;struct Trie{ int ch[MAXNODE][SEGMA_SIZE]; int val[MAXNODE]; int size;
《算法竞赛-训练指南》第三章-3.8_UVa 11235 不是自己智商不够,而是自己不能钻进去,不能静下心来,学习新的知识点,其实这个信息竞赛和其他的竞赛也是一样的,知识点庞杂,所以自己一定要能够静下心来好好的学习。虽然不一定都能涉及到,但是自己一定要精心的学习真正的用脑子思考。这道题目的意思是:给你N个非递减数列,然后任意给定范围,求得范围内出现最多的次数,并输出。这个题目看似简单,其实想清楚也是比较困难的。要用到游程编码,这个具体的思想我也不
《算法竞赛-训练指南》第三章-RMQ RMQ求区间内的最大值,最小值。平常的区间更新算法都不很好求,当然线段树可以。马上写线段树的算法。具体的讲解都在代码中:#include #include #include #include using namespace std;const int MAXN = 1000 + 11;int A[MAXN];int N;int d[MAXN][22];void
《算法竞赛-训练指南》第三章-3.7_LA 3429(树状数组) 树状数组的题目还是说比较简单的吧,主要就是解决动态更新求和的问题。主要运用到的就是lowbit的翻倍求和思想。编码很少,但是主要是思想。一看出现:动态的修改单个元素并求前缀和的题目那就是用树状数组解决此问题的。别的不多讲了,这道题目还是比较不错的,将的是给你N个不相同的Ai,问你两个一小一大的Ai夹这一个中等的Ai的情况有多少种。解题想法是这样的,既然要求是不相等的,而且A的范围不大,可以想到
《算法竞赛-训练指南》第三章-3.6_LA 3027(并查集) 这道题目也是比较不错的,就是会用到路径压缩的并查集,然后用d[u]记录上到父节点的距离,在每次路径压缩的过程中就把距离叠到你要求的结点。这个看了代码以后,就比较简单了:#include #include #include #include #include using namespace std;const int MAXN = 20000 + 11;int N;i
《算法指南-训练指南》第三章-3.5_LA 3644(并查集) 这道题目还是比较简单的,刚开始没有看英文题目,就很明显的错了呀。然后仔细看了一下题目,是需要转化一下的,题目中不成立的情况应该是这样转换的:化合物正好是两种元素组成的一条边,然后爆炸的情况就是点的数量等于边的数目,当然也就是成环的情况了,这个情况可以用并查集,来判断是不是有环,贴出代码:#include #include #include #include using names
《算法竞赛-训练指南》第三章-2.2_UVa 11991 这道题目也是比较简单的吧,就是用vector就可以解决,也是一个比较简单的用vector,当做邻接表来用吧。比较方便,实用。这个没有什么好说的,就是注意每次用完之后都要清楚一遍容器就行了。贴出代码:#include #include #include #include #include using namespace std;const int MAXN = 10000
《算法竞赛-训练指南》第三章-3.1_UVa 11995(STL数据结构运用) 这道题目就是很裸的STL应用。考察的就是你对STL中的数据结构的应用。就有一点我不知道怎么弄就是,用完之后怎么样清楚这个容器,难道是要用while(!empty())?不是很清楚,还得看一下题解的代码比较好一些。题解也是个这么个思路,只不过是将三个分别判断了一下,我的是一个函数里面,无数个if,else。简单的题目,题解也没有清理,也是每次用的时候重新申请一片区域。贴出代码:
《算法竞赛-训练指南》第二章-2.28_LA 3485(simpson) 做这个竞赛题目,就是相当于高中的数学难的题目,你做出来了,万人敬仰,你稍微错了一点,没有做对,那么不好意思,不管你思路对还是很对,你都不是那个会做的人。题目如此,事情也是如此,错过了再想挽回可能就后悔莫及了。这道题目的主体思想当然是求解,如果你数学的求解能力非常的强,那这个题根本就不是个事,但是你不行的话,那不好意思,你做不出来。这里用到的求解微积分的面积的时候常用的方法simpson法。
《算法竞赛-训练指南》第二章-2.27_LA 5009 等会再说我的感想,还是要先说说这道题目:题目的意思是:已知有n条抛物线,S(x)=ax^2 + b*x + c,定义f(x) = max(si(x)),求出f(x)的最小值,范围是0-1000。这就比较麻烦了。但是我还是有思路的,因为是求最大最小值,肯定应该是二分,但是怎么二分,我这就不是很清楚了。二分第一个条件不应该是具有顺序么?这样形成的下凹曲线有顺序么?此题,题解上用到的是三分。
《算法竞赛-训练指南》第二章-2.26_UVa 10341 这是一道纯解方程的题目,因为确定了范围,可以直接判断它的单调性。然后根据图像求解。就注意这种单调性求解的题目一般都是要二分的。而因为double类型的一些缺点,并不想我们现实中那样。比如1就是1,在double型里面1可能是0.999999999999。注意这些就行了。另外就是二分的时候R-L尽量的小一些吧,因为越小答案就越精确。这个不一定就是保留到4位,你就1e-5就行,这是不一定的,稍微小
《算法竞赛-训练指南》第二章-数论_高斯消元 矩阵是个神奇的东西,也是线性代数求解当中很重要的一个工具。线性方程组求解的时候,就要用到矩阵。增广矩阵求解的过程还是比较简单的,就是很久就学过的高斯消元,只不过是以前不这样叫,没有系统的方法执行出来说明什么样的步骤才是真正正确的步骤。这个在自己学线性代数的时候其实就应该懂的。实现起来,其实就是一个用语言来实现思想的事。贴出代码:#include #include #incl
《算法竞赛-训练指南》-第二章-2.18_UVa 10294 非常的喜欢这道题目!首先还是老规矩,描述一下这道题目,题目是这个意思:项链和手镯,都是有若干个珠子串成的,不同之处在于项链不能够反转,而手镯可以反转,而给你n个珠子,t中颜色,每种颜色可以是任意多个珠子,问你,可以构造出多少种项链和手镯!这道题目,我私自认为是一道关于置换方面的经典的例题!开始我都没沉下心来去考虑这个题目,觉得不好玩,但是,当我沉下心仔细去考虑这道题目的时候,我真的
《算法竞赛-训练指南》-第二章-2.16_UVa 11427 这道不错不错,给了一种方法来解决,两人博弈中,通过局数来判断输赢的题目,以前得分很多情况来判断。现在可以用dp来求出来所有的条件了。确实不错。首先把dp的概念一定要弄清楚,d[i][j]代表的含义是在i的总局数中,j局获胜,但是最终还是没有达到条件的情况。那么符合条件的情况就是,1减去所有的这种不符合的条件的概率和。解决了这个其余的都很好做。哪怕不优化后面的问题我觉得都能过了这个问题。
《算法竞赛-训练指南》第二章-2.15_UVa 11722 这道题目非常的好,个人非常的喜欢!这道题目的意思是:两个人要坐火车相遇到一个城市,但是坐火车到一个城市的时间是不确定的,第一个人到车站的时间范围是[t1,t2],第二个人到车站的时间范围是[s1,s2],而车在车站停留的时间是w。问你两人在车站相遇的概率是多少?其实我认为这道题目的结果是有些问题的,其实题解是按照[t1,t2]范围内,火车已经离开的,但是按照真实的题意,不应该t2到,t2
《算法竞赛-训练指南》第二章-2.14_UVa 11021 概率的题目,但是做起来也不是很顺手,觉得情况太多了,实在是无从下手。题解给出了思路:令f[i]表示起初有一个鸟,经过i代之后全部死亡。然后就推出了一个公式f[i] = p0 + p1*f(i - 1) + p2*f(i - 1)^2 + p3*f(i - 1)^3......这是怎么得出来的啊???百思不得其解#include #include #include #inclu
《算法竞赛-训练指南》第二章-2.12_LA 5059 真的很喜欢这个专题,就是两个人玩的游戏专题。这里面包含的思想是非常重要的,数学味道,逻辑味道非常的浓厚。经典的代表游戏就是Nim>游戏:游戏的描述是这样的,给你三堆火柴,你每次可以从每堆里面拿出一个,或者一个以上的,当然可以是正堆都拿走。两个人玩,每个人都是玩的最棒的。问你,怎么判断输赢?其实对每堆求一下Nim和就可以了,也就是对所有堆求疑惑,结果为0,先手必输,否则先手必赢!这里用S